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 | |
eade7c08 |
23 | ;; $Id: gdktypes.lisp,v 1.27 2006-09-05 13:14:10 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 | |
eade7c08 |
118 | (register-type 'modifier-type '|gdk_modifier_type_get_type|) |
4bd4e583 |
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)) |