+
+#define X_SUBWINDOW_INSTANCE_DATA(i) ((struct x_subwindow_data *) (i)->data)
+
+#define IMAGE_INSTANCE_X_SUBWINDOW_DISPLAY(i) \
+ (X_SUBWINDOW_INSTANCE_DATA (i)->data.sub.display)
+#define IMAGE_INSTANCE_X_SUBWINDOW_PARENT(i) \
+ (X_SUBWINDOW_INSTANCE_DATA (i)->data.sub.parent_window)
+#define IMAGE_INSTANCE_X_CLIPWINDOW(i) \
+ (X_SUBWINDOW_INSTANCE_DATA (i)->data.sub.clip_window)
+#define IMAGE_INSTANCE_X_WIDGET_XOFFSET(i) \
+ (X_SUBWINDOW_INSTANCE_DATA (i)->data.wid.x_offset)
+#define IMAGE_INSTANCE_X_WIDGET_YOFFSET(i) \
+ (X_SUBWINDOW_INSTANCE_DATA (i)->data.wid.y_offset)
+#define IMAGE_INSTANCE_X_WIDGET_LWID(i) \
+ (X_SUBWINDOW_INSTANCE_DATA (i)->data.wid.id)
+#define IMAGE_INSTANCE_X_CLIPWIDGET(i) \
+ (X_SUBWINDOW_INSTANCE_DATA (i)->data.wid.clip_window)
+#define IMAGE_INSTANCE_X_SUBWINDOW_ID(i) \
+ (* (Window *) & IMAGE_INSTANCE_SUBWINDOW_ID (i))
+#define IMAGE_INSTANCE_X_WIDGET_ID(i) \
+ (* (Widget *) & IMAGE_INSTANCE_SUBWINDOW_ID (i))
+
+#define XIMAGE_INSTANCE_X_SUBWINDOW_PARENT(i) \
+ IMAGE_INSTANCE_X_SUBWINDOW_PARENT (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_X_SUBWINDOW_DISPLAY(i) \
+ IMAGE_INSTANCE_X_SUBWINDOW_DISPLAY (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_X_WIDGET_XOFFSET(i) \
+ IMAGE_INSTANCE_X_WIDGET_XOFFSET (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_X_WIDGET_YOFFSET(i) \
+ IMAGE_INSTANCE_X_WIDGET_YOFFSET (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_X_WIDGET_LWID(i) \
+ IMAGE_INSTANCE_X_WIDGET_LWID (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_X_CLIPWIDGET(i) \
+ IMAGE_INSTANCE_X_CLIPWIDGET (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_X_CLIPWINDOW(i) \
+ IMAGE_INSTANCE_X_CLIPWINDOW (XIMAGE_INSTANCE (i))
+#define XIMAGE_INSTANCE_X_WIDGET_ID(i) \
+ IMAGE_INSTANCE_X_WIDGET_ID (XIMAGE_INSTANCE (i))
+
+#define DOMAIN_X_WIDGET(domain) \
+ ((IMAGE_INSTANCEP (domain) && \
+ X_SUBWINDOW_INSTANCE_DATA (XIMAGE_INSTANCE (domain))) ? \
+ XIMAGE_INSTANCE_X_WIDGET_ID (domain) : \
+ FRAME_X_CONTAINER_WIDGET (f) (DOMAIN_XFRAME (domain)))