author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Fri, 25 Mar 2016 22:05:01 +0000 | |
changeset 72 | 3eabcca278cd |
parent 70 | 4f58f5ed77b3 |
child 74 | 94902e358396 |
permissions | -rw-r--r-- |
1 | 1 |
"{ Package: 'stx:goodies/libcairo' }" |
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 | 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' |
60
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
7 |
classVariableNames:'' |
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 |
64
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
9 |
Cairo::Antialias Cairo::Extend' |
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 | 11 |
! |
12 |
||
65
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
13 |
|
39
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
14 |
!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
|
15 |
|
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
16 |
onDeviceGraphicsContext: dGC |
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
17 |
| cGC | |
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
18 |
|
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
19 |
cGC := self basicNew. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
20 |
1 to: DeviceGraphicsContext instSize do:[:i | |
41
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
21 |
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
|
22 |
]. |
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
23 |
dGC gcId notNil ifTrue:[ |
41
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
24 |
cGC initGC. |
39
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
25 |
]. |
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
26 |
^ cGC |
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 |
"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
|
29 |
"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
|
30 |
! ! |
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
31 |
|
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
|
32 |
!CairoGraphicsContext class methodsFor:'accessing'! |
1 | 33 |
|
12 | 34 |
dllPath |
35 |
||
36 |
OperatingSystem isMSWINDOWSlike ifTrue:[ |
|
37 |
^ #( 'C:\Windows' 'C:\Windows\System32' "Wild guess, should not harm" ) |
|
38 |
]. |
|
39 |
||
40 |
OperatingSystem isUNIXlike ifTrue:[ |
|
41 |
OperatingSystem getSystemType == #linux ifTrue:[ |
|
42 |
| path | |
|
43 |
||
44 |
path := #( '/lib' '/usr/lib' '/usr/local/lib' ). |
|
45 |
(OperatingSystem getSystemInfo at:#machine) = 'x86_64' ifTrue:[ |
|
46 |
"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
|
47 |
Leave standard paths at the end, as the system might be completely |
12 | 48 |
32bit but running on 64bit-capable CPU. |
49 |
||
50 |
CAVEAT: This is bit dangerous, as on 64bit OS, if ia32 libs are |
|
51 |
not installed byt 64bit sqlite libs are, then 64bit libs are found |
|
52 |
and when a function is called, segfault will occur!! |
|
53 |
||
54 |
Q: Is there a way how to figure out if the OS itself is 32bit, |
|
55 |
regardles on CPU?" |
|
56 |
path := #( '/lib32' '/usr/lib32' '/usr/local/lib32' ) , path. |
|
57 |
]. |
|
58 |
^path |
|
59 |
||
60 |
]. |
|
61 |
]. |
|
62 |
||
63 |
self error:'Unsupported operating system' |
|
64 |
||
65 |
" |
|
66 |
SqliteLibrary dllPath |
|
67 |
" |
|
68 |
||
69 |
"Created: / 31-08-2011 / 18:02:17 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
70 |
! |
|
71 |
||
1 | 72 |
libraryName |
73 |
||
29
6ba06265e543
Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
74 |
OperatingSystem isUNIXlike ifTrue:[^'libcairo.so.2']. |
1 | 75 |
|
29
6ba06265e543
Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
76 |
OperatingSystem isMSWINDOWSlike ifTrue:[^'cairo.dll']. |
12 | 77 |
|
29
6ba06265e543
Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
78 |
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
|
79 |
! |
c1f387b40e3a
regenerated using newer version of CFace
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
5
diff
changeset
|
80 |
|
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
|
81 |
sizeof |
29
6ba06265e543
Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
82 |
"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
|
83 |
|
29
6ba06265e543
Bindinge updated to recent Cairo version.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
84 |
^0 |
1 | 85 |
! ! |
86 |
||
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
|
87 |
!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
|
88 |
|
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
89 |
rectangleOnTranscript |
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
90 |
|
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
91 |
" |
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
92 |
Cairo::GraphicsContext rectangleOnTranscript |
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
93 |
" |
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
94 |
|
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
95 |
|
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
96 |
| gc | |
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
97 |
gc := Transcript cairo. |
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
98 |
gc paint: Color black. |
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
99 |
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
|
100 |
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
|
101 |
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
|
102 |
gc fill. |
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
103 |
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
|
104 |
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
|
105 |
gc stroke. |
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 |
"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
|
108 |
! ! |
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
109 |
|
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
|
110 |
!CairoGraphicsContext methodsFor:'accessing'! |
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
111 |
|
65
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
112 |
atX:x y:y |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
113 |
"return the pixel at the coordinate given by x/y" |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
114 |
cr notNil ifTrue:[ |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
115 |
cr surface flush. |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
116 |
]. |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
117 |
^ device getPixelX:x y:y from:drawableId with:gcId |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
118 |
|
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
119 |
"Created: / 16-03-2016 / 18:27:27 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
120 |
! |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
121 |
|
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
122 |
basicFont:aFont |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
123 |
(aFont ~~ font) ifTrue:[ |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
124 |
super basicFont: aFont. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
125 |
font notNil ifTrue:[ |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
126 |
font := CairoScaledFont fromFontDescription: font onDevice: device. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
127 |
cr notNil ifTrue:[ |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
128 |
cr font: font scaledFont. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
129 |
]. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
130 |
]. |
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 |
"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
|
134 |
"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
|
135 |
"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
|
136 |
! |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
137 |
|
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
138 |
cairo |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
139 |
"Return a Cairo context for drawing onto this GC" |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
140 |
| ncr | |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
141 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
142 |
ncr := Cairo::GraphicsContext onSurface: super cairoSurface. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
143 |
^ ncr. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
144 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
145 |
"Created: / 31-03-2016 / 00:13:07 / jv" |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
146 |
! |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
147 |
|
48
2a66aee0a9b3
Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
47
diff
changeset
|
148 |
cairoSurface |
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
149 |
cr isNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
150 |
self initCR. |
48
2a66aee0a9b3
Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
47
diff
changeset
|
151 |
]. |
2a66aee0a9b3
Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
47
diff
changeset
|
152 |
cr isNil ifTrue:[ |
2a66aee0a9b3
Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
47
diff
changeset
|
153 |
^ super cairoSurface |
2a66aee0a9b3
Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
47
diff
changeset
|
154 |
]. |
2a66aee0a9b3
Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
47
diff
changeset
|
155 |
^ cr surface |
2a66aee0a9b3
Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
47
diff
changeset
|
156 |
|
2a66aee0a9b3
Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
47
diff
changeset
|
157 |
"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
|
158 |
! |
2a66aee0a9b3
Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
47
diff
changeset
|
159 |
|
39
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
160 |
clippingBounds:aRectangleOrNil |
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
161 |
"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
|
162 |
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
|
163 |
|
70
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
164 |
super clippingBounds:aRectangleOrNil. |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
165 |
cr notNil ifTrue:[ |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
166 |
aRectangleOrNil isNil ifTrue:[ |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
167 |
cr clipReset |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
168 |
] ifFalse:[ |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
169 |
cr rectangleX: aRectangleOrNil left |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
170 |
y: aRectangleOrNil top |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
171 |
width: aRectangleOrNil width |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
172 |
height: aRectangleOrNil height. |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
173 |
cr clip. |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
174 |
]. |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
175 |
]. |
39
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
176 |
|
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
177 |
"Created: / 15-02-2016 / 21:38:05 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
70
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
178 |
"Modified: / 25-03-2016 / 06:58:26 / jv" |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
179 |
"Modified: / 27-03-2016 / 00:05:01 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
180 |
! |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
181 |
|
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
182 |
deviceClippingBounds:aRectangleOrNil |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
183 |
"set the clipping rectangle for drawing (in device coordinates); |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
184 |
a nil argument turns off clipping (i.e. whole view is drawable - incl. margins)" |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
185 |
|
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
186 |
super deviceClippingBounds: aRectangleOrNil. |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
187 |
self deviceCoordinatesDo:[ |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
188 |
cr notNil ifTrue:[ |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
189 |
aRectangleOrNil isNil ifTrue:[ |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
190 |
cr clipReset |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
191 |
] ifFalse:[ |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
192 |
cr rectangleX: aRectangleOrNil left |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
193 |
y: aRectangleOrNil top |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
194 |
width: aRectangleOrNil width |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
195 |
height: aRectangleOrNil height. |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
196 |
cr clip. |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
197 |
]. |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
198 |
]. |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
199 |
]. |
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
200 |
|
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
201 |
"Created: / 27-03-2016 / 00:09:19 / 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
|
202 |
! |
34
97705b5a9411
Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
33
diff
changeset
|
203 |
|
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
204 |
function:aFunctionSymbol |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
205 |
"set the drawing function" |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
206 |
|
51
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
207 |
#todo. |
48
2a66aee0a9b3
Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
47
diff
changeset
|
208 |
^ super function:aFunctionSymbol |
2a66aee0a9b3
Added support for creating surfaces for X11 pixmaps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
47
diff
changeset
|
209 |
|
51
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
210 |
"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
|
211 |
! |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
212 |
|
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
213 |
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
|
214 |
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
|
215 |
cr notNil ifTrue:[ |
ffe4882eb977
Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
42
diff
changeset
|
216 |
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
|
217 |
]. |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
218 |
|
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
219 |
"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
|
220 |
"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
|
221 |
! |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
222 |
|
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
223 |
mask:aForm |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
224 |
"set the drawing mask" |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
225 |
|
51
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
226 |
super mask: aForm. |
64
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
227 |
cr notNil ifTrue:[ |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
228 |
self maskSet. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
229 |
]. |
51
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
230 |
|
64
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
231 |
"Modified (format): / 08-03-2016 / 21:22:25 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
232 |
! |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
233 |
|
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
234 |
maskOrigin:aPoint |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
235 |
"set the origin of the mask-pattern" |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
236 |
|
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
237 |
super maskOrigin: aPoint. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
238 |
gcId notNil ifTrue:[ |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
239 |
mask notNil ifTrue:[ |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
240 |
self maskSet. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
241 |
]. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
242 |
]. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
243 |
|
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
244 |
"Created: / 08-03-2016 / 21:23:15 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
245 |
! |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
246 |
|
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
247 |
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
|
248 |
super paint: aColor. |
41
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
249 |
cr notNil ifTrue:[ |
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
250 |
cr source: paint. |
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
251 |
]. |
1 | 252 |
|
253 |
"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
|
254 |
"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
|
255 |
"Modified: / 18-02-2016 / 22:56:37 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
62
a1280a796155
CairoGraphicsContext: oops, fixed #paint:on:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
60
diff
changeset
|
256 |
! |
a1280a796155
CairoGraphicsContext: oops, fixed #paint:on:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
60
diff
changeset
|
257 |
|
a1280a796155
CairoGraphicsContext: oops, fixed #paint:on:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
60
diff
changeset
|
258 |
paint:fgColor on:bgColor |
a1280a796155
CairoGraphicsContext: oops, fixed #paint:on:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
60
diff
changeset
|
259 |
"Set the paint and background-paint color. |
a1280a796155
CairoGraphicsContext: oops, fixed #paint:on:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
60
diff
changeset
|
260 |
The bg-paint is used in opaque-draw operations" |
a1280a796155
CairoGraphicsContext: oops, fixed #paint:on:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
60
diff
changeset
|
261 |
|
a1280a796155
CairoGraphicsContext: oops, fixed #paint:on:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
60
diff
changeset
|
262 |
super paint: fgColor on: bgColor. |
a1280a796155
CairoGraphicsContext: oops, fixed #paint:on:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
60
diff
changeset
|
263 |
cr notNil ifTrue:[ |
a1280a796155
CairoGraphicsContext: oops, fixed #paint:on:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
60
diff
changeset
|
264 |
cr source: paint. |
a1280a796155
CairoGraphicsContext: oops, fixed #paint:on:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
60
diff
changeset
|
265 |
]. |
a1280a796155
CairoGraphicsContext: oops, fixed #paint:on:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
60
diff
changeset
|
266 |
|
a1280a796155
CairoGraphicsContext: oops, fixed #paint:on:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
60
diff
changeset
|
267 |
"Created: / 05-03-2016 / 16:35:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
268 |
! |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
269 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
270 |
width: width height: height |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
271 |
device isX11Platform ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
272 |
cr surface width: width height: height |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
273 |
] ifFalse:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
274 |
self destroyCR. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
275 |
]. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
276 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
277 |
"Created: / 02-04-2016 / 15:37:49 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
278 |
"Modified: / 02-04-2016 / 15:55:29 / jv" |
1 | 279 |
! ! |
280 |
||
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
|
281 |
!CairoGraphicsContext methodsFor:'accessing-transformation'! |
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
282 |
|
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
283 |
transformation:aTransformation |
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
284 |
"set the transformation" |
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
285 |
|
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
286 |
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
|
287 |
cr notNil ifTrue:[ |
ffe4882eb977
Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
42
diff
changeset
|
288 |
cr matrixReset. |
65
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
289 |
transformation notNil ifTrue:[ |
44
ffe4882eb977
Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
42
diff
changeset
|
290 |
cr |
ffe4882eb977
Avoid excessive font object creation by cacheing in device
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
42
diff
changeset
|
291 |
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
|
292 |
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
|
293 |
] |
39
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
294 |
] |
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
295 |
|
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
296 |
"Created: / 01-01-2015 / 12:07:07 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
65
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
297 |
"Modified: / 16-03-2016 / 22:26:43 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
298 |
! ! |
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
299 |
|
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
|
300 |
!CairoGraphicsContext methodsFor:'basic drawing'! |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
301 |
|
32
fb983be8d2c0
To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
31
diff
changeset
|
302 |
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
|
303 |
| angle1 angle2 | |
fb983be8d2c0
To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
31
diff
changeset
|
304 |
|
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
305 |
cr isNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
306 |
self initCR. |
42
475e93b10c8f
CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
41
diff
changeset
|
307 |
]. |
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
|
308 |
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
|
309 |
[ |
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
|
310 |
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
|
311 |
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
|
312 |
]. |
32
fb983be8d2c0
To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
31
diff
changeset
|
313 |
|
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
|
314 |
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
|
315 |
angle2 := (360 - (start + angle)) \\ 360. |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
316 |
|
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
|
317 |
(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
|
318 |
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
|
319 |
] 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
|
320 |
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
|
321 |
]. |
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
|
322 |
cr stroke. |
32
fb983be8d2c0
To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
31
diff
changeset
|
323 |
|
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
|
324 |
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
|
325 |
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
|
326 |
]. |
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
|
327 |
] 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
|
328 |
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
|
329 |
] |
32
fb983be8d2c0
To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
31
diff
changeset
|
330 |
|
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
|
331 |
"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
|
332 |
"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
|
333 |
! |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
334 |
|
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
335 |
displayLineFromX:x0 y:y0 toX:x1 y:y1 |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
336 |
"draw a line from x0/y0 to x1/y1" |
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
337 |
cr isNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
338 |
self initCR. |
42
475e93b10c8f
CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
41
diff
changeset
|
339 |
]. |
65
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
340 |
x0 = x1 ifTrue:[ |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
341 |
cr moveToX: x0 + 0.5 y: y0. |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
342 |
cr lineToX: x1 + 0.5 y: y1. |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
343 |
] ifFalse:[ |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
344 |
y0 = y1 ifTrue:[ |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
345 |
cr moveToX: x0 y: y0 + 0.5. |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
346 |
cr lineToX: x1 y: y1 + 0.5. |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
347 |
] ifFalse:[ |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
348 |
cr moveToX: x0 y: y0. |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
349 |
cr lineToX: x1 y: y1. |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
350 |
|
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
351 |
]. |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
352 |
]. |
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
|
353 |
cr stroke. |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
354 |
|
45
8ee53c41a084
Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
44
diff
changeset
|
355 |
"Modified: / 21-02-2016 / 15:24:52 / jv" |
65
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
356 |
"Modified: / 16-03-2016 / 22:40:35 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
17 | 357 |
! |
358 |
||
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
359 |
displayPolygon:points |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
360 |
"draw a polygon |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
361 |
- this could be recoded to draw using displayLine" |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
362 |
|
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
363 |
cr isNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
364 |
self initCR. |
42
475e93b10c8f
CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
41
diff
changeset
|
365 |
]. |
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
|
366 |
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
|
367 |
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
|
368 |
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
|
369 |
]. |
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
|
370 |
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
|
371 |
cr stroke. |
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
372 |
|
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
|
373 |
"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
|
374 |
"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
|
375 |
! |
17 | 376 |
|
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
377 |
displayRectangleX:x y:y width:w height:h |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
378 |
"draw a rectangle |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
379 |
- 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
|
380 |
|
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
381 |
cr isNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
382 |
self initCR. |
42
475e93b10c8f
CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
41
diff
changeset
|
383 |
]. |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
384 |
(w > 0 and:[h > 0]) ifTrue:[ |
65
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
385 |
cr rectangleX: x + 0.5 y: y + 0.5 width: w - 0.5 height: h - 0.5. |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
386 |
cr stroke. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
387 |
] |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
388 |
|
45
8ee53c41a084
Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
44
diff
changeset
|
389 |
"Modified: / 21-02-2016 / 15:34:34 / jv" |
65
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
390 |
"Modified: / 16-03-2016 / 22:42:13 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
391 |
! |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
392 |
|
47
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
393 |
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
|
394 |
"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
|
395 |
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
|
396 |
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
|
397 |
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
|
398 |
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
|
399 |
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
|
400 |
|
47
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
401 |
| opaque | |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
402 |
" |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
403 |
if backgroundPaint color is nil, we assume |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
404 |
this is a non-opaque draw |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
405 |
" |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
406 |
opaque := opaqueArg ? false. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
407 |
bgPaint isNil ifTrue:[ |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
408 |
opaque := false. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
409 |
]. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
410 |
|
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
411 |
cr isNil ifTrue:[ |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
412 |
self initGC |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
413 |
]. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
414 |
|
47
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
415 |
(string isString not or:[string isText]) ifTrue:[ |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
416 |
" |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
417 |
hook for non-strings (i.e. attributed text) |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
418 |
that 'thing' should know how to display itself ... |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
419 |
" |
47
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
420 |
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
|
421 |
^ self |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
422 |
]. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
423 |
|
47
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
424 |
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
|
425 |
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
|
426 |
] ifFalse:[ |
47
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
427 |
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
|
428 |
cr surface flush. |
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
429 |
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
|
430 |
cr surface markDirty. |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
431 |
]. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
432 |
|
39
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
433 |
"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
|
434 |
"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
|
435 |
"Modified: / 24-02-2016 / 17:14:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
17 | 436 |
! ! |
437 |
||
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
|
438 |
!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
|
439 |
|
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
440 |
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
|
441 |
| angle1 angle2 | |
fb983be8d2c0
To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
31
diff
changeset
|
442 |
|
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
443 |
cr isNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
444 |
self initCR. |
42
475e93b10c8f
CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
41
diff
changeset
|
445 |
]. |
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
|
446 |
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
|
447 |
[ |
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
|
448 |
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
|
449 |
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
|
450 |
]. |
32
fb983be8d2c0
To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
31
diff
changeset
|
451 |
|
fb983be8d2c0
To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
31
diff
changeset
|
452 |
|
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
|
453 |
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
|
454 |
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
|
455 |
|
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
|
456 |
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
|
457 |
|
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
|
458 |
(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
|
459 |
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
|
460 |
] 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
|
461 |
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
|
462 |
]. |
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
|
463 |
cr closePath. |
10
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
464 |
|
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
|
465 |
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
|
466 |
cr fill. |
32
fb983be8d2c0
To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
31
diff
changeset
|
467 |
|
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
|
468 |
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
|
469 |
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
|
470 |
]. |
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
|
471 |
] 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
|
472 |
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
|
473 |
] |
32
fb983be8d2c0
To fold - support for display/fillArc...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
31
diff
changeset
|
474 |
|
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
|
475 |
"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
|
476 |
"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
|
477 |
! |
10
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
478 |
|
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
479 |
fillPolygon:points |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
480 |
"fill a polygon with current paint color" |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
481 |
|
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
482 |
cr isNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
483 |
self initCR. |
42
475e93b10c8f
CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
41
diff
changeset
|
484 |
]. |
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
|
485 |
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
|
486 |
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
|
487 |
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
|
488 |
]. |
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
|
489 |
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
|
490 |
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
|
491 |
cr fill. |
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
492 |
|
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
|
493 |
"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
|
494 |
"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
|
495 |
! |
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
496 |
|
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
497 |
fillRectangleX:x y:y width:w height:h |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
498 |
"fill a rectangle with current paint color" |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
499 |
|
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
500 |
cr isNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
501 |
self initCR. |
42
475e93b10c8f
CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
41
diff
changeset
|
502 |
]. |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
503 |
(w > 0 and:[h > 0]) ifTrue:[ |
54
209a2b0b721a
CairoGraphicsContext: adjustments to displayRectangle / fillRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
504 |
| savedWidth | |
209a2b0b721a
CairoGraphicsContext: adjustments to displayRectangle / fillRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
505 |
|
209a2b0b721a
CairoGraphicsContext: adjustments to displayRectangle / fillRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
506 |
savedWidth := cr lineWidth. |
209a2b0b721a
CairoGraphicsContext: adjustments to displayRectangle / fillRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
507 |
cr lineWidth: 1. |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
508 |
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
|
509 |
cr strokeAndPreserve. |
54
209a2b0b721a
CairoGraphicsContext: adjustments to displayRectangle / fillRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
510 |
cr lineWidth: savedWidth. |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
511 |
cr fill. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
512 |
]. |
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
513 |
|
39
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
514 |
"/ cr save. |
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
515 |
"/ 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
|
516 |
"/ cr sourceR: 1 G: 0 B: 0. |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
517 |
"/ cr lineWidth: 1. |
39
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
518 |
"/ cr stroke. |
8af34937e1ec
More work for using CairoGrahicsContext for rendering views
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
36
diff
changeset
|
519 |
"/ cr restore. |
10
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
520 |
|
45
8ee53c41a084
Win32: Initial support for Cairo under Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
44
diff
changeset
|
521 |
"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
|
522 |
"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
|
523 |
! ! |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
524 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
525 |
!CairoGraphicsContext methodsFor:'bit blitting'! |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
526 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
527 |
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
|
528 |
"copy bits from a smalltalk byteArray. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
529 |
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
|
530 |
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
|
531 |
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
|
532 |
method to whatever the device needs." |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
533 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
534 |
cr notNil ifTrue:[ |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
535 |
cr surface flush |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
536 |
]. |
47
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
537 |
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
|
538 |
cr notNil ifTrue:[ |
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
539 |
cr surface markDirty |
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
540 |
]. |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
541 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
542 |
"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
|
543 |
"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
|
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 |
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
|
547 |
"copy from aDrawable into the receiver; |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
548 |
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
|
549 |
All coordinates are in device coordinates. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
550 |
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
|
551 |
- 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
|
552 |
(not all devices care for this). |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
553 |
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
|
554 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
555 |
cr notNil ifTrue:[ |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
556 |
cr surface flush |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
557 |
]. |
47
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
558 |
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
|
559 |
cr notNil ifTrue:[ |
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
560 |
cr surface markDirty |
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
561 |
]. |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
562 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
563 |
"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
|
564 |
"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
|
565 |
! |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
566 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
567 |
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
|
568 |
"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
|
569 |
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
|
570 |
The depth of aDrawable must (should) be 1. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
571 |
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
|
572 |
All coordinates are in device coordinates." |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
573 |
|
42
475e93b10c8f
CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
41
diff
changeset
|
574 |
cr notNil ifTrue:[ |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
575 |
cr surface flush |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
576 |
]. |
47
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
577 |
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
|
578 |
cr notNil ifTrue:[ |
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
579 |
cr surface markDirty |
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
580 |
]. |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
581 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
582 |
"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
|
583 |
"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
|
584 |
"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
|
585 |
! ! |
dd5fece7c8d2
Few hacks before presentation at Smalltalk Jihlava 2009
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
8
diff
changeset
|
586 |
|
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
587 |
!CairoGraphicsContext methodsFor:'change & update'! |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
588 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
589 |
update: aspect with: param from: sender |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
590 |
aspect == #sizeOfView ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
591 |
self updateCR. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
592 |
^ self. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
593 |
]. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
594 |
super update: aspect with: param from: sender |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
595 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
596 |
"Created: / 29-03-2016 / 23:00:56 / jv" |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
597 |
! |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
598 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
599 |
updateCR |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
600 |
"Called when view associated with given context |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
601 |
changes its size" |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
602 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
603 |
cr notNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
604 |
device isWindowsPlatform ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
605 |
| surface blocked | |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
606 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
607 |
blocked := OperatingSystem blockInterrupts. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
608 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
609 |
surface := cr surface. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
610 |
cr release. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
611 |
surface release. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
612 |
device dcUnlockForGC: gcId. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
613 |
cr := nil. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
614 |
blocked ifFalse:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
615 |
OperatingSystem unblockInterrupts. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
616 |
] |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
617 |
]]. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
618 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
619 |
"Created: / 29-03-2016 / 22:58:49 / jv" |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
620 |
"Modified: / 31-03-2016 / 00:39:48 / jv" |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
621 |
"Modified: / 02-04-2016 / 15:38:19 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
622 |
! ! |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
623 |
|
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
|
624 |
!CairoGraphicsContext methodsFor:'drawing'! |
17 | 625 |
|
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
626 |
displayForm:aFormOrImage x:x y:y |
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
627 |
"draw a form (or image) at x/y; |
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
628 |
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
|
629 |
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
|
630 |
If the form has depth ~~ 1, the current fg color setting is ignored." |
1 | 631 |
|
51
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
632 |
| 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
|
633 |
|
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
634 |
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
|
635 |
(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
|
636 |
cr notNil ifTrue:[ |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
637 |
cr surface flush. |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
638 |
]. |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
639 |
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
|
640 |
cr notNil ifTrue:[ |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
641 |
cr surface markDirty. |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
642 |
]. |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
643 |
^ self. |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
644 |
]. |
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
645 |
width := image width. |
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
646 |
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
|
647 |
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
|
648 |
[ |
51
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
649 |
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
|
650 |
imageSurface markDirty. |
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
651 |
cr isNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
652 |
self initCR. |
51
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
653 |
]. |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
654 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
655 |
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
|
656 |
cr paint. |
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
657 |
] ensure:[ |
51
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
50
diff
changeset
|
658 |
imageSurface release. |
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
659 |
]. |
1 | 660 |
|
31
26070c1e480e
GraphicsContext refactoring (part 2)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
30
diff
changeset
|
661 |
"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
|
662 |
"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
|
663 |
! |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
664 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
665 |
displayLineFrom:p0 to:p1 |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
666 |
"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
|
667 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
668 |
^ 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
|
669 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
670 |
"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
|
671 |
! |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
672 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
673 |
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
|
674 |
"draw a line using a brush. |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
675 |
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
|
676 |
temporary bitmap first, which is then displayed" |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
677 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
678 |
cr notNil ifTrue:[ |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
679 |
cr surface flush |
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
680 |
]. |
47
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
681 |
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
|
682 |
cr notNil ifTrue:[ |
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
683 |
cr surface markDirty |
061f23d91383
CairoScaledFont: fixed drawing of CairoScaledFont on plain old DeviceGraphicsContext.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
46
diff
changeset
|
684 |
]. |
40
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
685 |
|
28dfc583beb5
#displayString: in CairoGraphicsContext revamped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
39
diff
changeset
|
686 |
"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
|
687 |
"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
|
688 |
! |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
689 |
|
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
690 |
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
|
691 |
| 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
|
692 |
|
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
693 |
cr isNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
694 |
self initCR. |
42
475e93b10c8f
CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
41
diff
changeset
|
695 |
]. |
33
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
696 |
wCorn ~~ hCorn ifTrue:[ |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
697 |
self notYetImplemented. |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
698 |
]. |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
699 |
r := wCorn / 2. |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
700 |
pi := Float pi. |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
701 |
|
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
702 |
"/ 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
|
703 |
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
|
704 |
"/ 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
|
705 |
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
|
706 |
"/ 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
|
707 |
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
|
708 |
"/ 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
|
709 |
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
|
710 |
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
|
711 |
cr stroke. |
33
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
712 |
|
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
713 |
" |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
714 |
|v| |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
715 |
|
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
716 |
(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
|
717 |
v cairo |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
718 |
lineWidth: 5; |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
719 |
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
|
720 |
release |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
721 |
" |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
722 |
|
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
723 |
"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
|
724 |
"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
|
725 |
"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
|
726 |
! ! |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
727 |
|
49
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
728 |
!CairoGraphicsContext methodsFor:'drawing in device coordinates'! |
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 |
displayDeviceForm:aForm x:x y:y |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
731 |
"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
|
732 |
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
|
733 |
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
|
734 |
(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
|
735 |
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
|
736 |
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
|
737 |
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
|
738 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
739 |
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
|
740 |
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
|
741 |
No transformation or scaling is done. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
742 |
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
|
743 |
(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
|
744 |
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
|
745 |
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
|
746 |
noColor or allColor)." |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
747 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
748 |
cr notNil ifTrue:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
749 |
cr surface flush. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
750 |
]. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
751 |
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
|
752 |
cr notNil ifTrue:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
753 |
cr surface markDirty. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
754 |
]. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
755 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
756 |
"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
|
757 |
! |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
758 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
759 |
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
|
760 |
"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
|
761 |
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
|
762 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
763 |
self deviceCoordinatesDo:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
764 |
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
|
765 |
]. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
766 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
767 |
"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
|
768 |
! |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
769 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
770 |
displayDeviceOpaqueForm:aForm x:x y:y |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
771 |
"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
|
772 |
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
|
773 |
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
|
774 |
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
|
775 |
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
|
776 |
Any mask is ignored. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
777 |
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
|
778 |
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
|
779 |
to the colors) before doing so. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
780 |
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
|
781 |
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
|
782 |
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
|
783 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
784 |
cr notNil ifTrue:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
785 |
cr surface flush. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
786 |
]. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
787 |
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
|
788 |
cr notNil ifTrue:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
789 |
cr surface markDirty. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
790 |
]. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
791 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
792 |
"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
|
793 |
! |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
794 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
795 |
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
|
796 |
"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
|
797 |
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
|
798 |
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
|
799 |
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
|
800 |
No translation or scaling is done." |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
801 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
802 |
| savedFont | |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
803 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
804 |
" |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
805 |
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
|
806 |
this is a non-opaque draw |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
807 |
" |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
808 |
bgPaint isNil ifTrue:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
809 |
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
|
810 |
^ self |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
811 |
]. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
812 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
813 |
aString isPlainString ifFalse:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
814 |
" |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
815 |
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
|
816 |
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
|
817 |
" |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
818 |
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
|
819 |
^ self |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
820 |
]. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
821 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
822 |
self deviceCoordinatesDo:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
823 |
savedFont := self font. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
824 |
[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
825 |
self font:fontToUse. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
826 |
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
|
827 |
] ensure:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
828 |
self font: savedFont |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
829 |
]. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
830 |
] |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
831 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
832 |
"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
|
833 |
! |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
834 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
835 |
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
|
836 |
"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
|
837 |
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
|
838 |
No translation or scaling is done" |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
839 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
840 |
| savedFont | |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
841 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
842 |
" |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
843 |
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
|
844 |
" |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
845 |
aString isPlainString ifFalse:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
846 |
^ 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
|
847 |
]. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
848 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
849 |
self deviceCoordinatesDo:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
850 |
savedFont := self font. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
851 |
[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
852 |
self font:fontToUse. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
853 |
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
|
854 |
] ensure:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
855 |
self font: savedFont |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
856 |
]. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
857 |
] |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
858 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
859 |
"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
|
860 |
! |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
861 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
862 |
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
|
863 |
"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
|
864 |
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
|
865 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
866 |
self deviceCoordinatesDo:[ |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
867 |
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
|
868 |
]. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
869 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
870 |
"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
|
871 |
! ! |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
872 |
|
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
|
873 |
!CairoGraphicsContext methodsFor:'filling'! |
33
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
874 |
|
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
875 |
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
|
876 |
| 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
|
877 |
|
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
878 |
cr isNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
879 |
self initCR. |
42
475e93b10c8f
CairoGraphicsContext: Make sure native GC and Cairo context is initialized
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
41
diff
changeset
|
880 |
]. |
33
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
881 |
wCorn ~~ hCorn ifTrue:[ |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
882 |
self notYetImplemented. |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
883 |
]. |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
884 |
r := wCorn / 2. |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
885 |
pi := Float pi. |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
886 |
|
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
887 |
"/ 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
|
888 |
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
|
889 |
"/ 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
|
890 |
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
|
891 |
"/ 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
|
892 |
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
|
893 |
"/ 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
|
894 |
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
|
895 |
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
|
896 |
cr fill. |
33
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
897 |
|
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
898 |
" |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
899 |
|v| |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
900 |
|
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
901 |
(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
|
902 |
v cairoify |
33
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
903 |
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
|
904 |
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
|
905 |
" |
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
906 |
|
8a2e438b4363
To fold - better display/fill RoundedRectangle...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
907 |
"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
|
908 |
"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
|
909 |
"Modified (comment): / 21-02-2016 / 15:58:59 / jv" |
1 | 910 |
! ! |
911 |
||
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
|
912 |
!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
|
913 |
|
35
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
914 |
executor |
60
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
915 |
^ CairoGraphicsContextHandle basicNew setDevice:device id:drawableId gcId:gcId parentId: parentId type: drawableType cr: cr |
35
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
916 |
|
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
917 |
"Created: / 12-02-2016 / 17:04:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
60
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
918 |
"Modified: / 04-03-2016 / 00:09:03 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
34
97705b5a9411
Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
33
diff
changeset
|
919 |
! ! |
97705b5a9411
Use Cairo's toy text API for text rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
33
diff
changeset
|
920 |
|
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
|
921 |
!CairoGraphicsContext methodsFor:'initialization & release'! |
35
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
922 |
|
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
923 |
createCR |
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
924 |
"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
|
925 |
|
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
|
926 |
cr := self cairo. |
35
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
927 |
|
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
928 |
"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
|
929 |
"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
|
930 |
! |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
931 |
|
35
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
932 |
createGC |
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
933 |
"physically create a device GC. |
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
934 |
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
|
935 |
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
|
936 |
This method is sent, when the first drawing happens" |
60
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
937 |
|
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
938 |
"/ Here, we cannot simply do |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
939 |
"/ |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
940 |
"/ super createGC. |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
941 |
"/ self createCR. |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
942 |
"/ |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
943 |
"/ As we need to tell the finalization lobby to register change |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
944 |
"/ after we create Cairo context. Of course, we could just call |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
945 |
"/ |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
946 |
"/ Lobby registerChange: self |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
947 |
"/ |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
948 |
"/ in createCR, but then we'd call it twice which is not what we want. |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
949 |
"/ Therefore this ugly code duplication...sigh. |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
950 |
|
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
951 |
drawableType == #window ifTrue:[ |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
952 |
gcId := device gcFor:drawableId. |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
953 |
] ifFalse:[ |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
954 |
gcId := device gcForBitmap:drawableId. |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
955 |
]. |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
956 |
self createCR. |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
957 |
Lobby registerChange:self. |
35
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
958 |
|
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
959 |
"Created: / 12-02-2016 / 16:58:30 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
60
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
960 |
"Modified: / 03-03-2016 / 23:28:54 / 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
|
961 |
! |
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
962 |
|
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
963 |
destroyCR |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
964 |
"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
|
965 |
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
|
966 |
refcounter goes to zero. However, after calling destroy, |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
967 |
this instance should be treated as invalid." |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
968 |
|
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
|
969 |
cr notNil ifTrue:[ |
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
970 |
| wasBlocked surfaceToDestroy crToDestroy | |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
971 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
972 |
wasBlocked := OperatingSystem unblockInterrupts. |
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
|
973 |
|
50
239120c68187
Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
49
diff
changeset
|
974 |
crToDestroy := cr. |
239120c68187
Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
49
diff
changeset
|
975 |
surfaceToDestroy := cr surface. |
239120c68187
Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
49
diff
changeset
|
976 |
cr := nil. |
239120c68187
Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
49
diff
changeset
|
977 |
crToDestroy release. |
239120c68187
Added classes with examples and example viewers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
49
diff
changeset
|
978 |
surfaceToDestroy release. |
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
979 |
device dcUnlockForGC: gcId. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
980 |
wasBlocked ifFalse:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
981 |
OperatingSystem unblockInterrupts. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
982 |
] |
35
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
983 |
]. |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
984 |
|
35
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
985 |
"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
|
986 |
"Modified: / 26-02-2016 / 22:50:34 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
987 |
"Modified (format): / 02-04-2016 / 16:07:22 / jv" |
35
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
988 |
! |
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
989 |
|
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
990 |
destroyGC |
60
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
991 |
drawableId notNil ifTrue:[ |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
992 |
Logger debug: 'Destroying GC/CR for drawable %1' with: drawableId. |
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
993 |
]. |
35
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
994 |
self destroyCR. |
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
995 |
super destroyGC |
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
996 |
|
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
997 |
"Created: / 12-02-2016 / 17:01:01 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
60
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
998 |
"Modified: / 03-03-2016 / 23:52:50 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
999 |
! |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
1000 |
|
41
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1001 |
initCR |
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1002 |
| view f | |
41
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1003 |
|
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1004 |
gcId isNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1005 |
self initGC. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1006 |
]. |
41
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1007 |
cr isNil ifTrue:[ |
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1008 |
self createCR. |
60
9bc47734215d
CairoGraphicsContext: fixed finalization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
57
diff
changeset
|
1009 |
Lobby registerChange: self. |
41
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1010 |
]. |
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1011 |
device isWindowsPlatform ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1012 |
view := cr surface view. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1013 |
view notNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1014 |
view addDependent: self. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1015 |
view container notNil ifTrue:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1016 |
view container addDependent: self. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1017 |
]. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1018 |
]. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1019 |
]. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1020 |
|
46
e624554ca9a3
CairoGraphicsContext: fixed drawing/filling of lines and rectangles to match DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
45
diff
changeset
|
1021 |
cr antialias: CAIRO_ANTIALIAS_NONE. |
41
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1022 |
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
|
1023 |
cr source: paint. |
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1024 |
cr matrixReset. |
65
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
1025 |
self transformation: transformation. |
70
4f58f5ed77b3
Added support for clipping
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
65
diff
changeset
|
1026 |
self clippingBounds: clipRect. |
41
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1027 |
f := font. |
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1028 |
font := nil. |
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1029 |
self basicFont: f. |
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1030 |
|
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1031 |
"Created: / 18-02-2016 / 22:48:24 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1032 |
"Modified: / 29-03-2016 / 23:57:30 / jv" |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1033 |
"Modified: / 02-04-2016 / 15:39:15 / 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
|
1034 |
! |
17bc740cbc2a
Fixed (lazy) initialization of CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
40
diff
changeset
|
1035 |
|
35
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
1036 |
releaseCR |
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
1037 |
self destroyCR |
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
1038 |
|
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
1039 |
"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
|
1040 |
! |
30
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
1041 |
|
35
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
1042 |
releaseGC |
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
1043 |
"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
|
1044 |
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
|
1045 |
|
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
1046 |
self releaseCR. |
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
1047 |
super releaseGC. |
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
1048 |
|
395689a88b32
Make Cairo::GraphicsContext to inherit from DeviceGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
34
diff
changeset
|
1049 |
"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
|
1050 |
! ! |
c8fe298c8cc7
GraphicsContext refactoring (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
29
diff
changeset
|
1051 |
|
49
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1052 |
!CairoGraphicsContext methodsFor:'private'! |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1053 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1054 |
deviceCoordinatesDo: aBlock |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1055 |
"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
|
1056 |
space using Cairo terminology)" |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1057 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1058 |
| savedTransformation | |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1059 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1060 |
savedTransformation := transformation. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1061 |
self transformation: nil. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1062 |
aBlock ensure:[ self transformation: savedTransformation ]. |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1063 |
|
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1064 |
"Created: / 26-02-2016 / 09:29:57 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
64
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1065 |
! |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1066 |
|
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1067 |
maskSet |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1068 |
"Either mask or markOrigin changed. Update Cairo's source pattern" |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1069 |
|
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1070 |
| maskImage w h maskSurface maskPattern sourceSurface sourceContext sourcePattern | |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1071 |
|
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1072 |
mask isNil ifTrue:[ |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1073 |
cr source: paint. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1074 |
^ self. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1075 |
]. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1076 |
|
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1077 |
maskImage := mask asImage. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1078 |
w := maskImage width. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1079 |
h := maskImage height. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1080 |
[ |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1081 |
sourceSurface := Cairo::Surface newImageWithFormat: CAIRO_FORMAT_ARGB32 width: w height: h similarTo: cr surface. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1082 |
maskImage depth == 1 ifTrue:[ |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1083 |
maskSurface := maskImage asSurfaceWithFormat: CAIRO_FORMAT_A1 similarTo: sourceSurface. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1084 |
maskPattern := Cairo::Pattern surface: maskSurface. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1085 |
maskPattern extend: CAIRO_EXTEND_REPEAT. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1086 |
] ifFalse:[ |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1087 |
self error: 'Not yet supported' |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1088 |
]. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1089 |
sourceContext := sourceSurface cairo. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1090 |
maskOrigin notNil ifTrue:[ |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1091 |
maskPattern matrix: (Cairo::Matrix translate: maskOrigin negated). |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1092 |
]. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1093 |
sourceContext source: cr source. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1094 |
sourceContext mask: maskPattern. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1095 |
] ensure:[ |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1096 |
sourceContext notNil ifTrue:[sourceContext release]. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1097 |
maskPattern notNil ifTrue:[maskPattern release]. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1098 |
maskSurface notNil ifTrue:[maskSurface release]. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1099 |
]. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1100 |
sourcePattern := Cairo::Pattern surface: sourceSurface. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1101 |
sourcePattern extend: CAIRO_EXTEND_REPEAT. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1102 |
cr source: sourcePattern. |
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1103 |
|
6e9458bb0697
CairoGraphicsContext: Added support for #mask: and #maskOrigin:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
62
diff
changeset
|
1104 |
"Created: / 08-03-2016 / 21:21:39 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
72
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1105 |
! |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1106 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1107 |
subViewChangedSizeOrOrigin |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1108 |
"Internal. Called whenever one of the owner's |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1109 |
subview changes size or origin (i.e., when moved) |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1110 |
See SimpleView>>pixelOrigin:extent:. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1111 |
Can be used to adjust internal state." |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1112 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1113 |
device isX11Platform ifFalse:[ |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1114 |
self destroyGC. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1115 |
]. |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1116 |
"/ Nothing by default |
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1117 |
|
3eabcca278cd
Cairo context and surface management for CairoGraphicsContext reworked to work under Win32
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
70
diff
changeset
|
1118 |
"Created: / 02-04-2016 / 16:04:55 / jv" |
49
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1119 |
! ! |
5218b606b6cf
DeviceGraphicsContext: fixed routines using device coordinates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
48
diff
changeset
|
1120 |
|
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
|
1121 |
!CairoGraphicsContext class methodsFor:'documentation'! |
7
392289f92fab
- DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
1122 |
|
392289f92fab
- DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
1123 |
version |
392289f92fab
- DLL path is set automatically.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
6
diff
changeset
|
1124 |
^'$Id$' |
11 | 1125 |
! |
1126 |
||
23
38ee47dbd976
Added version_HG to make Mercurial happy
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
20
diff
changeset
|
1127 |
version_HG |
38ee47dbd976
Added version_HG to make Mercurial happy
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
20
diff
changeset
|
1128 |
^ '$Changeset: <not expanded> $' |
65
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
1129 |
! ! |
dcb2eb06e759
Issue #1: Adjust coordinates for lines/rectangles when drawing using through CairoGraphicsContext
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
64
diff
changeset
|
1130 |