CairoGraphicsContext.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 28 Feb 2016 16:57:24 +0000
changeset 54 209a2b0b721a
parent 51 5293f2b851ab
child 57 2c9a342e1f2a
permissions -rw-r--r--
CairoGraphicsContext: adjustments to displayRectangle / fillRectangle... ...to be in sync with DeviceGraphicsContext. However, this works properly only when scale factor is 1.0. DeviceGraphicsContext is broken, not CairoGraphicsContext!
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
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: 35
diff changeset
     3
"{ NameSpace: Smalltalk }"
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
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: 35
diff changeset
     5
DeviceGraphicsContext subclass:#CairoGraphicsContext
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
     6
	instanceVariableNames:'cr'
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
     7
	classVariableNames:'Lobby'
46
e624554ca9a3 CairoGraphicsContext: fixed drawing/filling of lines and rectangles to match DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
     8
	poolDictionaries:'Cairo::FontSlant Cairo::FontWeight Cairo::Format Cairo::Status
e624554ca9a3 CairoGraphicsContext: fixed drawing/filling of lines and rectangles to match DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
     9
		Cairo::Antialias'
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: 35
diff changeset
    10
	category:'Cairo-Compatibility'
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
    13
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: 35
diff changeset
    14
!CairoGraphicsContext class methodsFor:'initialization'!
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
    15
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
    16
initialize
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
    17
    "Invoked at system start or when the class is dynamically loaded."
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
    18
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
    19
    "/ please change as required (and remove this comment)
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
    20
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
    21
    Lobby := Registry new.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
    22
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    23
    "Modified: / 18-02-2016 / 22:51:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
    24
! !
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
    25
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    26
!CairoGraphicsContext class methodsFor:'instance creation'!
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    27
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    28
onDeviceGraphicsContext: dGC
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    29
    | cGC |
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    30
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
    31
    cGC := self basicNew.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
    32
    1 to: DeviceGraphicsContext instSize do:[:i |
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    33
        cGC instVarAt: i put: (dGC instVarAt: i).
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    34
    ].
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    35
    dGC gcId notNil ifTrue:[ 
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    36
        cGC initGC.
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    37
    ].
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    38
    ^ cGC
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    40
    "Created: / 15-02-2016 / 21:20:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    41
    "Modified: / 18-02-2016 / 22:50:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    42
! !
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    43
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: 35
diff changeset
    44
!CairoGraphicsContext class methodsFor:'accessing'!
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
12
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    46
dllPath
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    47
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    48
    OperatingSystem isMSWINDOWSlike ifTrue:[
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    49
        ^ #( 'C:\Windows' 'C:\Windows\System32' "Wild guess, should not harm" )
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    50
    ].
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    51
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    52
    OperatingSystem isUNIXlike ifTrue:[
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    53
        OperatingSystem getSystemType == #linux ifTrue:[
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    54
            | path |
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    55
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    56
            path := #( '/lib' '/usr/lib' '/usr/local/lib' ).
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    57
            (OperatingSystem getSystemInfo at:#machine) = 'x86_64' ifTrue:[
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    58
                "If the machine is 64bit, prepend standard path for 32bit libs.
20
18a3e6b5f310 Added const modifier to FFI specs (required by recent STX)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
    59
                 Leave standard paths at the end, as the system might be completely
12
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    60
                 32bit but running on 64bit-capable CPU.
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    61
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    62
                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
    63
                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
    64
                and when a function is called, segfault will occur!!
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    65
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    66
                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
    67
                regardles on CPU?"
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    68
                path := #( '/lib32' '/usr/lib32' '/usr/local/lib32' ) , path.
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    69
            ].
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    70
            ^path
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    71
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    72
        ].
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    73
    ].
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    74
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    75
    self error:'Unsupported operating system'
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    76
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    77
    "
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    78
        SqliteLibrary dllPath
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    79
    "
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    80
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    81
    "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
    82
!
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    83
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
libraryName
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
    86
    OperatingSystem isUNIXlike ifTrue:[^'libcairo.so.2'].
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
    88
    OperatingSystem isMSWINDOWSlike ifTrue:[^'cairo.dll'].
12
e5f0c18af8a9 - Cairo::Format
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
    89
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
    90
    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
    91
!
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    92
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
    93
sizeof
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
    94
    "Returns size of undelaying structure in bytes"
6
c1f387b40e3a regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5
diff changeset
    95
29
6ba06265e543 Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
    96
    ^0
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
! !
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
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: 35
diff changeset
    99
!CairoGraphicsContext class methodsFor:'examples'!
10
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   100
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   101
rectangleOnTranscript
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   102
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   103
    "
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   104
        Cairo::GraphicsContext rectangleOnTranscript
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   105
    "
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   106
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   107
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   108
    | gc |
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   109
    gc := Transcript cairo.
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   110
    gc paint: Color black.
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   111
    gc moveToX: 30 y: 50.
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   112
    gc paint: (Color red alpha: 0.5).
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   113
    gc rectangleX: 10 y: 15 width: 150 height: 60.
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   114
    gc fill.
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   115
    gc paint: (Color red alpha: 0.75).
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   116
    gc rectangleX: 10 y: 15 width: 150 height: 60.
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   117
    gc stroke.
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   118
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   119
    "Created: / 23-04-2009 / 17:33:57 / Jan Vrany <vranyj1@fel.cvut.cz>"
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   120
! !
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   121
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: 35
diff changeset
   122
