author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Thu, 01 Aug 2019 18:43:54 +0100 | |
changeset 87 | d1313f80a9a7 |
parent 63 | 054f0513ea65 |
child 88 | 9d51db2ba641 |
permissions | -rw-r--r-- |
38
9c94e463018a
Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
"{ Package: 'stx:goodies/libcairo' }" |
9c94e463018a
Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
9c94e463018a
Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
"{ NameSpace: Cairo }" |
9c94e463018a
Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
|
9c94e463018a
Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
Surface subclass:#SurfaceImage |
9c94e463018a
Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
instanceVariableNames:'' |
9c94e463018a
Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
classVariableNames:'' |
9c94e463018a
Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
poolDictionaries:'' |
9c94e463018a
Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
category:'Cairo-Objects' |
9c94e463018a
Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
! |
9c94e463018a
Split classes for individual surfaces
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
|
51
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
12 |
!SurfaceImage methodsFor:'accessing'! |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
13 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
14 |
data |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
15 |
"Get a pointer to the data (as ExternalBytes) of the image surface, for |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
16 |
direct inspection or modification. |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
17 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
18 |
A call to Cairo::Surdace>>#flush is required before accessing the pixel |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
19 |
data to ensure that all pending drawing operations are finished. A call |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
20 |
to Cairo::Surface>>#markDirty is required after the data is modified." |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
21 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
22 |
| data size | |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
23 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
24 |
size := self stride * self height. |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
25 |
data := CPrimitives cairo_image_surface_get_data: self. |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
26 |
data := ExternalBytes basicNew setAddress: data address size: size. |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
27 |
^ data |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
28 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
29 |
"Created: / 27-02-2016 / 16:49:46 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
30 |
"Modified: / 27-02-2016 / 18:30:58 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
31 |
! |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
32 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
33 |
format |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
34 |
"Get the format of the surface. See Cairo::Format" |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
35 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
36 |
^ CPrimitives cairo_image_surface_get_format: self. |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
37 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
38 |
"Created: / 28-02-2016 / 08:00:05 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
39 |
! |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
40 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
41 |
height |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
42 |
"Get the height of the image surface in pixels." |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
43 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
44 |
^ CPrimitives cairo_image_surface_get_height: self |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
45 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
46 |
"Created: / 27-02-2016 / 16:51:55 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
47 |
! |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
48 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
49 |
stride |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
50 |
"Get the stride of the image surface in bytes." |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
51 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
52 |
^ CPrimitives cairo_image_surface_get_stride: self |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
53 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
54 |
"Created: / 27-02-2016 / 16:51:02 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
55 |
! |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
56 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
57 |
width |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
58 |
"Get the width of the image surface in pixels." |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
59 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
60 |
^ CPrimitives cairo_image_surface_get_width: self |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
61 |
|
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
62 |
"Created: / 27-02-2016 / 16:51:30 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
63 |
! ! |
5293f2b851ab
CairGraphicsContext: added support for displaying images with alpha channel
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
38
diff
changeset
|
64 |
|
63
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
65 |
!SurfaceImage methodsFor:'inspecting'! |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
66 |
|
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
67 |
inspector2TabImageCairo |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
68 |
<inspector2Tab> |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
69 |
|
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
70 |
| v | |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
71 |
|
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
72 |
v := PluggableView new. |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
73 |
v redrawAction:[ |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
74 |
| cr | |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
75 |
|
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
76 |
cr := v cairo. |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
77 |
[ |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
78 |
cr sourceSurface: self x: 1 y: 1. |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
79 |
cr paint. |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
80 |
] ensure:[ |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
81 |
cr release. |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
82 |
]. |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
83 |
]. |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
84 |
^self newInspector2Tab |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
85 |
label: 'Contents'; |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
86 |
priority: 49; |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
87 |
view: (HVScrollableView forView: v); |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
88 |
yourself |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
89 |
|
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
90 |
"Created: / 31-12-2014 / 12:01:07 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
91 |
! ! |
054f0513ea65
Initial support for Cairo::Pattern
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
51
diff
changeset
|
92 |