Cairo__Surface.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 16 Feb 2016 07:46:52 +0000
changeset 39 8af34937e1ec
parent 38 9c94e463018a
child 40 28dfc583beb5
permissions -rw-r--r--
More work for using CairoGrahicsContext for rendering views * Added GraphicsMedium>>cairoify to change from device rendering to Cairo rendering. * Handle lineWidth: 0 specially as it actually means lineWidth = 1. * Small cleanup / fixes in text displaying (this would need more work, though)
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
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
     6
	instanceVariableNames:'view drawable'
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
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    32
newImageWithFormatARGB32width:width height:height 
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    33
    ^ self 
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    34
        newImageWithFormat:CAIRO_FORMAT_ARGB32
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    35
        width:width
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    36
        height: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
    37
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
    "Created: / 24-12-2014 / 23:44:43 / 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
    39
    "Modified: / 28-12-2014 / 22:04:43 / 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
    40
!
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
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    42
newPDFWithFile:aStringOrFilename width:w height:h 
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    43
    ^ CPrimitives 
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    44
        cairo_pdf_surface_create:aStringOrFilename asFilename asString
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    45
        _:w asDouble
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    46
        _:h asDouble
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    "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
    49
    "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
    50
!
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
38
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    52
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
    53
    ^ CPrimitives 
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    54
        cairo_xlib_surface_create:dpy
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    55
        _:drawable
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    56
        _:visual
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    57
        _:width
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    58
        _:height
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    "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
    61
    "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
    62
!
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    63
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    64
onView: aView
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    65
    aView device platformName == #X11 ifTrue:[
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    66
        | surface |
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    67
        surface := self newXlibWithDisplay:aView device displayId
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    68
                                  drawable:aView drawableId address
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    69
                                    visual:aView device queryDefaultVisual
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    70
                                     width:aView width
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    71
                                    height:aView height.  
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    72
        surface setView: aView.
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    73
        ^ surface.
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    74
    ].
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    75
    self error: 'Unsupported plarform'
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    76
9c94e463018a Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    77
    "Created: / 13-02-2016 / 23:47:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
! !
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
!Surface class methodsFor:'accessing'!
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
12
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    82
dllPath
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    83
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    84
    OperatingSystem isMSWINDOWSlike ifTrue:[
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    85
        ^ #( 'C:\Windows' 'C:\Windows\System32' "Wild guess, should not harm" )
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    86
    ].
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    87
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    88
    OperatingSystem isUNIXlike ifTrue:[
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    89
        OperatingSystem getSystemType == #linux ifTrue:[
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    90
            | path |
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    91
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    92
            path := #( '/lib' '/usr/lib' '/usr/local/lib' ).
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    93
            (OperatingSystem getSystemInfo at:#machine) = 'x86_64' ifTrue:[
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    94
                "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
    95
                 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
    96
                 32bit but running on 64bit-capable CPU.
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    97
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    98
                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
    99
                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
   100
                and when a function is called, segfault will occur!!
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   101
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   102
                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
   103
                regardles on CPU?"
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   104
                path := #( '/lib32' '/usr/lib32' '/usr/local/lib32' ) , path.
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   105
            ].
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   106
            ^path
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   107
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   108
        ].
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
    self error:'Unsupported operating system'
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   112
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   113
    "
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   114
        SqliteLibrary dllPath
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   115
    "
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   116
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   117
    "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
   118
!
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   119
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
libraryName
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   122
    OperatingSystem isUNIXlike ifTrue:[^'libcairo.so.2'].
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   124
    OperatingSystem isMSWINDOWSlike ifTrue:[^'cairo.dll'].
12
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   125
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   126
    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
   127
!
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
   128
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
   129
sizeof
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   130
    "Returns size of undelaying structure in bytes"
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   132
    ^0
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
! !
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
!Surface methodsFor:'accessing'!
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   137
referenceCount
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   138
    "Return value or reference counter"
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   139
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   140
    ^ 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
   141
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   142
    "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
   143
!
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   144
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
type
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   146
    ^CPrimitives cairo_surface_get_type: self
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
    "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
   149
    "Modified: / 28-12-2014 / 21:46:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
! !
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
!Surface methodsFor:'initialization & release'!
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   154
destroy
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   155
    "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
   156
     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
   157
     refcounter goes to zero. However, after calling destroy,
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   158
     this instance should be treated as invalid."
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   159
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
   160
    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
   161
    self setAddress: nil.
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   162
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   163
    "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
   164
    "Modified: / 13-02-2016 / 16:10:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   165
!
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   166
15
c1db2c8aa2ed - stx_goodies_libcairo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   167
finish
c1db2c8aa2ed - stx_goodies_libcairo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   168
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   169
    ^CPrimitives cairo_surface_finish: self
15
c1db2c8aa2ed - stx_goodies_libcairo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   170
c1db2c8aa2ed - stx_goodies_libcairo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   171
    "Created: / 17-06-2012 / 08:49: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
   172
    "Modified: / 28-12-2014 / 21:48:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15
c1db2c8aa2ed - stx_goodies_libcairo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   173
!
c1db2c8aa2ed - stx_goodies_libcairo
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   174
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
flush
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   177
    ^CPrimitives cairo_surface_flush: self
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
    "Created: / 10-07-2008 / 10:32:50 / 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
   180
    "Modified: / 28-12-2014 / 21:48:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   181
! !
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   182
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   183
!Surface methodsFor:'queries'!
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   184
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   185
isViewSurface
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   186
    "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
   187
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   188
    ^self isXLibSurface or:[ self isWin32Surface ]
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   189
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   190
    "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
   191
!
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   192
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   193
isWin32Surface
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   194
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   195
    ^self type == CAIRO_SURFACE_TYPE_WIN32
16
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   196
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   197
    "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
   198
    "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
   199
!
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   200
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   201
isXLibSurface
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   202
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 28
diff changeset
   203
    ^self type == CAIRO_SURFACE_TYPE_XLIB
16
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   204
a810555a635c - Cairo::Surface
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   205
    "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
   206
    "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
   207
! !
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   209
!Surface class methodsFor:'documentation'!
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   210
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   211
version
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   212
    ^'$Id$'
11
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   213
!
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   214
23
38ee47dbd976 Added version_HG to make Mercurial happy
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   215
version_HG
38ee47dbd976 Added version_HG to make Mercurial happy
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   216
    ^ '$Changeset: <not expanded> $'
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   217
! !
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
   218