!CairoGraphicsContext methodsFor:'accessing'!
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   123
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   124
basicFont:aFont
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   125
    (aFont ~~ font) ifTrue:[     
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   126
        super basicFont: aFont.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   127
        font notNil ifTrue:[ 
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   128
            font := CairoScaledFont fromFontDescription: font onDevice: device.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   129
            cr notNil ifTrue:[ 
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   130
                cr font: font scaledFont.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   131
            ].
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   132
        ].
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   133
    ].
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   134
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   135
    "Created: / 16-02-2016 / 15:37:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
44
ffe4882eb977 Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   136
    "Modified: / 23-02-2016 / 14:46:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
   137
    "Modified: / 21-02-2016 / 15:38:52 / jv"
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   138
!
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   139
48
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   140
cairoSurface
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   141
    gcId isNil ifTrue:[ 
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   142
        self initGC.
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   143
    ].
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   144
    cr isNil ifTrue:[ 
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   145
        ^ super cairoSurface
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   146
    ].
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   147
    ^ cr surface
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   148
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   149
    "Created: / 25-02-2016 / 10:46:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   150
!
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   151
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   152
clippingBounds:aRectangleOrNil
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   153
    "set the clipping rectangle for drawing (in logical coordinates);
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   154
     a nil argument turn off clipping (i.e. whole view is drawable)"    
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   155
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   156
    #todo.
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   157
    ^ super clippingBounds:aRectangleOrNil
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   158
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   159
    "Created: / 15-02-2016 / 21:38:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   160
    "Modified: / 27-02-2016 / 15:20:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   161
!
34
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   162
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   163
function:aFunctionSymbol
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   164
    "set the drawing function"
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   165
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   166
    #todo.
48
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   167
    ^ super function:aFunctionSymbol
2a66aee0a9b3 Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   168
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   169
    "Modified: / 27-02-2016 / 15:21:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   170
!
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   171
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   172
lineWidth: w
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: 35
diff changeset
   173
    super lineWidth: w. 
44
ffe4882eb977 Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   174
    cr notNil ifTrue:[
ffe4882eb977 Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   175
        cr lineWidth: (w == 0 ifTrue:[ 1 ] ifFalse:[ w ]).
ffe4882eb977 Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   176
    ].
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   177
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   178
    "Created: / 17-06-2012 / 21:55:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
44
ffe4882eb977 Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   179
    "Modified: / 23-02-2016 / 11:29:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   180
!
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   181
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   182
mask:aForm
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   183
    "set the drawing mask"
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   184
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   185
    #todo.  
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   186
    super mask: aForm.
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   187
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   188
    "Modified: / 27-02-2016 / 15:20:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   189
!
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   190
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   191
paint: aColor
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: 35
diff changeset
   192
    super paint: aColor.
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   193
    cr notNil ifTrue:[
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   194
        cr source: paint.
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   195
    ].
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
    "Created: / 10-07-2008 / 11:18:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
10
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   198
    "Modified: / 23-04-2009 / 17:31:33 / Jan Vrany <vranyj1@fel.cvut.cz>"
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   199
    "Modified: / 18-02-2016 / 22:56:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
! !
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
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: 35
diff changeset
   202
!CairoGraphicsContext methodsFor:'accessing-transformation'!
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   203
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   204
transformation:aTransformation 
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   205
    "set the transformation"
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   206
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   207
    super transformation: aTransformation.
44
ffe4882eb977 Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   208
    cr notNil ifTrue:[
ffe4882eb977 Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   209
        cr matrixReset.
ffe4882eb977 Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   210
        transformation notNil ifTrue:[    
ffe4882eb977 Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   211
            cr
ffe4882eb977 Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   212
                scale: transformation scale;
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   213
                translate: transformation translation.
44
ffe4882eb977 Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   214
        ]
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   215
    ]
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   216
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   217
    "Created: / 01-01-2015 / 12:07:07 / 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: 46
diff changeset
   218
    "Modified: / 24-02-2016 / 17:28:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   219
! !
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   220
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: 35
diff changeset
   221
!CairoGraphicsContext methodsFor:'basic drawing'!
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   222
32
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   223
displayArcX:x y:y width:w height:h from:start angle:angle
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   224
    | angle1 angle2 |
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   225
42
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   226
    gcId isNil ifTrue:[ 
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   227
        self initGC.
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   228
    ]. 
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: 35
diff changeset
   229
    cr save.  
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: 35
diff changeset
   230
    [
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: 35
diff changeset
   231
        w ~~ h ifTrue:[
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: 35
diff changeset
   232
            self notYetImplemented
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: 35
diff changeset
   233
        ].
32
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   234
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: 35
diff changeset
   235
        angle1 := (360 - start) .
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: 35
diff changeset
   236
        angle2 := (360 - (start + angle)) \\ 360.
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   237
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: 35
diff changeset
   238
        (angle2 < angle1) ifTrue:[
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: 35
diff changeset
   239
            cr arcNegativeX: (x + (w / 2)) y: (y + (h / 2)) radius: w / 2 from: angle1 * (Float pi / 180) to: angle2 * (Float pi / 180).
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: 35
diff changeset
   240
        ] ifFalse:[ 
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: 35
diff changeset
   241
            cr arcNegativeX: (x + (w / 2)) y: (y + (h / 2)) radius: w / 2 from: angle2 * (Float pi / 180) to: angle1 * (Float pi / 180).
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: 35
diff changeset
   242
        ].
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: 35
diff changeset
   243
        cr stroke.
32
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   244
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: 35
diff changeset
   245
        w ~~ h ifTrue:[
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: 35
diff changeset
   246
            self notYetImplemented
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: 35
diff changeset
   247
        ].
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: 35
diff changeset
   248
    ] ensure:[ 
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: 35
diff changeset
   249
        cr restore.
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: 35
diff changeset
   250
    ]
