Contents of release-21-2 in 1999-06-17-23.
[chise/xemacs-chise.git.1] / src / glyphs.h
index 97d825e..a0ff30a 100644 (file)
@@ -127,23 +127,23 @@ struct image_instantiator_methods
 
 /***** Calling an image-instantiator method *****/
 
-#define HAS_IIFORMAT_METH_P(mstruc, m) ((mstruc)->m##_method)
+#define HAS_IIFORMAT_METH_P(mstruc, m) (((mstruc)->m##_method) != 0)
 #define IIFORMAT_METH(mstruc, m, args) (((mstruc)->m##_method) args)
 
 /* Call a void-returning specifier method, if it exists */
-#define MAYBE_IIFORMAT_METH(mstruc, m, args)                                \
-if (mstruc)                                                    \
-do {                                                                        \
-  struct image_instantiator_methods *maybe_iiformat_meth_mstruc = (mstruc); \
-  if (HAS_IIFORMAT_METH_P (maybe_iiformat_meth_mstruc, m))                  \
-    IIFORMAT_METH (maybe_iiformat_meth_mstruc, m, args);                    \
+#define MAYBE_IIFORMAT_METH(mstruc, m, args)                   \
+do {                                                           \
+  struct image_instantiator_methods *MIM_mstruc = (mstruc);    \
+  if (MIM_mstruc && HAS_IIFORMAT_METH_P (MIM_mstruc, m))       \
+    IIFORMAT_METH (MIM_mstruc, m, args);                       \
 } while (0)
 
-#define MAYBE_IIFORMAT_DEVMETH(device, mstruc, m, args)                                \
-do {                                                                                   \
-  struct image_instantiator_methods *_mstruc = decode_ii_device (device, mstruc);      \
-  if (_mstruc)                                                                         \
-    MAYBE_IIFORMAT_METH(_mstruc, m, args);                                             \
+#define MAYBE_IIFORMAT_DEVMETH(device, mstruc, m, args)        \
+do {                                                   \
+  struct image_instantiator_methods *MID_mstruc =      \
+    decode_ii_device (device, mstruc);                 \
+  if (MID_mstruc)                                      \
+    MAYBE_IIFORMAT_METH(MID_mstruc, m, args);          \
 } while (0)
 
 
@@ -432,7 +432,7 @@ struct Lisp_Image_Instance
        Lisp_Object face; /* foreground and background colors */
        Lisp_Object type;
        Lisp_Object props;      /* properties */
-       struct gui_item gui_item;
+       Lisp_Object gui_item;   /* a list of gui_items */
       } widget;                        /* widgets are subwindows */
     } subwindow;
   } u;
@@ -472,13 +472,15 @@ struct Lisp_Image_Instance
   IMAGE_INSTANCE_SUBWINDOW_WIDTH(i)
 #define IMAGE_INSTANCE_WIDGET_HEIGHT(i) \
   IMAGE_INSTANCE_SUBWINDOW_HEIGHT(i)
-#define IMAGE_INSTANCE_WIDGET_CALLBACK(i) \
-  ((i)->u.subwindow.widget.gui_item.callback)
 #define IMAGE_INSTANCE_WIDGET_TYPE(i) ((i)->u.subwindow.widget.type)
 #define IMAGE_INSTANCE_WIDGET_PROPS(i) ((i)->u.subwindow.widget.props)
 #define IMAGE_INSTANCE_WIDGET_FACE(i) ((i)->u.subwindow.widget.face)
-#define IMAGE_INSTANCE_WIDGET_TEXT(i) ((i)->u.subwindow.widget.gui_item.name)
 #define IMAGE_INSTANCE_WIDGET_ITEM(i) ((i)->u.subwindow.widget.gui_item)
+#define IMAGE_INSTANCE_WIDGET_SINGLE_ITEM(i) \
+(CONSP (IMAGE_INSTANCE_WIDGET_ITEM (i)) ? \
+XCAR (IMAGE_INSTANCE_WIDGET_ITEM (i)) : \
+  IMAGE_INSTANCE_WIDGET_ITEM (i))
+#define IMAGE_INSTANCE_WIDGET_TEXT(i) XGUI_ITEM (IMAGE_INSTANCE_WIDGET_ITEM (i))->name
 
 #define XIMAGE_INSTANCE_DEVICE(i) \
   IMAGE_INSTANCE_DEVICE (XIMAGE_INSTANCE (i))
@@ -513,18 +515,18 @@ struct Lisp_Image_Instance
   IMAGE_INSTANCE_WIDGET_WIDTH (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_WIDGET_HEIGHT(i) \
   IMAGE_INSTANCE_WIDGET_HEIGHT (XIMAGE_INSTANCE (i))
-#define XIMAGE_INSTANCE_WIDGET_CALLBACK(i) \
-  IMAGE_INSTANCE_WIDGET_CALLBACK (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_WIDGET_TYPE(i) \
   IMAGE_INSTANCE_WIDGET_TYPE (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_WIDGET_PROPS(i) \
   IMAGE_INSTANCE_WIDGET_PROPS (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_WIDGET_FACE(i) \
   IMAGE_INSTANCE_WIDGET_FACE (XIMAGE_INSTANCE (i))
-#define XIMAGE_INSTANCE_WIDGET_TEXT(i) \
-  IMAGE_INSTANCE_WIDGET_TEXT (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_WIDGET_ITEM(i) \
   IMAGE_INSTANCE_WIDGET_ITEM (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_WIDGET_SINGLE_ITEM(i) \
+  IMAGE_INSTANCE_WIDGET_SINGLE_ITEM (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_WIDGET_TEXT(i) \
+  IMAGE_INSTANCE_WIDGET_TEXT (XIMAGE_INSTANCE (i))
 
 #define XIMAGE_INSTANCE_SUBWINDOW_WIDTH(i) \
   IMAGE_INSTANCE_SUBWINDOW_WIDTH (XIMAGE_INSTANCE (i))
@@ -620,13 +622,14 @@ DECLARE_LRECORD (glyph, struct Lisp_Glyph);
 #define XGLYPH_BASELINE(g) GLYPH_BASELINE (XGLYPH (g))
 #define XGLYPH_FACE(g) GLYPH_FACE (XGLYPH (g))
 
-extern Lisp_Object Qxpm;
+extern Lisp_Object Qxpm, Qxface;
 extern Lisp_Object Q_data, Q_file, Q_color_symbols, Qconst_glyph_variable;
-extern Lisp_Object Qxbm, Qedit, Qgroup, Qlabel, Qcombo, Qscrollbar;
+extern Lisp_Object Qxbm, Qedit, Qgroup, Qlabel, Qcombo, Qscrollbar, Qprogress;
+extern Lisp_Object Qtree, Qtab;
 extern Lisp_Object Q_mask_file, Q_mask_data, Q_hotspot_x, Q_hotspot_y;
 extern Lisp_Object Q_foreground, Q_background, Q_face, Q_descriptor, Q_group;
-extern Lisp_Object Q_width, Q_height, Q_pixel_width, Q_pixel_height;
-extern Lisp_Object Q_items, Q_properties, Qimage_conversion_error;
+extern Lisp_Object Q_width, Q_height, Q_pixel_width, Q_pixel_height, Q_text;
+extern Lisp_Object Q_items, Q_properties, Q_image, Q_percent, Qimage_conversion_error;
 extern Lisp_Object Vcontinuation_glyph, Vcontrol_arrow_glyph, Vhscroll_glyph;
 extern Lisp_Object Vinvisible_text_glyph, Voctal_escape_glyph, Vtruncation_glyph;
 extern Lisp_Object Vxemacs_logo;