Typo.
[cl-gtk2.git] / gdk / gdk.region.lisp
1 (in-package :gdk)
2
3 (defcfun gdk-rectangle-intersect :boolean
4   (src-1 (g-boxed-foreign rectangle))
5   (src-2 (g-boxed-foreign rectangle))
6   (dest (g-boxed-foreign rectangle)))
7
8 (defun rectangle-intersect (rectangle-1 rectangle-2)
9   (let ((dest (make-rectangle)))
10     (when (gdk-rectangle-intersect rectangle-1 rectangle-2 dest)
11       dest)))
12
13 (export 'rectangle-intersect)
14
15 (defcfun gdk-rectangle-union :boolean
16   (src-1 (g-boxed-foreign rectangle))
17   (src-2 (g-boxed-foreign rectangle))
18   (dest (g-boxed-foreign rectangle)))
19
20 (defun rectangle-union (rectangle-1 rectangle-2)
21   (let ((dest (make-rectangle)))
22     (when (gdk-rectangle-union rectangle-1 rectangle-2 dest)
23       dest)))
24
25 (export 'rectangle-union)
26
27 (defcfun gdk-region-polygon (g-boxed-foreign region :return)
28   (points :pointer)
29   (n-points :int)
30   (fill-rule gdk-fill-rule))
31
32 (defun region-from-polygon (points fill-rule)
33   (with-foreign-boxed-array (n pts point points)
34     (gdk-region-polygon pts n fill-rule)))
35
36 (export 'region-from-polygon)
37
38 (defcfun (region-from-rectangle "gdk_region_rectangle") (g-boxed-foreign region :return)
39   (rectangle (g-boxed-foreign rectangle)))
40
41 (export 'region-from-rectangle)
42
43 (defcfun gdk-region-get-clipbox :void
44   (region (g-boxed-foreign region))
45   (rectangle (g-boxed-foreign rectangle)))
46
47 (defun region-get-clipbox (region)
48   (let ((clipbox (make-rectangle)))
49     (gdk-region-get-clipbox region clipbox)
50     clipbox))
51
52 (export 'region-get-clipbox)
53
54 (defcfun gdk-region-get-rectangles :void
55   (region (g-boxed-foreign region))
56   (rectangles :pointer)
57   (n-rectangles :pointer))
58
59 (defun region-get-rectangles (region)
60   (with-foreign-objects ((rectangles-ptr :pointer) (n-rectangles-ptr :int))
61     (gdk-region-get-rectangles region rectangles-ptr n-rectangles-ptr)
62     (let ((n (mem-ref n-rectangles-ptr :int))
63           (rectangles (mem-ref rectangles-ptr :pointer)))
64       (prog1
65           (iter (for i from 0 below n)
66                 (for rect = (convert-from-foreign (inc-pointer rectangles (* i (foreign-type-size 'rectangle-cstruct)))
67                                                   '(g-boxed-foreign rectangle)))
68                 (collect rect))
69         (glib:g-free rectangles)))))
70
71 (export 'region-get-rectangles)
72
73 (defcfun (region-is-empty "gdk_region_empty") :boolean
74   (region (g-boxed-foreign region)))
75
76 (export 'region-is-empty)
77
78 (defcfun (region= "gdk_region_equal") :boolean
79   (region-1 (g-boxed-foreign region))
80   (region-2 (g-boxed-foreign region)))
81
82 (export 'region=)
83
84 (defcfun (region-point-in "gdk_region_point_in") :boolean
85   (region (g-boxed-foreign region))
86   (x :int)
87   (y :int))
88
89 (export 'region-point-in)
90
91 (defcfun (region-rect-in "gdk_region_rect_in") overlap-type
92   (region (g-boxed-foreign region))
93   (rectangle (g-boxed-foreign rectangle)))
94
95 (export 'region-rect-in)
96
97 (defcfun (region-offset "gdk_region_offset") :void
98   (region (g-boxed-foreign region))
99   (dx :int)
100   (dy :int))
101
102 (export 'region-offset)
103
104 (defcfun (region-shrink "gdk_region_shrink") :void
105   (region (g-boxed-foreign region))
106   (dx :int)
107   (dy :int))
108
109 (export 'region-shrink)
110
111 (defcfun (region-union-with-rect "gdk_region_union_with_rect") :void
112   (region (g-boxed-foreign region))
113   (rect (g-boxed-foreign rectangle)))
114
115 (export 'region-union-with-rect)
116
117 (defcfun (region-intersect "gdk_region_intersect") :void
118   (target (g-boxed-foreign region))
119   (source (g-boxed-foreign region)))
120
121 (export 'region-intersect)
122
123 (defcfun (region-union "gdk_region_union") :void
124   (target (g-boxed-foreign region))
125   (source (g-boxed-foreign region)))
126
127 (export 'region-union)
128
129 (defcfun (region-subtract "gdk_region_subtract") :void
130   (target (g-boxed-foreign region))
131   (source (g-boxed-foreign region)))
132
133 (export 'region-subtract)
134
135 (defcfun (region-xor "gdk_region_xor") :void
136   (target (g-boxed-foreign region))
137   (source (g-boxed-foreign region)))
138
139 (export 'region-xor)
140
141 (defcallback gdk-span-func-callback :void
142     ((span (g-boxed-foreign span)) (data :pointer))
143   (let ((fn (stable-pointer-value data)))
144     (funcall fn span)))
145
146 (defcfun gdk-region-spans-intersect-foreach :void
147   (region (g-boxed-foreign region))
148   (spans :pointer)
149   (n-spans :int)
150   (sorted :boolean)
151   (function :pointer)
152   (data :pointer))
153
154 (defun region-spans-intersect-foreach (region spans sorted fn)
155   (with-stable-pointer (ptr fn)
156     (with-foreign-boxed-array (n spans-ptr span spans)
157       (gdk-region-spans-intersect-foreach region spans-ptr n sorted (callback gdk-region-spans-intersect-foreach) ptr))))
158
159 (export 'region-spans-intersect-foreach)