32
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   251
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: 35
diff changeset
   252
    "Modified: / 13-02-2016 / 20:05:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
   253
    "Modified: / 21-02-2016 / 15:34:08 / jv"
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   254
!
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   255
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   256
displayLineFromX:x0 y:y0 toX:x1 y:y1
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   257
    "draw a line from x0/y0 to x1/y1"
42
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   258
    gcId isNil ifTrue:[ 
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   259
        self initGC.
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   260
    ].
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: 35
diff changeset
   261
    cr moveToX: x0 y: y0.
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: 35
diff changeset
   262
    cr lineToX: x1 y: y1.
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: 35
diff changeset
   263
    cr stroke.
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   264
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: 35
diff changeset
   265
    "Modified: / 13-02-2016 / 20:05:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
   266
    "Modified: / 21-02-2016 / 15:24:52 / jv"
17
5f943c05c028 - Cairo::GraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   267
!
5f943c05c028 - Cairo::GraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   268
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   269
displayPolygon:points
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   270
    "draw a polygon
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   271
     - this could be recoded to draw using displayLine"
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   272
42
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   273
    gcId isNil ifTrue:[ 
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   274
        self initGC.
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   275
    ]. 
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: 35
diff changeset
   276
    cr moveToX: points first x asFloat y: points first y asFloat.
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   277
    2 to: points size do:[:i |  
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: 35
diff changeset
   278
        cr lineToX: (points at: i) x asFloat  y: (points at: i) y asFloat
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   279
    ].
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: 35
diff changeset
   280
    cr closePath.
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: 35
diff changeset
   281
    cr stroke.
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   282
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: 35
diff changeset
   283
    "Modified: / 13-02-2016 / 20:04:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
   284
    "Modified: / 21-02-2016 / 15:34:19 / jv"
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   285
!
17
5f943c05c028 - Cairo::GraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   286
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   287
displayRectangleX:x y:y width:w height:h
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   288
    "draw a rectangle
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   289
     - this could be recoded to draw using displayLine"
42
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   290
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   291
    gcId isNil ifTrue:[ 
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   292
        self initGC.
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   293
    ]. 
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   294
    (w > 0 and:[h > 0]) ifTrue:[
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   295
        cr rectangleX: x y: y width: w height: h.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   296
        cr stroke.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   297
    ]
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   298
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
   299
    "Modified: / 21-02-2016 / 15:34:34 / jv"
54
209a2b0b721a CairoGraphicsContext: adjustments to displayRectangle / fillRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   300
    "Modified: / 28-02-2016 / 16:41:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   301
!
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   302
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   303
displayString:string from:index1 to:index2 x:x y:y opaque:opaqueArg maxWidth:maxWidth
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   304
    "draw a substring at the coordinate x/y - draw foreground pixels in
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   305
     paint-color and (if opaque is true), background pixels in bgPaint-color.
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   306
     If the transformation involves scaling, the font's point-size is scaled as appropriate.
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   307
     Assuming that device can only draw in device colors, we have to handle
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   308
     the case where paint and/or bgPaint are dithered colors.
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   309
     maxWidth is the maximum width of the string in pixels or nil if unknown."    
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   310
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   311
    | opaque |
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   312
    "
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   313
     if backgroundPaint color is nil, we assume
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   314
     this is a non-opaque draw
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   315
    "
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   316
    opaque := opaqueArg ? false.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   317
    bgPaint isNil ifTrue:[
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   318
        opaque := false.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   319
    ].
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   320
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   321
    gcId isNil ifTrue:[
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   322
        self initGC
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   323
    ]. 
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   324
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   325
    (string isString not or:[string isText]) ifTrue:[
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   326
        "
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   327
         hook for non-strings (i.e. attributed text)
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   328
         that 'thing' should know how to display itself ...
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   329
        "
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   330
        string displayOn:self x:x y:y from:index1 to:index2 opaque:opaque.
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   331
        ^ self
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   332
    ].   
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   333
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   334
    font class == CairoScaledFont ifTrue:[ 
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   335
        font displayString:string from:index1 to:index2 x:x y:y cr:cr fg: paint bg: bgPaint opaque:opaque
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   336
    ] ifFalse:[ 
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   337
        Logger warning:'Drawing text using non-Cairo font (%1 )on CairoGraphicsContext' with: font class name.
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   338
        cr surface flush.
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   339
        super displayString:string from:index1 to:index2 x:x y:y opaque:opaqueArg maxWidth:maxWidth.
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   340
        cr surface markDirty.
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   341
    ].
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   342
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   343
    "Created: / 16-02-2016 / 10:51:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
   344
    "Modified: / 19-02-2016 / 21:04:49 / jv"
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   345
    "Modified: / 24-02-2016 / 17:14:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
5f943c05c028 - Cairo::GraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   346
! !
5f943c05c028 - Cairo::GraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   347
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: 35
diff changeset
   348
