Cairo__Surface.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 01 Aug 2019 18:43:54 +0100
changeset 87 d1313f80a9a7
parent 72 3eabcca278cd
child 88 9d51db2ba641
permissions -rw-r--r--
Remove leftover `Makefile`
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/libcairo' }"
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Cairo }"
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
     5
CObject subclass:#Surface
72
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
     6
	instanceVariableNames:'view'
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
     8
	poolDictionaries:'Cairo::SurfaceType Cairo::Format'
12
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
     9
	category:'Cairo-Objects'
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    12
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
!Surface class methodsFor:'instance creation'!
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    15
forView: aView
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    16
    ^ self onView: aView
26
7f07a8c31e6d Fixed flickring of Cairo::ClockView by rendering into an off-screen image.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    17
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    18
    "Created: / 10-07-2008 / 10:15:04 / Jan Vrany <vranyj1@fel.cvut.cz>"
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    19
    "Modified: / 14-02-2016 / 00:01:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    20
!
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    21
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    22
newImageWithFormat:format width:width height:height 
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    23
    ^ CPrimitives 
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    24
        cairo_image_surface_create:format
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    25
        _:width
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    26
        _:height
26
7f07a8c31e6d Fixed flickring of Cairo::ClockView by rendering into an off-screen image.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    27
7f07a8c31e6d Fixed flickring of Cairo::ClockView by rendering into an off-screen image.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    28
    "Created: / 24-12-2014 / 23:43:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
    29
    "Modified: / 28-12-2014 / 22:03:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
26
7f07a8c31e6d Fixed flickring of Cairo::ClockView by rendering into an off-screen image.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    30
!
7f07a8c31e6d Fixed flickring of Cairo::ClockView by rendering into an off-screen image.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    31
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    32
newImageWithFormat:format width:width height:height similarTo: surface
57
2c9a342e1f2a Examples: added utility methods to automatically generate wiki page from examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    33
    OperatingSystem isMSWINDOWSlike ifTrue:[ 
2c9a342e1f2a Examples: added utility methods to automatically generate wiki page from examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    34
        ^ CPrimitives cairo_image_surface_create: format _:width _:height
2c9a342e1f2a Examples: added utility methods to automatically generate wiki page from examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    35
    ] ifFalse:[
2c9a342e1f2a Examples: added utility methods to automatically generate wiki page from examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    36
        ^ CPrimitives cairo_surface_create_similar_image: surface _:format _:width _:height
2c9a342e1f2a Examples: added utility methods to automatically generate wiki page from examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    37
    ]
26
7f07a8c31e6d Fixed flickring of Cairo::ClockView by rendering into an off-screen image.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    38
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    39
    "Created: / 27-02-2016 / 16:00:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
57
2c9a342e1f2a Examples: added utility methods to automatically generate wiki page from examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    40
    "Modified: / 01-03-2016 / 23:37:37 / jv"
26
7f07a8c31e6d Fixed flickring of Cairo::ClockView by rendering into an off-screen image.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    41
!
7f07a8c31e6d Fixed flickring of Cairo::ClockView by rendering into an off-screen image.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    42
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    43
newPDFWithFile:aStringOrFilename width:w height:h 
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    44
    ^ CPrimitives 
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    45
        cairo_pdf_surface_create:aStringOrFilename asFilename asString
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    46
        _:w asDouble
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    47
        _:h asDouble
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    "Created: / 10-07-2008 / 09:35:34 / Jan Vrany <vranyj1@fel.cvut.cz>"
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
    50
    "Modified: / 28-12-2014 / 22:05:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
!
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    53
newPNGWithFile:aStringOrFilename
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    54
    aStringOrFilename asFilename exists ifFalse:[ 
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    55
        self error: 'No such file'.
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    56
    ].
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    57
    ^ CPrimitives cairo_image_surface_create_from_png:aStringOrFilename asFilename asString
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    58
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    59
    "Created: / 28-02-2016 / 07:52:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    60
