X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Fdevice.h;h=a870bbf446fb6c7b9db7d07d0b906b115b70f0b1;hp=aad12fdd0768807c8354c1e3c01a2adf54eb46f0;hb=21db8709c0c2dcedbd278c7fe571290d5ce80a71;hpb=cb9f6f4eadc44f1becb32cbbd1db26449e347755 diff --git a/src/device.h b/src/device.h index aad12fd..a870bbf 100644 --- a/src/device.h +++ b/src/device.h @@ -24,8 +24,8 @@ Boston, MA 02111-1307, USA. */ /* Written by Chuck Thompson and Ben Wing. */ -#ifndef _XEMACS_DEVICE_H_ -#define _XEMACS_DEVICE_H_ +#ifndef INCLUDED_device_h_ +#define INCLUDED_device_h_ #include "console.h" @@ -48,6 +48,7 @@ struct pixel_to_glyph_translation_cache #define DEVICE_TYPE_NAME(d) ((d)->devmeths->name) #define DEVICE_TYPE(d) ((d)->devmeths->symbol) +#define DEVICE_IMPL_FLAG(d, f) CONMETH_IMPL_FLAG ((d)->devmeths, (f)) #define DEVICE_SPECIFIC_FRAME_PROPS(d) \ ((d)->devmeths->device_specific_frame_props) @@ -168,11 +169,13 @@ struct device unsigned int frame_changed :1; unsigned int glyphs_changed :1; unsigned int subwindows_changed :1; + unsigned int subwindows_state_changed :1; unsigned int icon_changed :1; unsigned int menubar_changed :1; unsigned int modeline_changed :1; unsigned int point_changed :1; unsigned int size_changed :1; + unsigned int gutter_changed :1; unsigned int toolbar_changed :1; unsigned int windows_changed :1; unsigned int windows_structure_changed :1; @@ -218,8 +221,8 @@ struct device DECLARE_LRECORD (device, struct device); #define XDEVICE(x) XRECORD (x, device, struct device) #define XSETDEVICE(x, p) XSETRECORD (x, p, device) +#define wrap_device(p) wrap_object (p) #define DEVICEP(x) RECORDP (x, device) -#define GC_DEVICEP(x) GC_RECORDP (x, device) #define CHECK_DEVICE(x) CHECK_RECORD (x, device) #define CONCHECK_DEVICE(x) CONCHECK_RECORD (x, device) @@ -237,16 +240,16 @@ DECLARE_LRECORD (device, struct device); #define DEVICE_TYPE_P(d, type) EQ (DEVICE_TYPE (d), Q##type) #ifdef ERROR_CHECK_TYPECHECK -INLINE struct device * +INLINE_HEADER struct device * error_check_device_type (struct device *d, Lisp_Object sym); -INLINE struct device * +INLINE_HEADER struct device * error_check_device_type (struct device *d, Lisp_Object sym) { assert (EQ (DEVICE_TYPE (d), sym)); return d; } # define DEVICE_TYPE_DATA(d, type) \ - ((struct type##_device *) (error_check_device_type (d, Q##type))->device_data) + ((struct type##_device *) error_check_device_type (d, Q##type)->device_data) #else # define DEVICE_TYPE_DATA(d, type) \ ((struct type##_device *) (d)->device_data) @@ -269,6 +272,45 @@ error_check_device_type (struct device *d, Lisp_Object sym) (type##_console_methods->predicate_symbol, x); \ } while (0) +#define DEVICE_DISPLAY_P(dev) \ + (DEVICE_LIVE_P (dev) && \ + !DEVICE_IMPL_FLAG (dev, XDEVIMPF_IS_A_PRINTER)) + +#define CHECK_DISPLAY_DEVICE(dev) \ + do { \ + CHECK_DEVICE (dev); \ + if (!(DEVICEP (dev) \ + && DEVICE_DISPLAY_P (XDEVICE (dev)))) \ + dead_wrong_type_argument (Qdisplay, dev); \ + } while (0) + +#define CONCHECK_DISPLAY_DEVICE(dev) \ + do { \ + CONCHECK_DEVICE (dev); \ + if (!(DEVICEP (dev) \ + && DEVICE_DISPLAY_P (XDEVICE (dev)))) \ + wrong_type_argument (Qdisplay, dev); \ + } while (0) + +#define DEVICE_PRINTER_P(dev) \ + (DEVICE_LIVE_P (dev) && !DEVICE_DISPLAY_P (dev)) + +#define CHECK_PRINTER_DEVICE(dev) \ + do { \ + CHECK_DEVICE (dev); \ + if (!(DEVICEP (dev) \ + && DEVICE_PRINTER_P (XDEVICE (dev)))) \ + dead_wrong_type_argument (Qprinter, dev); \ + } while (0) + +#define CONCHECK_PRINTER_DEVICE(dev) \ + do { \ + CONCHECK_DEVICE (dev); \ + if (!(DEVICEP (dev) \ + && DEVICE_PRINTER_P (XDEVICE (dev)))) \ + wrong_type_argument (Qprinter, dev); \ + } while (0) + /* #### These should be in the device-*.h files but there are too many places where the abstraction is broken. Need to fix. */ @@ -277,6 +319,10 @@ error_check_device_type (struct device *d, Lisp_Object sym) #define CHECK_X_DEVICE(z) CHECK_DEVICE_TYPE (z, x) #define CONCHECK_X_DEVICE(z) CONCHECK_DEVICE_TYPE (z, x) +#define DEVICE_GTK_P(dev) CONSOLE_TYPESYM_GTK_P (DEVICE_TYPE (dev)) +#define CHECK_GTK_DEVICE(z) CHECK_DEVICE_TYPE (z, gtk) +#define CONCHECK_GTK_DEVICE(z) CONCHECK_DEVICE_TYPE (z, gtk) + #define DEVICE_MSWINDOWS_P(dev) CONSOLE_TYPESYM_MSWINDOWS_P (DEVICE_TYPE (dev)) #define CHECK_MSWINDOWS_DEVICE(z) CHECK_DEVICE_TYPE (z, mswindows) #define CONCHECK_MSWINDOWS_DEVICE(z) CONCHECK_DEVICE_TYPE (z, mswindows) @@ -293,11 +339,12 @@ error_check_device_type (struct device *d, Lisp_Object sym) EXFUN (Fdevice_console, 1); EXFUN (Fdevice_name, 1); +EXFUN (Ffind_device, 2); EXFUN (Fmake_device, 3); EXFUN (Fselected_device, 1); extern Lisp_Object Qcreate_device_hook, Qdelete_device_hook, Qgrayscale; -extern Lisp_Object Qinit_post_tty_win, Qmono, Vdefault_x_device; +extern Lisp_Object Qinit_post_tty_win, Qmono, Vdefault_x_device, Vdefault_gtk_device; extern Lisp_Object Vdevice_class_list; int valid_device_class_p (Lisp_Object class); @@ -347,9 +394,15 @@ int valid_device_class_p (Lisp_Object class); #define MARK_DEVICE_SUBWINDOWS_CHANGED(d) \ ((void) (subwindows_changed = (d)->subwindows_changed = 1)) +#define MARK_DEVICE_SUBWINDOWS_STATE_CHANGED(d) \ + ((void) (subwindows_state_changed = (d)->subwindows_state_changed = 1)) + #define MARK_DEVICE_TOOLBARS_CHANGED(d) \ ((void) (toolbar_changed = (d)->toolbar_changed = 1)) +#define MARK_DEVICE_GUTTERS_CHANGED(d) \ + ((void) (gutter_changed = (d)->gutter_changed = 1)) + #define MARK_DEVICE_SIZE_CHANGED(d) \ ((void) (size_changed = (d)->size_changed = 1)) @@ -361,6 +414,14 @@ int valid_device_class_p (Lisp_Object class); MARK_DEVICE_FACES_CHANGED (mdffc_d); \ } while (0) +#define MARK_DEVICE_FRAMES_GLYPHS_CHANGED(d) do { \ + struct device *mdffc_d = (d); \ + Lisp_Object frmcons; \ + DEVICE_FRAME_LOOP (frmcons, mdffc_d) \ + XFRAME (XCAR (frmcons))->glyphs_changed = 1; \ + MARK_DEVICE_GLYPHS_CHANGED (mdffc_d); \ +} while (0) + #define MARK_DEVICE_FRAME_CHANGED(d) \ ((void) (frame_changed = (d)->frame_changed = 1)) @@ -370,6 +431,8 @@ int valid_device_class_p (Lisp_Object class); #define MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED(d) \ ((void) (windows_structure_changed = (d)->windows_structure_changed = 1)) +/* #### unify this with DOMAIN_DEVICE once the latter has image instances + expunged from it. */ /* This turns out to be used heavily so we make it a macro to make it inline. Also, the majority of the time the object will turn out to be a window so we move it from being checked last to being checked @@ -405,4 +468,4 @@ void set_device_selected_frame (struct device *d, Lisp_Object frame); Lisp_Object domain_device_type (Lisp_Object domain); int window_system_pixelated_geometry (Lisp_Object domain); -#endif /* _XEMACS_DEVICE_H_ */ +#endif /* INCLUDED_device_h_ */