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_ */