Add error handling to gtk:ui-manager-load-from-file and gtk:ui-manager-load-from...
[cl-gtk2.git] / gdk / gdk.region.lisp
blobb6f7e4e9591d763f50c1690f9d5baeb8f7a45c92
1 (in-package :gdk)
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)))
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)))
13 (export 'rectangle-intersect)
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)))
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)))
25 (export 'rectangle-union)
27 (defcfun gdk-region-polygon (g-boxed-foreign region :return)
28 (points :pointer)
29 (n-points :int)
30 (fill-rule gdk-fill-rule))
32 (defun region-from-polygon (points fill-rule)
33 (let ((n (length points)))
34 (with-foreign-object (pts 'point-cstruct n)
35 (let ((i 0))
36 (map nil (lambda (pt)
37 (gobject::copy-slots-to-native
39 (inc-pointer pts (* i (foreign-type-size 'point-cstruct)))
40 (gobject::g-boxed-cstruct-wrapper-info-cstruct-description (gobject::get-g-boxed-foreign-info 'point)))
41 (incf i))
42 points))
43 (gdk-region-polygon pts n fill-rule))))
45 (export 'region-from-polygon)
47 (defcfun (region-from-rectangle "gdk_region_rectangle") (g-boxed-foreign region :return)
48 (rectangle (g-boxed-foreign rectangle)))
50 (export 'region-from-rectangle)
52 (defcfun gdk-region-get-clipbox :void
53 (region (g-boxed-foreign region))
54 (rectangle (g-boxed-foreign rectangle)))
56 (defun region-get-clipbox (region)
57 (let ((clipbox (make-rectangle)))
58 (gdk-region-get-clipbox region clipbox)
59 clipbox))
61 (export 'region-get-clipbox)
63 (defcfun gdk-region-get-rectangles :void
64 (region (g-boxed-foreign region))
65 (rectangles :pointer)
66 (n-rectangles :pointer))
68 (defun region-get-rectangles (region)
69 (with-foreign-objects ((rectangles-ptr :pointer) (n-rectangles-ptr :int))
70 (gdk-region-get-rectangles region rectangles-ptr n-rectangles-ptr)
71 (let ((n (mem-ref n-rectangles-ptr :int))
72 (rectangles (mem-ref rectangles-ptr :pointer)))
73 (prog1
74 (iter (for i from 0 below n)
75 (for rect = (convert-from-foreign (inc-pointer rectangles (* i (foreign-type-size 'rectangle-cstruct)))
76 '(g-boxed-foreign rectangle)))
77 (collect rect))
78 (glib:g-free rectangles)))))
80 (export 'region-get-rectangles)
82 (defcfun (region-is-empty "gdk_region_is_empty") :boolean
83 (region (g-boxed-foreign region)))
85 (export 'region-is-empty)
87 (defcfun (region= "gdk_region_equal") :boolean
88 (region-1 (g-boxed-foreign region))
89 (region-2 (g-boxed-foreign region)))
91 (export 'region=)
93 (defcfun (region-point-in "gdk_region_point_in") :boolean
94 (region (g-boxed-foreign region))
95 (x :int)
96 (y :int))
98 (export 'region-point-in)
100 (defcfun (region-rect-in "gdk_region_rect_in") overlap-type
101 (region (g-boxed-foreign region))
102 (rectangle (g-boxed-foreign rectangle)))
104 (export 'region-rect-in)
106 (defcfun (region-offset "gdk_region_offset") :void
107 (region (g-boxed-foreign region))
108 (dx :int)
109 (dy :int))
111 (export 'region-offset)
113 (defcfun (region-shrink "gdk_region_shrink") :void
114 (region (g-boxed-foreign region))
115 (dx :int)
116 (dy :int))
118 (export 'region-shrink)
120 (defcfun (region-union-with-rect "gdk_region_union_with_rect") :void
121 (region (g-boxed-foreign region))
122 (rect (g-boxed-foreign rectangle)))
124 (export 'region-union-with-rect)
126 (defcfun (region-intersect "gdk_region_intersect") :void
127 (target (g-boxed-foreign region))
128 (source (g-boxed-foreign region)))
130 (export 'region-intersect)
132 (defcfun (region-union "gdk_region_union") :void
133 (target (g-boxed-foreign region))
134 (source (g-boxed-foreign region)))
136 (export 'region-union)
138 (defcfun (region-subtract "gdk_region_subtract") :void
139 (target (g-boxed-foreign region))
140 (source (g-boxed-foreign region)))
142 (export 'region-subtract)
144 (defcfun (region-xor "gdk_region_xor") :void
145 (target (g-boxed-foreign region))
146 (source (g-boxed-foreign region)))
148 (export 'region-xor)
150 (defcallback gdk-span-func-callback :void
151 ((span (g-boxed-foreign span)) (data :pointer))
152 (let ((fn (stable-pointer-value data)))
153 (funcall fn span)))
155 (defcfun gdk-region-spans-intersect-foreach :void
156 (region (g-boxed-foreign region))
157 (spans :pointer)
158 (n-spans :int)
159 (sorted :boolean)
160 (function :pointer)
161 (data :pointer))
163 (defun region-spans-intersect-foreach (region spans sorted fn)
164 (let ((n (length spans)))
165 (with-stable-pointer (ptr fn)
166 (with-foreign-object (spans-ptr 'span-cstruct n)
167 (let ((i 0))
168 (map nil
169 (lambda (span)
170 (gobject::copy-slots-to-native
171 span
172 (inc-pointer spans-ptr (* i (foreign-type-size 'span-cstruct)))
173 (gobject::g-boxed-cstruct-wrapper-info-cstruct-description (gobject::get-g-boxed-foreign-info 'span)))
174 (incf i))
175 spans))
176 (gdk-region-spans-intersect-foreach region spans-ptr n sorted (callback gdk-region-spans-intersect-foreach) ptr)))))
178 (export 'region-spans-intersect-foreach)