!
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    61
72
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
    62
newWin32WithDC: hdc
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    63
    ^ CPrimitives cairo_win32_surface_create:hdc
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    64
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    65
    "Created: / 19-02-2016 / 12:07:29 / jv"
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    66
!
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    67
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    68
newXlibWithDisplay:dpy drawable:drawable visual:visual width:width height:height 
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    69
    ^ CPrimitives 
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    70
        cairo_xlib_surface_create:dpy
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    71
        _:drawable
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    72
        _:visual
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    73
        _:width
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    74
        _:height
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    "Created: / 10-07-2008 / 11:06:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
    77
    "Modified: / 28-12-2014 / 22:06:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    78
!
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    79
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    80
onView: aView
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    81
    aView device platformName == #X11 ifTrue:[
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    82
        | surface |
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    83
        surface := self newXlibWithDisplay:aView device displayId
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    84
                                  drawable:aView drawableId address
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    85
                                    visual:aView device queryDefaultVisual
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    86
                                     width:aView width
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    87
                                    height:aView height.  
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    88
        surface setView: aView.
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    89
        ^ surface.
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    90
    ].
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    91
    (aView device platformName = 'WIN32') ifTrue:[
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    92
        aView gcId isNil ifTrue:[ 
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    93
            aView initGC
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    94
        ].
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    95
        ^ self newWin32WithHDC: (aView device hdcForGC: aView gcId)
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    96
    ].
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    97
    self error: 'Unsupported plarform'
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    98
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    99
    "Created: / 13-02-2016 / 23:47:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
   100
    "Modified: / 19-02-2016 / 12:11:20 / jv"
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
! !
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
!Surface class methodsFor:'accessing'!
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
12
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   105
dllPath
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   106
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   107
    OperatingSystem isMSWINDOWSlike ifTrue:[
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   108
        ^ #( 'C:\Windows' 'C:\Windows\System32' "Wild guess, should not harm" )
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   109
    ].
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   110
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   111
    OperatingSystem isUNIXlike ifTrue:[
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   112
        OperatingSystem getSystemType == #linux ifTrue:[
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   113
            | path |
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   114
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   115
            path := #( '/lib' '/usr/lib' '/usr/local/lib' ).
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   116
            (OperatingSystem getSystemInfo at:#machine) = 'x86_64' ifTrue:[
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   117
                "If the machine is 64bit, prepend standard path for 32bit libs.
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   118
                 Leave standard paths at the end, as the system might be completely 
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   119
                 32bit but running on 64bit-capable CPU.
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   120
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   121
                CAVEAT: This is bit dangerous, as on 64bit OS, if ia32 libs are
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   122
                not installed byt 64bit sqlite libs are, then 64bit libs are found
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   123
                and when a function is called, segfault will occur!!
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   124
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   125
                Q: Is there a way how to figure out if the OS itself is 32bit,
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   126
                regardles on CPU?"
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   127
                path := #( '/lib32' '/usr/lib32' '/usr/local/lib32' ) , path.
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   128
            ].
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   129
            ^path
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   130
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   131
        ].
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   132
    ].
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   133
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   134
    self error:'Unsupported operating system'
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   135
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   136
    "
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   137
        SqliteLibrary dllPath
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   138
    "
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   139
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   140
    "Created: / 31-08-2011 / 18:02:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   141
!
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   142
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
libraryName
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   145
    OperatingSystem isUNIXlike ifTrue:[^'libcairo.so.2'].
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   147
    OperatingSystem isMSWINDOWSlike ifTrue:[^'cairo.dll'].
12
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   148
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   149
    self error:'Library name for host OS is not known'
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   150
!
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   151
26
7f07a8c31e6d Fixed flickring of Cairo::ClockView by rendering into an off-screen image.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
   152