!CairoGraphicsContext methodsFor:'basic filling'!
10
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   349
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   350
fillArcX:x y:y width:w height:h from:start angle:angle
32
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   351
    | angle1 angle2 |
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   352
42
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   353
    gcId isNil ifTrue:[ 
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   354
        self initGC.
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   355
    ].
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: 35
diff changeset
   356
    cr save. 
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: 35
diff changeset
   357
    [
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: 35
diff changeset
   358
        w ~~ h ifTrue:[
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: 35
diff changeset
   359
            self notYetImplemented
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: 35
diff changeset
   360
        ].
32
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   361
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   362
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: 35
diff changeset
   363
        angle1 := (360 - start) .
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: 35
diff changeset
   364
        angle2 := (360 - (start + angle)) \\ 360.
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: 35
diff changeset
   365
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: 35
diff changeset
   366
        cr moveToX: (x + (w / 2)) y: (y + (h / 2)).
32
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   367
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: 35
diff changeset
   368
        (angle2 < angle1) ifTrue:[
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: 35
diff changeset
   369
            cr arcNegativeX: (x + (w / 2)) y: (y + (h / 2)) radius: w / 2 from: angle1 * (Float pi / 180) to: angle2 * (Float pi / 180).
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: 35
diff changeset
   370
        ] ifFalse:[ 
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: 35
diff changeset
   371
            cr arcNegativeX: (x + (w / 2)) y: (y + (h / 2)) radius: w / 2 from: angle2 * (Float pi / 180) to: angle1 * (Float pi / 180).
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: 35
diff changeset
   372
        ].
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: 35
diff changeset
   373
        cr closePath.
10
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   374
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: 35
diff changeset
   375
        cr strokeAndPreserve.
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: 35
diff changeset
   376
        cr fill.
32
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   377
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: 35
diff changeset
   378
        w ~~ h ifTrue:[
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: 35
diff changeset
   379
            self notYetImplemented        
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: 35
diff changeset
   380
        ].
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: 35
diff changeset
   381
    ] ensure:[ 
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: 35
diff changeset
   382
        cr restore.
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: 35
diff changeset
   383
    ]
32
fb983be8d2c0 To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 31
diff changeset
   384
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: 35
diff changeset
   385
    "Modified: / 13-02-2016 / 20:03:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
   386
    "Modified: / 21-02-2016 / 15:34:47 / jv"
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   387
!
10
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   388
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   389
fillPolygon:points
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   390
    "fill a polygon with current paint color"
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   391
42
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   392
    gcId isNil ifTrue:[ 
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   393
        self initGC.
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   394
    ].
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: 35
diff changeset
   395
    cr moveToX: points first x asFloat y: points first y asFloat.
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   396
    2 to: points size do:[:i |  
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: 35
diff changeset
   397
        cr lineToX: (points at: i) x asFloat  y: (points at: i) y asFloat
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   398
    ].
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: 35
diff changeset
   399
    cr closePath.
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: 35
diff changeset
   400
    cr strokeAndPreserve.
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: 35
diff changeset
   401
    cr fill.
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   402
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: 35
diff changeset
   403
    "Modified: / 13-02-2016 / 20:01:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
   404
    "Modified: / 21-02-2016 / 15:34:52 / jv"
10
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   405
!
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   406
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   407
fillRectangleX:x y:y width:w height:h
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   408
    "fill a rectangle with current paint color"
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   409
42
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   410
    gcId isNil ifTrue:[ 
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   411
        self initGC.
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   412
    ].
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   413
    (w > 0 and:[h > 0]) ifTrue:[
54
209a2b0b721a CairoGraphicsContext: adjustments to displayRectangle / fillRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   414
        | savedWidth |
209a2b0b721a CairoGraphicsContext: adjustments to displayRectangle / fillRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   415
209a2b0b721a CairoGraphicsContext: adjustments to displayRectangle / fillRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   416
        savedWidth := cr lineWidth.
209a2b0b721a CairoGraphicsContext: adjustments to displayRectangle / fillRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   417
        cr lineWidth: 1.  
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   418
        cr rectangleX: x y: y width: w height: h. 
46
e624554ca9a3 CairoGraphicsContext: fixed drawing/filling of lines and rectangles to match DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   419
        cr strokeAndPreserve.
54
209a2b0b721a CairoGraphicsContext: adjustments to displayRectangle / fillRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   420
        cr lineWidth: savedWidth.  
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   421
        cr fill.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   422
    ].
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   423
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   424
"/    cr save.
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   425
"/    cr rectangleX: x y: y width: w height: h. 
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   426
"/    cr sourceR: 1 G: 0 B: 0.
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   427
"/    cr lineWidth: 1.  
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   428
"/    cr stroke.
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   429
"/    cr restore.
10
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   430
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
   431
    "Modified: / 21-02-2016 / 15:34:56 / jv"
54
209a2b0b721a CairoGraphicsContext: adjustments to displayRectangle / fillRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   432
    "Modified: / 28-02-2016 / 16:52:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   433
