Mercurial > hg > xemacs-beta
comparison src/device.h @ 412:697ef44129c6 r21-2-14
Import from CVS: tag r21-2-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:20:41 +0200 |
parents | de805c49cfc1 |
children | 95016f13131a |
comparison
equal
deleted
inserted
replaced
411:12e008d41344 | 412:697ef44129c6 |
---|---|
22 | 22 |
23 /* Synched up with: Not in FSF. */ | 23 /* Synched up with: Not in FSF. */ |
24 | 24 |
25 /* Written by Chuck Thompson and Ben Wing. */ | 25 /* Written by Chuck Thompson and Ben Wing. */ |
26 | 26 |
27 #ifndef INCLUDED_device_h_ | 27 #ifndef _XEMACS_DEVICE_H_ |
28 #define INCLUDED_device_h_ | 28 #define _XEMACS_DEVICE_H_ |
29 | 29 |
30 #include "console.h" | 30 #include "console.h" |
31 | 31 |
32 /* This should really be in redisplay.h but by putting it here we | 32 /* This should really be in redisplay.h but by putting it here we |
33 won't have to ensure that redisplay.h is always included before | 33 won't have to ensure that redisplay.h is always included before |
166 unsigned int extents_changed :1; | 166 unsigned int extents_changed :1; |
167 unsigned int faces_changed :1; | 167 unsigned int faces_changed :1; |
168 unsigned int frame_changed :1; | 168 unsigned int frame_changed :1; |
169 unsigned int glyphs_changed :1; | 169 unsigned int glyphs_changed :1; |
170 unsigned int subwindows_changed :1; | 170 unsigned int subwindows_changed :1; |
171 unsigned int subwindows_state_changed :1; | |
172 unsigned int icon_changed :1; | 171 unsigned int icon_changed :1; |
173 unsigned int menubar_changed :1; | 172 unsigned int menubar_changed :1; |
174 unsigned int modeline_changed :1; | 173 unsigned int modeline_changed :1; |
175 unsigned int point_changed :1; | 174 unsigned int point_changed :1; |
176 unsigned int size_changed :1; | 175 unsigned int size_changed :1; |
177 unsigned int gutter_changed :1; | |
178 unsigned int toolbar_changed :1; | 176 unsigned int toolbar_changed :1; |
179 unsigned int windows_changed :1; | 177 unsigned int windows_changed :1; |
180 unsigned int windows_structure_changed :1; | 178 unsigned int windows_structure_changed :1; |
181 | 179 |
182 unsigned int locked :1; | 180 unsigned int locked :1; |
219 | 217 |
220 DECLARE_LRECORD (device, struct device); | 218 DECLARE_LRECORD (device, struct device); |
221 #define XDEVICE(x) XRECORD (x, device, struct device) | 219 #define XDEVICE(x) XRECORD (x, device, struct device) |
222 #define XSETDEVICE(x, p) XSETRECORD (x, p, device) | 220 #define XSETDEVICE(x, p) XSETRECORD (x, p, device) |
223 #define DEVICEP(x) RECORDP (x, device) | 221 #define DEVICEP(x) RECORDP (x, device) |
222 #define GC_DEVICEP(x) GC_RECORDP (x, device) | |
224 #define CHECK_DEVICE(x) CHECK_RECORD (x, device) | 223 #define CHECK_DEVICE(x) CHECK_RECORD (x, device) |
225 #define CONCHECK_DEVICE(x) CONCHECK_RECORD (x, device) | 224 #define CONCHECK_DEVICE(x) CONCHECK_RECORD (x, device) |
226 | 225 |
227 #define CHECK_LIVE_DEVICE(x) do { \ | 226 #define CHECK_LIVE_DEVICE(x) do { \ |
228 CHECK_DEVICE (x); \ | 227 CHECK_DEVICE (x); \ |
236 } while (0) | 235 } while (0) |
237 | 236 |
238 #define DEVICE_TYPE_P(d, type) EQ (DEVICE_TYPE (d), Q##type) | 237 #define DEVICE_TYPE_P(d, type) EQ (DEVICE_TYPE (d), Q##type) |
239 | 238 |
240 #ifdef ERROR_CHECK_TYPECHECK | 239 #ifdef ERROR_CHECK_TYPECHECK |
241 INLINE_HEADER struct device * | 240 INLINE struct device * |
242 error_check_device_type (struct device *d, Lisp_Object sym); | 241 error_check_device_type (struct device *d, Lisp_Object sym); |
243 INLINE_HEADER struct device * | 242 INLINE struct device * |
244 error_check_device_type (struct device *d, Lisp_Object sym) | 243 error_check_device_type (struct device *d, Lisp_Object sym) |
245 { | 244 { |
246 assert (EQ (DEVICE_TYPE (d), sym)); | 245 assert (EQ (DEVICE_TYPE (d), sym)); |
247 return d; | 246 return d; |
248 } | 247 } |
249 # define DEVICE_TYPE_DATA(d, type) \ | 248 # define DEVICE_TYPE_DATA(d, type) \ |
250 ((struct type##_device *) error_check_device_type (d, Q##type)->device_data) | 249 ((struct type##_device *) (error_check_device_type (d, Q##type))->device_data) |
251 #else | 250 #else |
252 # define DEVICE_TYPE_DATA(d, type) \ | 251 # define DEVICE_TYPE_DATA(d, type) \ |
253 ((struct type##_device *) (d)->device_data) | 252 ((struct type##_device *) (d)->device_data) |
254 #endif | 253 #endif |
255 | 254 |
268 type))) \ | 267 type))) \ |
269 x = wrong_type_argument \ | 268 x = wrong_type_argument \ |
270 (type##_console_methods->predicate_symbol, x); \ | 269 (type##_console_methods->predicate_symbol, x); \ |
271 } while (0) | 270 } while (0) |
272 | 271 |
273 #define DEVICE_DISPLAY_P(dev) \ | |
274 (DEVICE_LIVE_P (dev) && \ | |
275 (MAYBE_INT_DEVMETH (dev, \ | |
276 device_implementation_flags, ()) \ | |
277 & XDEVIMPF_IS_A_PRINTER) ? 0 : 1) | |
278 | |
279 #define CHECK_DISPLAY_DEVICE(dev) \ | |
280 do { \ | |
281 CHECK_DEVICE (dev); \ | |
282 if (!(DEVICEP (dev) \ | |
283 && DEVICE_DISPLAY_P (XDEVICE (dev)))) \ | |
284 dead_wrong_type_argument (Qdisplay, dev); \ | |
285 } while (0) | |
286 | |
287 #define CONCHECK_DISPLAY_DEVICE(dev) \ | |
288 do { \ | |
289 CONCHECK_DEVICE (dev); \ | |
290 if (!(DEVICEP (dev) \ | |
291 && DEVICE_DISPLAY_P (XDEVICE (dev)))) \ | |
292 wrong_type_argument (Qdisplay, dev); \ | |
293 } while (0) | |
294 | |
295 #define DEVICE_PRINTER_P(dev) \ | |
296 (DEVICE_LIVE_P (dev) && !DEVICE_DISPLAY_P (dev)) | |
297 | |
298 #define CHECK_PRINTER_DEVICE(dev) \ | |
299 do { \ | |
300 CHECK_DEVICE (dev); \ | |
301 if (!(DEVICEP (dev) \ | |
302 && DEVICE_PRINTER_P (XDEVICE (dev)))) \ | |
303 dead_wrong_type_argument (Qprinter, dev); \ | |
304 } while (0) | |
305 | |
306 #define CONCHECK_PRINTER_DEVICE(dev) \ | |
307 do { \ | |
308 CONCHECK_DEVICE (dev); \ | |
309 if (!(DEVICEP (dev) \ | |
310 && DEVICE_PRINTER_P (XDEVICE (dev)))) \ | |
311 wrong_type_argument (Qprinter, dev); \ | |
312 } while (0) | |
313 | |
314 /* #### These should be in the device-*.h files but there are | 272 /* #### These should be in the device-*.h files but there are |
315 too many places where the abstraction is broken. Need to | 273 too many places where the abstraction is broken. Need to |
316 fix. */ | 274 fix. */ |
317 | 275 |
318 #define DEVICE_X_P(dev) CONSOLE_TYPESYM_X_P (DEVICE_TYPE (dev)) | 276 #define DEVICE_X_P(dev) CONSOLE_TYPESYM_X_P (DEVICE_TYPE (dev)) |
333 | 291 |
334 #define DEVICE_WIN_P(dev) CONSOLE_TYPESYM_WIN_P (DEVICE_TYPE (dev)) | 292 #define DEVICE_WIN_P(dev) CONSOLE_TYPESYM_WIN_P (DEVICE_TYPE (dev)) |
335 | 293 |
336 EXFUN (Fdevice_console, 1); | 294 EXFUN (Fdevice_console, 1); |
337 EXFUN (Fdevice_name, 1); | 295 EXFUN (Fdevice_name, 1); |
338 EXFUN (Ffind_device, 2); | |
339 EXFUN (Fmake_device, 3); | 296 EXFUN (Fmake_device, 3); |
340 EXFUN (Fselected_device, 1); | 297 EXFUN (Fselected_device, 1); |
341 | 298 |
342 extern Lisp_Object Qcreate_device_hook, Qdelete_device_hook, Qgrayscale; | 299 extern Lisp_Object Qcreate_device_hook, Qdelete_device_hook, Qgrayscale; |
343 extern Lisp_Object Qinit_post_tty_win, Qmono, Vdefault_x_device; | 300 extern Lisp_Object Qinit_post_tty_win, Qmono, Vdefault_x_device; |
388 ((void) (glyphs_changed = (d)->glyphs_changed = 1)) | 345 ((void) (glyphs_changed = (d)->glyphs_changed = 1)) |
389 | 346 |
390 #define MARK_DEVICE_SUBWINDOWS_CHANGED(d) \ | 347 #define MARK_DEVICE_SUBWINDOWS_CHANGED(d) \ |
391 ((void) (subwindows_changed = (d)->subwindows_changed = 1)) | 348 ((void) (subwindows_changed = (d)->subwindows_changed = 1)) |
392 | 349 |
393 #define MARK_DEVICE_SUBWINDOWS_STATE_CHANGED(d) \ | |
394 ((void) (subwindows_state_changed = (d)->subwindows_state_changed = 1)) | |
395 | |
396 #define MARK_DEVICE_TOOLBARS_CHANGED(d) \ | 350 #define MARK_DEVICE_TOOLBARS_CHANGED(d) \ |
397 ((void) (toolbar_changed = (d)->toolbar_changed = 1)) | 351 ((void) (toolbar_changed = (d)->toolbar_changed = 1)) |
398 | |
399 #define MARK_DEVICE_GUTTERS_CHANGED(d) \ | |
400 ((void) (gutter_changed = (d)->gutter_changed = 1)) | |
401 | 352 |
402 #define MARK_DEVICE_SIZE_CHANGED(d) \ | 353 #define MARK_DEVICE_SIZE_CHANGED(d) \ |
403 ((void) (size_changed = (d)->size_changed = 1)) | 354 ((void) (size_changed = (d)->size_changed = 1)) |
404 | 355 |
405 #define MARK_DEVICE_FRAMES_FACES_CHANGED(d) do { \ | 356 #define MARK_DEVICE_FRAMES_FACES_CHANGED(d) do { \ |
408 DEVICE_FRAME_LOOP (frmcons, mdffc_d) \ | 359 DEVICE_FRAME_LOOP (frmcons, mdffc_d) \ |
409 XFRAME (XCAR (frmcons))->faces_changed = 1; \ | 360 XFRAME (XCAR (frmcons))->faces_changed = 1; \ |
410 MARK_DEVICE_FACES_CHANGED (mdffc_d); \ | 361 MARK_DEVICE_FACES_CHANGED (mdffc_d); \ |
411 } while (0) | 362 } while (0) |
412 | 363 |
413 #define MARK_DEVICE_FRAMES_GLYPHS_CHANGED(d) do { \ | |
414 struct device *mdffc_d = (d); \ | |
415 Lisp_Object frmcons; \ | |
416 DEVICE_FRAME_LOOP (frmcons, mdffc_d) \ | |
417 XFRAME (XCAR (frmcons))->glyphs_changed = 1; \ | |
418 MARK_DEVICE_GLYPHS_CHANGED (mdffc_d); \ | |
419 } while (0) | |
420 | |
421 #define MARK_DEVICE_FRAME_CHANGED(d) \ | 364 #define MARK_DEVICE_FRAME_CHANGED(d) \ |
422 ((void) (frame_changed = (d)->frame_changed = 1)) | 365 ((void) (frame_changed = (d)->frame_changed = 1)) |
423 | 366 |
424 #define MARK_DEVICE_WINDOWS_CHANGED(d) \ | 367 #define MARK_DEVICE_WINDOWS_CHANGED(d) \ |
425 ((void) (windows_changed = (d)->windows_changed = 1)) | 368 ((void) (windows_changed = (d)->windows_changed = 1)) |
426 | 369 |
427 #define MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED(d) \ | 370 #define MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED(d) \ |
428 ((void) (windows_structure_changed = (d)->windows_structure_changed = 1)) | 371 ((void) (windows_structure_changed = (d)->windows_structure_changed = 1)) |
429 | 372 |
430 /* #### unify this with DOMAIN_DEVICE once the latter has image instances | |
431 expunged from it. */ | |
432 /* This turns out to be used heavily so we make it a macro to make it | 373 /* This turns out to be used heavily so we make it a macro to make it |
433 inline. Also, the majority of the time the object will turn out to | 374 inline. Also, the majority of the time the object will turn out to |
434 be a window so we move it from being checked last to being checked | 375 be a window so we move it from being checked last to being checked |
435 first. */ | 376 first. */ |
436 #define DFW_DEVICE(obj) \ | 377 #define DFW_DEVICE(obj) \ |
462 Lisp_Object find_nonminibuffer_frame_not_on_device (Lisp_Object device); | 403 Lisp_Object find_nonminibuffer_frame_not_on_device (Lisp_Object device); |
463 void set_device_selected_frame (struct device *d, Lisp_Object frame); | 404 void set_device_selected_frame (struct device *d, Lisp_Object frame); |
464 Lisp_Object domain_device_type (Lisp_Object domain); | 405 Lisp_Object domain_device_type (Lisp_Object domain); |
465 int window_system_pixelated_geometry (Lisp_Object domain); | 406 int window_system_pixelated_geometry (Lisp_Object domain); |
466 | 407 |
467 #endif /* INCLUDED_device_h_ */ | 408 #endif /* _XEMACS_DEVICE_H_ */ |