sizeof
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   153
    "Returns size of undelaying structure in bytes"
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   155
    ^0
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
! !
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
!Surface methodsFor:'accessing'!
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
63
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   160
cairo
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   161
    ^ GraphicsContext onSurface: self
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   162
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   163
    "Created: / 05-03-2016 / 22:25:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   164
!
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   165
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   166
referenceCount
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   167
    "Return value or reference counter"
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   168
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   169
    ^ CPrimitives cairo_surface_get_reference_count: self
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   170
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   171
    "Created: / 28-12-2014 / 22:09:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   172
!
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   173
43
1006839761af Add error checking
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   174
status
1006839761af Add error checking
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   175
    "Checks whether an error has previously occurred for this object.
1006839761af Add error checking
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   176
     See Cairo::Status pool for possible values."
1006839761af Add error checking
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   177
1006839761af Add error checking
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   178
    ^ CPrimitives cairo_surface_status: self
1006839761af Add error checking
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   179
1006839761af Add error checking
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   180
    "Modified: / 23-02-2016 / 11:28:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1006839761af Add error checking
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   181
!
1006839761af Add error checking
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   182
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
type
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   184
    ^CPrimitives cairo_surface_get_type: self
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
    "Created: / 10-07-2008 / 10:34:36 / Jan Vrany <vranyj1@fel.cvut.cz>"
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   187
    "Modified: / 28-12-2014 / 21:46:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
72
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   188
!
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   189
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   190
view
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   191
    "Return's associated view (if any) or nil"
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   192
    ^ view
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   193
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   194
    "Modified (comment): / 29-03-2016 / 22:53:48 / jv"
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
! !
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   197
!Surface methodsFor:'cairo api'!
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   198
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   199
finish
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   200
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   201
    ^CPrimitives cairo_surface_finish: self
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   202
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   203
    "Created: / 17-06-2012 / 08:49:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   204
    "Modified: / 28-12-2014 / 21:48:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   205
!
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   206
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   207
flush
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   208
    "Do any pending drawing for the surface and also restore any temporary 
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   209
     modifications cairo has made to the surface's state. This function must 
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   210
     be called before switching from drawing on the surface with cairo to 
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   211
     drawing on it directly with native APIs, or accessing its memory outside 
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   212
     of Cairo. If the surface doesn't support direct access, then this function
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   213
     does nothing."
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   214
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   215
    CPrimitives cairo_surface_flush: self
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   216
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   217
    "Created: / 10-07-2008 / 10:32:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   218
    "Modified: / 18-02-2016 / 20:15:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   219
!
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   220
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   221
markDirty
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   222
    "Tells cairo that drawing has been done to surface using means other than cairo, 
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   223
      and that cairo should reread any cached areas. Note that you must call 
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   224
      Cairo::Surface>>#flush before doing such drawing."
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   225
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   226
    CPrimitives cairo_surface_mark_dirty: self.
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   227
    self statusCheck.
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   228
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   229
    "Created: / 24-02-2016 / 17:12:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   230
!
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   231
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   232
markDirtyX: x y: y width: w height: h
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   233
    "Like $markDirty, but drawing has been done only to the specified rectangle, 
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   234
     so that cairo can retain cached contents for other parts of the surface.
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   235
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   236
     Any cached clip set on the surface will be reset by this function, to 
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   237
     make sure that future cairo calls have the clip set that they expect."
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   238
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   239
    CPrimitives cairo_surface_mark_dirty_rectangle: self _: x _:y _:w _:h.
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   240
    self statusCheck.
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   241
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   242
    "Created: / 24-02-2016 / 17:14:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   243