! !
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   434
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   435
!CairoGraphicsContext methodsFor:'bit blitting'!
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   436
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   437
copyBitsFrom:aByteArray bitsPerPixel:bpp depth:depth padding:pad width:srcW height:srcH x:srcX y:srcY toX:dstX y:dstY
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   438
    "copy bits from a smalltalk byteArray.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   439
     The bits found there are supposed to be in the devices native format (i.e.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   440
     translated to allocated color indices on pseudoColor devices and padded as required.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   441
     The byteOrder is MSB and will be converted as appropriate by the underlying devices
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   442
     method to whatever the device needs."
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   443
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   444
    cr notNil ifTrue:[ 
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   445
        cr surface flush
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   446
    ].
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   447
    super copyBitsFrom:aByteArray bitsPerPixel:bpp depth:depth padding:pad width:srcW height:srcH x:srcX y:srcY toX:dstX y:dstY.
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   448
    cr notNil ifTrue:[ 
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   449
        cr surface markDirty
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   450
    ].
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   451
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   452
    "Created: / 18-02-2016 / 20:16:24 / 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: 46
diff changeset
   453
    "Modified: / 24-02-2016 / 18:19:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   454
!
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   455
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   456
copyFrom:aDrawable x:srcX y:srcY toX:dstX y:dstY width:w height:h async:async
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   457
    "copy from aDrawable into the receiver;
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   458
     the source may be the receiver as well - in this case its a scroll.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   459
     All coordinates are in device coordinates.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   460
     If the receiver is a view AND async is true, the call returns immediately
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   461
     - otherwise, it returns when the scroll operation is finished.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   462
     (not all devices care for this).
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   463
     If the receiver is a pixmap, the call always returns immediately."
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   464
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   465
    cr notNil ifTrue:[ 
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   466
        cr surface flush
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   467
    ].
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   468
    super copyFrom:aDrawable x:srcX y:srcY toX:dstX y:dstY width:w height:h async:async.
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   469
    cr notNil ifTrue:[ 
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   470
        cr surface markDirty
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   471
    ].
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   472
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   473
    "Created: / 18-02-2016 / 20:17:26 / 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: 46
diff changeset
   474
    "Modified: / 24-02-2016 / 18:19:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   475
!
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   476
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   477
copyPlaneFrom:aDrawable x:srcX y:srcY toX:dstX y:dstY width:w height:h
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   478
    "copy one plane from aDrawable into the receiver. 0's are drawn in
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   479
     background, while 1's are drawn with foreground color.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   480
     The depth of aDrawable must (should) be 1.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   481
     The drawable must have been allocated on the same device.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   482
     All coordinates are in device coordinates."
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   483
42
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   484
    cr notNil ifTrue:[ 
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   485
        cr surface flush
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   486
    ].
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   487
    super copyPlaneFrom:aDrawable x:srcX y:srcY toX:dstX y:dstY width:w height:h.
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   488
    cr notNil ifTrue:[ 
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   489
        cr surface markDirty
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   490
    ].
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   491
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   492
    "Created: / 18-02-2016 / 20:17:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
   493
    "Modified (format): / 21-02-2016 / 15:35:11 / jv"
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   494
    "Modified: / 24-02-2016 / 18:19:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   495
! !
dd5fece7c8d2 Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   496
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: 35
diff changeset
   497
!CairoGraphicsContext methodsFor:'drawing'!
17
5f943c05c028 - Cairo::GraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   498
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   499
displayForm:aFormOrImage x:x y:y
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   500
    "draw a form (or image) at x/y; 
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   501
     if the form has depth 1, 1's in the form are
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   502
     drawn in current paint color, 0's are ignored.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   503
     If the form has depth ~~ 1, the current fg color setting is ignored."
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   505
    | image width height imageSurface |
39
8af34937e1ec More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   506
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   507
    image := aFormOrImage asImage.
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   508
    (image mask isNil or:[ image mask depth == 1 ]) ifTrue:[ 
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   509
        cr notNil ifTrue:[ 
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   510
            cr surface flush.
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   511
        ].
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   512
        super displayForm:aFormOrImage x:x y:y.
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   513
        cr notNil ifTrue:[ 
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   514
            cr surface markDirty.
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   515
        ].
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   516
        ^ self.
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   517
    ].
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   518
    width := image width.
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   519
    height := image height.
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   520
    imageSurface := Cairo::Surface newImageWithFormat: CAIRO_FORMAT_ARGB32  width: width height: height similarTo: cr surface.
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   521
    [
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   522
        image bitsARGB32Into: imageSurface data startingAt: 1 stride: imageSurface stride.
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   523
        imageSurface markDirty.
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   524
        gcId isNil ifTrue:[ 
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   525
            self initGC.
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   526
        ].
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   527
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   528
        cr sourceSurface: imageSurface x: x y: y.
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   529
        cr paint.
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   530
    ] ensure:[ 
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   531
        imageSurface release.
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   532
    ].
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   533
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   534
    "Created: / 31-12-2014 / 12:08:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
51
5293f2b851ab CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
   535
    "Modified: / 27-02-2016 / 19:16:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   536
!
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   537
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   538
displayLineFrom:p0 to:p1
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   539
    "draw a line (with current paint-color); apply transformation if nonNil"
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   540
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   541
    ^ self displayLineFromX: p0 x y: p0 y toX: p1 x y: p1 y
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   542
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   543
    "Created: / 18-02-2016 / 20:27:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   544
!
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   545
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   546
displayLineFromX:xStart y:yStart toX:xEnd y:yEnd brush:aForm
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   547
    "draw a line using a brush.
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   548
     Here, a slow fallback is used, drawing into a 
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   549
     temporary bitmap first, which is then displayed"
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   550
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   551
    cr notNil ifTrue:[ 
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   552
        cr surface flush
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   553
    ].
47
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   554
    super displayLineFromX:xStart y:yStart toX:xEnd y:yEnd brush:aForm.
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   555
    cr notNil ifTrue:[ 
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   556
        cr surface markDirty
061f23d91383 CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   557
    ].
40
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   558
28dfc583beb5 #displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   559
    "Created: / 18-02-2016 / 20:28:58 / 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: 46
diff changeset
   560
    "Modified: / 24-02-2016 / 18:19:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   561
!
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   562
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   563
displayRoundRectangleX:x y:y width:w height:h wCorner:wCorn hCorner:hCorn
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   564
    | r pi |
42
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   565
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   566
    gcId isNil ifTrue:[ 
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   567
        self initGC.
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   568
    ].
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   569
    wCorn ~~ hCorn ifTrue:[ 
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   570
        self notYetImplemented.
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   571
    ].
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   572
    r := wCorn / 2.
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   573
    pi := Float pi.
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   574
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   575
    "/ top-left arc
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: 35
diff changeset
   576
    cr arcX: x + r     y: y + r     radius: r from:         pi to: (3/2) * pi.
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   577
    "/ top-right atc
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: 35
diff changeset
   578
    cr arcX: x + w - r y: y + r     radius: r from: (3/2) * pi to: 0.0.
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   579
    "/ bottom-right atc
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: 35
diff changeset
   580
    cr arcX: x + w - r y: y + h - r radius: r from: 0.0        to: (1/2) * pi.
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   581
    "/ bottom-left atc
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: 35
diff changeset
   582
    cr arcX: x + r     y: y + h - r radius: r from: (1/2) * pi to:         pi.
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: 35
diff changeset
   583
    cr closePath.
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: 35
diff changeset
   584
    cr stroke.
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   585
    
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   586
    "
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   587
     |v|
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   588
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   589
     (v := View new) extent:200@200; openAndWait.
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   590
     v cairo 
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   591
            lineWidth: 5;
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   592
            displayRoundRectangleX:10 y:10 width:100 height:100 wCorner:20 hCorner:20;
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   593
            release
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   594
    "
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   595
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   596
    "Created: / 07-01-2015 / 20:41: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: 35
diff changeset
   597
    "Modified: / 13-02-2016 / 20:00:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
   598
    "Modified: / 21-02-2016 / 15:35:35 / jv"
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   599
! !
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   600
49
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   601
!CairoGraphicsContext methodsFor:'drawing in device coordinates'!
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   602
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   603
displayDeviceForm:aForm x:x y:y
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   604
    "draw a form or image non opaque (i.e. only foreground color is drawn);
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   605
     If its a 1-plane bitmap, 1-bits are drawn in the
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   606
     current paint-color, leaving pixels with 0-bits unchanged
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   607
     (i.e. only 1-bits are drawn from the form).
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   608
     If its a deep form (i.e. a pixmap) the current paint
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   609
     settings are ignored and the form is drawn as-is;
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   610
     however, the mask is applied if present.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   611
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   612
     The form should must have been allocated on the same device,
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   613
     otherwise its converted here, which slows down the draw.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   614
     No transformation or scaling is done.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   615
     Care must be taken, that the paint color is correctly allocated
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   616
     (by sending #on: to the color) before doing so.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   617
     Using functions other than #copy only makes sense if you are
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   618
     certain, that the colors are real colors (actually, only for
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   619
     noColor or allColor)."
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   620
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   621
    cr notNil ifTrue:[ 
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   622
        cr surface flush.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   623
    ].
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   624
    super displayDeviceForm:aForm x:x y:y.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   625
    cr notNil ifTrue:[ 
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   626
        cr surface markDirty.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   627
    ].
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   628
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   629
    "Created: / 26-02-2016 / 10:47:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   630
!
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   631
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   632
displayDeviceLineFromX:x0 y:y0 toX:x1 y:y1
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   633
    "draw a line (with current paint-color) in device coordinate space.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   634
     This ignores any transformations. The coordinates must be integers."
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   635
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   636
    self deviceCoordinatesDo:[ 
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   637
        self displayLineFromX:x0 y:y0 toX:x1 y:y1
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   638
    ].
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   639
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   640
    "Created: / 26-02-2016 / 10:32:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   641
!
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   642
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   643
displayDeviceOpaqueForm:aForm x:x y:y
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   644
    "draw a form or image opaque (i.e. both fg and bg is drawn);
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   645
     If its a 1-plane bitmap, 1-bits are drawn in the
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   646
     current paint-color and 0-bits in the bgPaint color.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   647
     If its a deep form (i.e. a pixmap) the current paint/bgPaint
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   648
     settings are ignored and the form drawn as-is.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   649
     Any mask is ignored.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   650
     In the 1-plane case, special care must be taken if paint and/or bgPaint
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   651
     dithered colors or patterns, since are that the colors are correctly allocated (by sending #on:
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   652
     to the colors) before doing so.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   653
     The form should have been allocated on the same device; otherwise,
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   654
     its converted here, which slows down the draw.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   655
     Drawing is in device coordinates; no scaling is done."
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   656
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   657
    cr notNil ifTrue:[ 
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   658
        cr surface flush.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   659
    ].
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   660
    super displayDeviceOpaqueForm:aForm x:x y:y.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   661
    cr notNil ifTrue:[ 
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   662
        cr surface markDirty.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   663
    ].
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   664
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   665
    "Created: / 26-02-2016 / 10:47:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   666
!
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   667
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   668
displayDeviceOpaqueString:aString from:index1 to:index2 in:fontToUse x:x y:y
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   669
    "draw a substring at the coordinate x/y - draw foreground pixels in
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   670
     paint-color and background pixels in bgPaint-color.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   671
     Assuming that device can only draw in device colors, we have to handle
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   672
     the case where paint and/or bgPaint are dithered colors.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   673
     No translation or scaling is done."
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   674
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   675
    | savedFont |
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   676
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   677
    "
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   678
     if backgroundPaint color is nil, we assume
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   679
     this is a non-opaque draw
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   680
    "
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   681
    bgPaint isNil ifTrue:[
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   682
        self displayDeviceString:aString from:index1 to:index2 x:x y:y.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   683
        ^ self
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   684
    ].
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   685
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   686
    aString isPlainString ifFalse:[
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   687
        "
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   688
         hook for non-strings (i.e. attributed text)
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   689
         that 'thing' should know how to display itself ...
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   690
        "
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   691
        aString displayOpaqueOn:self x:x y:y from:index1 to:index2.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   692
        ^ self
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   693
    ].
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   694
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   695
    self deviceCoordinatesDo:[
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   696
        savedFont := self font.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   697
        [  
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   698
            self font:fontToUse.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   699
            self displayOpaqueString:aString from:index1 to:index2 x:x y:y
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   700
        ] ensure:[ 
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   701
            self font: savedFont
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   702
        ].
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   703
    ]
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   704
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   705
    "Created: / 26-02-2016 / 10:44:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   706
!
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   707
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   708
displayDeviceString:aString from:index1 to:index2 in:fontToUse x:x y:y
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   709
    "draw a substring at the coordinate x/y -
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   710
     draw foreground-pixels only (in current paint-color), leaving background as-is.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   711
     No translation or scaling is done"
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   712
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   713
    | savedFont |
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   714
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   715
    "
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   716
     hook for non-strings (i.e. attributed text)
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   717
    "
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   718
    aString isPlainString ifFalse:[
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   719
        ^ aString displayOn:self x:x y:y from:index1 to:index2
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   720
    ].
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   721
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   722
    self deviceCoordinatesDo:[
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   723
        savedFont := self font.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   724
        [  
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   725
            self font:fontToUse.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   726
            self displayString:aString from:index1 to:index2 x:x y:y
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   727
        ] ensure:[ 
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   728
            self font: savedFont
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   729
        ].
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   730
    ]
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   731
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   732
    "Created: / 26-02-2016 / 10:45:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   733
!
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   734
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   735
fillDeviceRectangleX:x y:y width:w height:h
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   736
    "draw a filled rectangle in device coordinate space.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   737
     This ignores any transformations. The coordinates must be integers."
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   738
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   739
    self deviceCoordinatesDo:[ 
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   740
        self fillRectangleX:x y:y width:w height:h
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   741
    ].
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   742
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   743
    "Created: / 26-02-2016 / 10:29:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   744
! !
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   745
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: 35
diff changeset
   746
!CairoGraphicsContext methodsFor:'filling'!
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   747
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   748
fillRoundRectangleX:x y:y width:w height:h wCorner:wCorn hCorner:hCorn
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   749
    | r pi |
42
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   750
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   751
    gcId isNil ifTrue:[ 
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   752
        self initGC.
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   753
    ].
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   754
    wCorn ~~ hCorn ifTrue:[ 
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   755
        self notYetImplemented.
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   756
    ].
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   757
    r := wCorn / 2.
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   758
    pi := Float pi.
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   759
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   760
    "/ top-left arc
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: 35
diff changeset
   761
    cr arcX: x + r     y: y + r     radius: r from:         pi to: (3/2) * pi.
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   762
    "/ top-right atc
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: 35
diff changeset
   763
    cr arcX: x + w - r y: y + r     radius: r from: (3/2) * pi to: 0.0.
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   764
    "/ bottom-right atc
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: 35
diff changeset
   765
    cr arcX: x + w - r y: y + h - r radius: r from: 0.0        to: (1/2) * pi.
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   766
    "/ bottom-left atc
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: 35
diff changeset
   767
    cr arcX: x + r     y: y + h - r radius: r from: (1/2) * pi to:         pi.
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: 35
diff changeset
   768
    cr closePath.
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: 35
diff changeset
   769
    cr fill.
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   770
    
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   771
    "
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   772
     |v|
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   773
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   774
     (v := View new) extent:200@200; openAndWait.
42
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   775
     v cairoify 
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   776
            lineWidth: 5;
42
475e93b10c8f CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   777
            displayRoundRectangleX:10 y:10 width:100 height:100 wCorner:20 hCorner:20.
33
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   778
    "
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   779
8a2e438b4363 To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   780
    "Created: / 07-01-2015 / 21:33:41 / 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: 35
diff changeset
   781
    "Modified: / 13-02-2016 / 20:00:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
8ee53c41a084 Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 44
diff changeset
   782
    "Modified (comment): / 21-02-2016 / 15:58:59 / jv"
1
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   783
! !
2439fb18f3dc Initial commit.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   784
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: 35
diff changeset
   785
!CairoGraphicsContext methodsFor:'finalization'!
34
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   786
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   787
executor
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   788
    ^ super executor
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   789
    "/^ self shallowCopy
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   790
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   791
    "Created: / 12-02-2016 / 17:04:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   792
!
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   793
34
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   794
finalization
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   795
    self destroy
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   796
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   797
    "Created: / 09-01-2015 / 10:20:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   798
!
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   799
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   800
finalizationLobby
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   801
    "answer a Registry used for finalization.
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   802
     Use a generic Registry for any object.
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   803
     Subclasses using their own Registry should redefine this"
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   804
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   805
    ^ Lobby
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   806
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   807
    "Created: / 09-01-2015 / 10:20:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   808
! !
97705b5a9411 Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   809
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: 35
diff changeset
   810
!CairoGraphicsContext methodsFor:'initialization & release'!
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   811
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   812
createCR
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   813
    "Physically create a Cairo graphics context"
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   814
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: 35
diff changeset
   815
    cr := self cairo.
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   816
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   817
    "Created: / 12-02-2016 / 16:59:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   818
    "Modified: / 18-02-2016 / 22:53:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   819
!
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   820
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   821
createGC
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   822
    "physically create a device GC.
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   823
     Since we do not need a gc-object for the drawable until something is
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   824
     really drawn, none is created up to the first draw.
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   825
     This method is sent, when the first drawing happens"      
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   826
    super createGC.
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   827
    self createCR
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   828
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   829
    "Created: / 12-02-2016 / 16:58:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   830
!
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   831
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   832
destroyCR
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   833
    "Tell Cairo library to destroy the corresponding C object.
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   834
     Remember that object is physically destroyed only if internal
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   835
     refcounter goes to zero. However, after calling destroy,
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   836
     this instance should be treated as invalid."
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   837
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: 35
diff changeset
   838
    cr notNil ifTrue:[
50
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   839
        | surfaceToDestroy crToDestroy |
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: 35
diff changeset
   840
50
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   841
        crToDestroy := cr.
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   842
        surfaceToDestroy := cr surface.
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   843
        cr := nil.
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   844
        crToDestroy release.
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   845
        surfaceToDestroy release.
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   846
    ].
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   847
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   848
    "Created: / 12-02-2016 / 16:59:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50
239120c68187 Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 49
diff changeset
   849
    "Modified: / 26-02-2016 / 22:50:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   850
!
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   851
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   852
destroyGC
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   853
    self destroyCR.
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   854
    super destroyGC
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   855
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   856
    "Created: / 12-02-2016 / 17:01:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   857
!
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   858
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   859
initCR
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   860
    | f |
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   861
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   862
    cr isNil ifTrue:[ 
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   863
        self createCR.
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   864
    ].
46
e624554ca9a3 CairoGraphicsContext: fixed drawing/filling of lines and rectangles to match DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   865
    cr antialias: CAIRO_ANTIALIAS_NONE.
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   866
    cr lineWidth: (lineWidth == 0 ifTrue:[ 1 ] ifFalse:[ lineWidth ]).
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   867
    cr source: paint.
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   868
    cr matrixReset.
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   869
    transformation notNil ifTrue:[    
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   870
        cr
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   871
            scale: transformation scale;
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   872
            transform: transformation translation.
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   873
    ].
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   874
    f := font.
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   875
    font := nil.
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   876
    self basicFont: f.
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   877
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   878
    "Created: / 18-02-2016 / 22:48:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46
e624554ca9a3 CairoGraphicsContext: fixed drawing/filling of lines and rectangles to match DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   879
    "Modified: / 24-02-2016 / 00:04:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   880
!
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   881
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   882
initGC
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   883
    super initGC.
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   884
    self initCR.
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   885
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   886
    "Created: / 18-02-2016 / 22:48:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   887
!
17bc740cbc2a Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   888
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   889
releaseCR
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   890
    self destroyCR
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   891
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   892
    "Created: / 12-02-2016 / 17:02:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   893
!
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   894
35
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   895
releaseGC
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   896
    "destroy the associated device GC resource - can be done to be nice to the
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   897
     display if you know that you are done with a drawable."
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   898
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   899
    self releaseCR.
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   900
    super releaseGC.
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   901
395689a88b32 Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 34
diff changeset
   902
    "Created: / 12-02-2016 / 17:03:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
30
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   903
! !
c8fe298c8cc7 GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   904
49
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   905
!CairoGraphicsContext methodsFor:'private'!
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   906
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   907
deviceCoordinatesDo: aBlock
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   908
    "Evaluate a block using device coordinates (device 
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   909
     space using Cairo terminology)"
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   910
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   911
    | savedTransformation |
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   912
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   913
    savedTransformation := transformation.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   914
    self transformation: nil.
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   915
    aBlock ensure:[ self transformation: savedTransformation ].
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   916
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   917
    "Created: / 26-02-2016 / 09:29:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   918
! !
5218b606b6cf DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   919
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: 35
diff changeset
   920
!CairoGraphicsContext class methodsFor:'documentation'!
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   921
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   922
version
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   923
    ^'$Id$'
11
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   924
!
fdc697f4f190 - Cairo::SvgVersion
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   925
23
38ee47dbd976 Added version_HG to make Mercurial happy
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   926
version_HG
38ee47dbd976 Added version_HG to make Mercurial happy
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   927
    ^ '$Changeset: <not expanded> $'
7
392289f92fab - DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6
diff changeset
   928
! !
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
   929
31
26070c1e480e GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 30
diff changeset
   930
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: 35
diff changeset
   931
CairoGraphicsContext initialize!