update.
[chise/xemacs-chise.git.1] / src / glyphs-msw.h
index 8371d0a..c2cba15 100644 (file)
@@ -20,8 +20,8 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with:  Not in FSF. */
 
-#ifndef _XEMACS_GLYPHS_MSW_H_
-#define _XEMACS_GLYPHS_MSW_H_
+#ifndef INCLUDED_glyphs_msw_h_
+#define INCLUDED_glyphs_msw_h_
 
 #ifdef HAVE_MS_WINDOWS
 
@@ -34,42 +34,54 @@ Boston, MA 02111-1307, USA.  */
 
 struct mswindows_image_instance_data
 {
-  HBITMAP bitmap;
-  HBITMAP mask;
+  HBITMAP* bitmaps;
   HICON icon;
+  int real_width, real_height;
 };
 
 #define MSWINDOWS_IMAGE_INSTANCE_DATA(i) \
 ((struct mswindows_image_instance_data *) (i)->data)
 
 #define IMAGE_INSTANCE_MSWINDOWS_BITMAP(i) \
-     (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->bitmap)
+     (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->bitmaps[0])
+#define IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE(i,slice) \
+     (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->bitmaps[slice])
+#define IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES(i) \
+     (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->bitmaps)
 #define IMAGE_INSTANCE_MSWINDOWS_MASK(i) \
-     (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->mask)
+     (*(HBITMAP*)&(IMAGE_INSTANCE_PIXMAP_MASK (i)))            /* Make it lvalue */
 #define IMAGE_INSTANCE_MSWINDOWS_ICON(i) \
      (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->icon)
+#define IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH(i) \
+     (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->real_width)
+#define IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_HEIGHT(i) \
+     (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->real_height)
 
 #define XIMAGE_INSTANCE_MSWINDOWS_BITMAP(i) \
   IMAGE_INSTANCE_MSWINDOWS_BITMAP (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE(i,slice) \
+  IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE (XIMAGE_INSTANCE (i,slice))
+#define XIMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES(i) \
+  IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_MSWINDOWS_MASK(i) \
   IMAGE_INSTANCE_MSWINDOWS_MASK (XIMAGE_INSTANCE (i))
 #define XIMAGE_INSTANCE_MSWINDOWS_ICON(i) \
   IMAGE_INSTANCE_MSWINDOWS_ICON (XIMAGE_INSTANCE (i))
 
 int
-mswindows_resize_dibitmap_instance (struct Lisp_Image_Instance* ii,
+mswindows_resize_dibitmap_instance (Lisp_Image_Instance* ii,
                                    struct frame* f,
                                    int newx, int newy);
 HBITMAP
-mswindows_create_resized_bitmap (struct Lisp_Image_Instance* ii,
+mswindows_create_resized_bitmap (Lisp_Image_Instance* ii,
                                 struct frame* f,
                                 int newx, int newy);
 HBITMAP
-mswindows_create_resized_mask (struct Lisp_Image_Instance* ii,
+mswindows_create_resized_mask (Lisp_Image_Instance* ii,
                               struct frame* f,
                               int newx, int newy);
 void
-mswindows_initialize_image_instance_icon (struct Lisp_Image_Instance* image,
+mswindows_initialize_image_instance_icon (Lisp_Image_Instance* image,
                                          int cursor);
 
 #define WIDGET_INSTANCE_MSWINDOWS_HANDLE(i) \
@@ -78,5 +90,27 @@ mswindows_initialize_image_instance_icon (struct Lisp_Image_Instance* image,
 #define XWIDGET_INSTANCE_MSWINDOWS_HANDLE(i) \
   WIDGET_INSTANCE_MSWINDOWS_HANDLE (XIMAGE_INSTANCE (i))
 
+struct mswindows_subwindow_data
+{
+  HWND clip_window;
+};
+
+#define MSWINDOWS_SUBWINDOW_DATA(i) \
+  ((struct mswindows_subwindow_data *) (i)->data)
+#define IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW(i) \
+     (MSWINDOWS_SUBWINDOW_DATA (i)->clip_window)
+
+#define XIMAGE_INSTANCE_MSWINDOWS_SUBWINDOW_DATA(i) \
+  MSWINDOWS_SUBWINDOW_DATA (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW(i) \
+  IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (XIMAGE_INSTANCE (i))
+
+#define DOMAIN_MSWINDOWS_HANDLE(domain) \
+  ((IMAGE_INSTANCEP (domain) && \
+  XIMAGE_INSTANCE_MSWINDOWS_SUBWINDOW_DATA (domain)) ? \
+   XWIDGET_INSTANCE_MSWINDOWS_HANDLE (domain) : \
+   FRAME_MSWINDOWS_HANDLE (DOMAIN_XFRAME (domain)))
+
 #endif /* HAVE_MS_WINDOWS */
-#endif /* _XEMACS_GLYPHS_MSW_H_ */
+
+#endif /* INCLUDED_glyphs_msw_h_ */