! !
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   244
63
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   245
!Surface methodsFor:'initialization'!
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   246
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   247
initialize
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   248
    super initialize.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   249
    self class == Cairo::Surface ifTrue:[ 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   250
        | type |
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   251
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   252
        type := self type.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   253
        type == CAIRO_SURFACE_TYPE_IMAGE ifTrue:[ 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   254
            self changeClassTo: SurfaceImage.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   255
            ^ self.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   256
        ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   257
        type == CAIRO_SURFACE_TYPE_XLIB ifTrue:[ 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   258
            self changeClassTo: SurfaceXlib.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   259
            ^ self.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   260
        ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   261
        type == CAIRO_SURFACE_TYPE_WIN32 ifTrue:[ 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   262
            self changeClassTo: SurfaceWin32.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   263
            ^ self.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   264
        ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   265
        type == CAIRO_SURFACE_TYPE_PDF ifTrue:[ 
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   266
            self changeClassTo: SurfacePDF.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   267
            ^ self.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   268
        ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   269
    ].
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   270
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   271
    "Created: / 04-03-2016 / 00:45:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   272
    "Modified: / 05-03-2016 / 22:21:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   273
! !
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   274
72
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   275
!Surface methodsFor:'initialization & release'!
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   276
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   277
setView: aView
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   278
    view notNil ifTrue:[
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   279
        self error: 'Trying to set view twice'
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   280
    ].
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   281
    view := aView.
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   282
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   283
    "Created: / 17-06-2012 / 15:04:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   284
    "Modified: / 25-02-2016 / 11:03:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   285
    "Modified: / 29-03-2016 / 22:41:12 / jv"
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   286
! !
3eabcca278cd Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 63
diff changeset
   287
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   288
!Surface methodsFor:'private'!
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   290
destroy
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   291
    "Tell Cairo library to destroy the corresponding C object.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   292
     Remember that object is physically destroyed only if internal
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   293
     refcounter goes to zero. However, after calling destroy,
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   294
     this instance should be treated as invalid."
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   295
36
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   296
    CPrimitives cairo_surface_destroy: self.
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   297
    self setAddress: nil.
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   298
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   299
    "Created: / 28-12-2014 / 22:10:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
36
9b680e54aa94 Take a step back: separate Cairo's GraphicsContext (cairo_t) and Smalltalk/X's graphics context
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   300
    "Modified: / 13-02-2016 / 16:10:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
63
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   301
!
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   302
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   303
reference
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   304
    "Increases the reference count on the receiver by one. This prevents the
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   305
     receiver from being destroyed until a matching call to #destroy is made.
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   306
     
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   307
     This method must be called whenever Cairo documentation says so,
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   308
     check comment on return value for methods returning a Cairo object"
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   309
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   310
    CPrimitives cairo_surface_reference: self
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   311
054f0513ea65 Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 57
diff changeset
   312
    "Modified: / 05-03-2016 / 10:33:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   313
! !
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   314
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   315
!Surface methodsFor:'queries'!
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   316
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   317
isViewSurface
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   318
    "Return true, if this sufrace if for a kind of a View"
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   319
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   320
    ^self isXLibSurface or:[ self isWin32Surface ]
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   321
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   322
    "Created: / 17-06-2012 / 15:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   323
!
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   324
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   325
isWin32Surface
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   326
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   327
    ^self type == CAIRO_SURFACE_TYPE_WIN32
16
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   328
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   329
    "Created: / 17-06-2012 / 15:01:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   330
    "Modified: / 28-12-2014 / 21:46:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   331
!
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   332
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   333
isXLibSurface
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   334
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   335
    ^self type == CAIRO_SURFACE_TYPE_XLIB
16
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   336
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   337
    "Created: / 17-06-2012 / 14:58:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   338
    "Modified: / 28-12-2014 / 21:46:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
! !
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   341
!Surface class methodsFor:'documentation'!
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   342
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   343
version
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   344
    ^'$Id$'
11
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   345
!
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   346
23
38ee47dbd976 Added version_HG to make Mercurial happy
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   347
version_HG
38ee47dbd976 Added version_HG to make Mercurial happy
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   348
    ^ '$Changeset: <not expanded> $'
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   349
! !
26
7f07a8c31e6d Fixed flickring of Cairo::ClockView by rendering into an off-screen image.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
   350