chiark / gitweb /
Library extensions not hard coded any more
[clg] / gdk / gdktypes.lisp
CommitLineData
112ac1d3 1;; Common Lisp bindings for GTK+ v2.x
4bd4e583 2;; Copyright 2000-2006 Espen S. Johnsen <espen@users.sf.net>
560af5c5 3;;
112ac1d3 4;; Permission is hereby granted, free of charge, to any person obtaining
5;; a copy of this software and associated documentation files (the
6;; "Software"), to deal in the Software without restriction, including
7;; without limitation the rights to use, copy, modify, merge, publish,
8;; distribute, sublicense, and/or sell copies of the Software, and to
9;; permit persons to whom the Software is furnished to do so, subject to
10;; the following conditions:
560af5c5 11;;
112ac1d3 12;; The above copyright notice and this permission notice shall be
13;; included in all copies or substantial portions of the Software.
560af5c5 14;;
112ac1d3 15;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18;; IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19;; CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
560af5c5 22
34abe734 23;; $Id: gdktypes.lisp,v 1.26 2006-08-30 11:08:12 espen Exp $
560af5c5 24
25(in-package "GDK")
26
5681ca3c 27(eval-when (:compile-toplevel :load-toplevel :execute)
9adccb27 28 (init-types-in-library #.(concatenate 'string
29 (pkg-config:pkg-variable "gtk+-2.0" "libdir")
34abe734 30 "/libgdk-x11-2.0." asdf:*dso-extension*) :prefix ("gdk_" "_gdk_"))
9adccb27 31 (init-types-in-library #.(concatenate 'string
32 (pkg-config:pkg-variable "gtk+-2.0" "libdir")
34abe734 33 "/libgdk_pixbuf-2.0." asdf:*dso-extension*) :prefix "gdk_"))
9adccb27 34
560af5c5 35
e34e751a 36(defclass color (boxed)
560af5c5 37 ((pixel
38 :allocation :alien
d02a77d7 39 :type (unsigned 32))
560af5c5 40 (red
41 :allocation :alien
42 :accessor color-red
d02a77d7 43 :type (unsigned 16))
560af5c5 44 (green
4bd4e583 45 :allocation :alien
ceebb351 46 :accessor color-green
d02a77d7 47 :type (unsigned 16))
560af5c5 48 (blue
4bd4e583 49 :allocation :alien
560af5c5 50 :accessor color-blue
d02a77d7 51 :type (unsigned 16)))
4bd4e583 52 (:metaclass boxed-class)
53 (:packed t))
560af5c5 54
55
06cb4af7 56(deftype point () '(vector int 2))
57(deftype segment () '(vector int 4))
58(deftype trapezoid () '(vector double-float 6))
628fd576 59(deftype atom () 'unsigned-int)
06cb4af7 60
61
62;; Could this just as well have been a vector?
63(defclass rectangle (boxed)
64 ((x
65 :allocation :alien
66 :accessor rectangle-x
67 :initarg :x
68 :type int)
69 (y
70 :allocation :alien
71 :accessor rectangle-y
72 :initarg :y
73 :type int)
74 (width
75 :allocation :alien
76 :accessor rectangle-width
77 :initarg :width
78 :type int)
79 (height
80 :allocation :alien
81 :accessor rectangle-height
82 :initarg :height
83 :type int))
dfa4f314 84 (:metaclass boxed-class))
06cb4af7 85
3a64da99 86(defclass region (struct)
87 ()
88 (:metaclass struct-class)
89 (:ref %region-copy)
90 (:unref %region-destroy))
91
92
4bd4e583 93(register-type 'event-mask '|gdk_event_mask_get_type|)
94(define-flags-type event-mask
95 (:exposure 2)
96 :pointer-motion
97 :pointer-motion-hint
98 :button-motion
99 :button1-motion
100 :button2-motion
101 :button3-motion
102 :button-press
103 :button-release
104 :key-press
105 :key-release
106 :enter-notify
107 :leave-notify
108 :focus-change
109 :structure
110 :property-change
111 :visibility-notify
112 :proximity-in
113 :proximity-out
114 :substructure
115 :scroll
116 (:all-events #x3FFFFE))
06cb4af7 117
4bd4e583 118(register-type 'event-mask '|gdk_modifier_type_get_type|)
119(define-flags-type modifier-type
120 :shift :lock :control :mod1 :mod2 :mod3 :mod4 :mod5
121 :button1 :button2 :button3 :button4 :button5
122 (:release #.(ash 1 30)))
906b440e 123
124
73572c12 125(define-types-by-introspection "Gdk"
126 ("GdkFunction" :type gc-function)
127 ("GdkWMDecoration" :type wm-decoration)
128 ("GdkWMFunction" :type wm-function)
129 ("GdkGC" :type gc)
130 ("GdkGCX11" :type gc-x11)
131 ("GdkGCValuesMask" :type gc-values-mask)
132 ("GdkDrawableImplX11" :ignore t)
133 ("GdkWindowImplX11" :ignore t)
134 ("GdkPixmapImplX11" :ignore t)
135 ("GdkGCX11" :ignore t)
136 ("GdkColor" :ignore t)
137 ("GdkEvent" :ignore t)
1f091d01 138 ("GdkRectangle" :ignore t)
73572c12 139 ("GdkCursor" :ignore t)
140 ("GdkFont" :ignore t) ; deprecated
4280ef98 141 ("GdkEventMask" :ignore t) ; manually defined
906b440e 142 ("GdkModifierType" :ignore t) ; manually defined
4280ef98 143
4fac77f8 144 ("GdkDisplay"
145 :slots
146 ((name
147 :allocation :virtual
148 :getter "gdk_display_get_name"
149 :reader display-name
150 :type (copy-of string))
151 (screens
152 :allocation :virtual
153 :getter display-screens)
154 (devices
155 :allocation :virtual
156 :getter "gdk_display_list_devices"
157 :reader display-devices
158 :type (copy-of (glist device)))))
159
73572c12 160 ("GdkDrawable"
161 :slots
162 ((display
163 :allocation :virtual
164 :getter "gdk_drawable_get_display"
165 :reader drawable-display
166 :type display)
167 (screen
168 :allocation :virtual
169 :getter "gdk_drawable_get_screen"
170 :reader drawable-screen
171 :type screen)
172 (visual
173 :allocation :virtual
174 :getter "gdk_drawable_get_visual"
175 :reader drawable-visual
176 :type visual)
177 (colormap
178 :allocation :virtual
179 :getter "gdk_drawable_get_colormap"
180 :setter "gdk_drawable_set_colormap"
181 :unbound nil
182 :accessor drawable-colormap
183 :initarg :colormap
184 :type colormap)
185 (depth
186 :allocation :virtual
187 :getter "gdk_drawable_get_depth"
188 :reader drawable-depth
189 :type int)
190 (with
191 :allocation :virtual
192 :getter drawable-width)
193 (height
194 :allocation :virtual
195 :getter drawable-height)))
196
197 ("GdkWindow"
198 :slots
199 ((state
200 :allocation :virtual
201 :getter "gdk_window_get_state"
202 :reader window-state
203 :type window-state)
204 (parent
205 :allocation :virtual
206 :getter "gdk_window_get_parent"
207 :reader window-parent
208 :type window)
209 (toplevel
210 :allocation :virtual
211 :getter "gdk_window_get_toplevel"
212 :reader window-toplevel
213 :type window)
214 (children
215 :allocation :virtual
216 :getter "gdk_window_get_children"
217 :reader window-children
218 :type (glist window))
219 (events
220 :allocation :virtual
221 :getter "gdk_window_get_events"
222 :setter "gdk_window_set_events"
223 :accessor window-events
224 :type event-mask)
225 (group
226 :allocation :virtual
227 :getter "gdk_window_get_group"
228 :setter "gdk_window_set_group"
229 :unbound nil
230 :accessor window-group
3a64da99 231 :type window)
232 #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.10.0")
233 (type-hint
234 :allocation :virtual
235 :getter "gdk_window_get_type_hint"
236 :setter "gdk_window_set_type_hint"
237 :accessor window-type-hint
238 :type window-type-hint)
239 #?-(pkg-exists-p "gtk+-2.0" :atleast-version "2.10.0")
240 (type-hint
241 :allocation :virtual
242 :getter "gdk_window_get_type_hint"
243 :accessor window-type-hint
244 :type window-type-hint)
245 (decorations
246 :allocation :virtual
247 :getter %window-decoration-getter
248 :setter "gdk_window_set_decoration"
249 :boundp %window-decoration-boundp
250 :accessor window-decorations
251 :type wm-decoration))))
560af5c5 252
560af5c5 253
e34e751a 254(deftype bitmap () 'pixmap)
560af5c5 255
73572c12 256(defclass cursor (boxed)
560af5c5 257 ((type
258 :allocation :alien
06cb4af7 259 :reader cursor-type
260 :type cursor-type)
261 (ref-count
262 :allocation :alien
263 :type unsigned-int)
264 (display
265 :allocation :virtual
266 :getter "gdk_cursor_get_display"
267 :reader cursor-display
268 :type display))
4bd4e583 269 (:metaclass boxed-class)
270 (:ref %cursor-ref)
271 (:unref %cursor-unref))
4fc1b6fe 272
3a63ef2a 273
274(defclass geometry (struct)
275 ((min-width
276 :allocation :alien
277 :accessor geometry-min-width
278 :initarg :min-width
279 :type int)
280 (min-height
281 :allocation :alien
282 :accessor geometry-min-height
283 :initarg :min-height
284 :type int)
285 (max-width
286 :allocation :alien
287 :accessor geometry-max-width
288 :initarg :max-width
289 :type int)
290 (max-height
291 :allocation :alien
292 :accessor geometry-max-height
293 :initarg :max-height
294 :type int)
295 (base-width
296 :allocation :alien
297 :accessor geometry-base-width
298 :initarg :base-width
299 :type int)
300 (base-height
301 :allocation :alien
302 :accessor geometry-base-height
303 :initarg :base-height
304 :type int)
305 (width-inc
306 :allocation :alien
307 :accessor geometry-width-inc
308 :initarg :width-inc
309 :type int)
310 (height-inc
311 :allocation :alien
312 :accessor geometry-height-inc
313 :initarg :height-inc
314 :type int)
315 (min-aspect
316 :allocation :alien
317 :accessor geometry-min-aspect
318 :initarg :min-aspect
319 :type double-float)
320 (max-aspect
321 :allocation :alien
322 :accessor geometry-max-aspect
323 :initarg :max-aspect
324 :type double-float)
325 (gravity
326 :allocation :alien
327 :accessor geometry-gravity
328 :initarg :gravity
329 :type gravity))
330 (:metaclass struct-class))
906b440e 331
4b2733dc 332(deftype native-window () '(unsigned 32))