From http://www.jwz.org/xscreensaver/xscreensaver-5.16.tar.gz
[xscreensaver] / OSX / jwxyz.h
1 /* xscreensaver, Copyright (c) 1991-2012 Jamie Zawinski <jwz@jwz.org>
2  *
3  * Permission to use, copy, modify, distribute, and sell this software and its
4  * documentation for any purpose is hereby granted without fee, provided that
5  * the above copyright notice appear in all copies and that both that
6  * copyright notice and this permission notice appear in supporting
7  * documentation.  No representations are made about the suitability of this
8  * software for any purpose.  It is provided "as is" without express or 
9  * implied warranty.
10  */
11
12 /* JWXYZ Is Not Xlib.
13
14    But it's a bunch of function definitions that bear some resemblance to
15    Xlib and that do Cocoa-ish things that bear some resemblance to the
16    things that Xlib might have done.
17  */
18
19 #ifndef __JWXYZ_H__
20 #define __JWXYZ_H__
21
22 typedef int Bool;
23 typedef int Status;
24 typedef void * XPointer;
25 typedef unsigned long Time;
26 typedef unsigned int KeySym;
27 typedef unsigned int KeyCode;
28 typedef unsigned int VisualID;
29
30 typedef struct jwxyz_Display            Display;
31 typedef struct jwxyz_Screen             Screen;
32 typedef struct jwxyz_Visual             Visual;
33 typedef struct jwxyz_Drawable *         Drawable;
34 typedef struct jwxyz_Colormap *         Colormap;
35 typedef struct jwxyz_GC *               GC;
36 typedef struct jwxyz_XColor             XColor;
37 typedef struct jwxyz_XGCValues          XGCValues;
38 typedef struct jwxyz_XPoint             XPoint;
39 typedef struct jwxyz_XSegment           XSegment;
40 typedef struct jwxyz_XRectangle         XRectangle;
41 typedef struct jwxyz_XArc               XArc;
42 typedef struct jwxyz_XWindowAttributes  XWindowAttributes;
43 typedef struct jwxyz_XrmOptionDescRec   XrmOptionDescRec;
44 typedef struct jwxyz_XrmDatabase *      XrmDatabase;
45 typedef struct jwxyz_XImage             XImage;
46 typedef struct jwxyz_XFontStruct        XFontStruct;
47 typedef struct jwxyz_Font *             Font;
48 typedef struct jwxyz_XCharStruct        XCharStruct;
49 typedef struct jwxyz_XComposeStatus     XComposeStatus;
50 typedef struct jwxyz_XPixmapFormatValues XPixmapFormatValues;
51
52 typedef union  jwxyz_XEvent             XEvent;
53 typedef struct jwxyz_XAnyEvent          XAnyEvent;
54 typedef struct jwxyz_XKeyEvent          XKeyEvent;
55 typedef struct jwxyz_XMotionEvent       XMotionEvent;
56 typedef struct jwxyz_XButtonEvent       XButtonEvent;
57 typedef XKeyEvent                       XKeyPressedEvent;
58 typedef XKeyEvent                       XKeyReleasedEvent;
59 typedef XMotionEvent                    XPointerMovedEvent;
60 typedef XButtonEvent                    XButtonPressedEvent;
61 typedef XButtonEvent                    XButtonReleasedEvent;
62
63
64 /* Not technically Xlib... */
65 typedef struct jwxyz_GLXContext *       GLXContext;
66 typedef struct jwxyz_XtAppContext *     XtAppContext;
67 typedef struct jwxyz_XtIntervalId *     XtIntervalId;
68 typedef struct jwxyz_XtInputId *        XtInputId;
69 typedef void *                          XtPointer;
70 typedef unsigned long                   XtInputMask;
71 #define XtInputReadMask                 (1L<<0)
72 #define XtInputWriteMask                (1L<<1)
73 #define XtInputExceptMask               (1L<<2)
74 #define XtIMXEvent                      1
75 #define XtIMTimer                       2
76 #define XtIMAlternateInput              4
77 #define XtIMSignal                      8
78 #define XtIMAll (XtIMXEvent | XtIMTimer | XtIMAlternateInput | XtIMSignal)
79
80 #define True 1
81 #define TRUE 1
82 #define False 0
83 #define FALSE 0
84 #define None 0
85
86 #define Window Drawable
87 #define Pixmap Drawable
88
89 #define XrmoptionNoArg  0
90 #define XrmoptionSepArg 1
91
92 #define CoordModeOrigin         0
93 #define CoordModePrevious       1
94
95 #define LineSolid               0
96 #define LineOnOffDash           1
97 #define LineDoubleDash          2
98
99 #define CapNotLast              0
100 #define CapButt                 1
101 #define CapRound                2
102 #define CapProjecting           3
103
104 #define JoinMiter               0
105 #define JoinRound               1
106 #define JoinBevel               2
107
108 #define FillSolid               0
109 #define FillTiled               1
110 #define FillStippled            2
111 #define FillOpaqueStippled      3
112
113 #define EvenOddRule             0
114 #define WindingRule             1
115
116 #define Complex                 0
117 #define Nonconvex               1
118 #define Convex                  2
119
120 #define XYBitmap                0
121 #define XYPixmap                1
122 #define ZPixmap                 2
123
124 #define AllocNone               0
125 #define AllocAll                1
126
127 #define StaticGray              0
128 #define GrayScale               1
129 #define StaticColor             2
130 #define PseudoColor             3
131 #define TrueColor               4
132 #define DirectColor             5
133
134 #define LSBFirst                0
135 #define MSBFirst                1
136
137 #define DoRed                   (1<<0)
138 #define DoGreen                 (1<<1)
139 #define DoBlue                  (1<<2)
140
141 #define GCFunction              (1L<<0)
142 #define GCPlaneMask             (1L<<1)
143 #define GCForeground            (1L<<2)
144 #define GCBackground            (1L<<3)
145 #define GCLineWidth             (1L<<4)
146 #define GCLineStyle             (1L<<5)
147 #define GCCapStyle              (1L<<6)
148 #define GCJoinStyle             (1L<<7)
149 #define GCFillStyle             (1L<<8)
150 #define GCFillRule              (1L<<9) 
151 #define GCTile                  (1L<<10)
152 #define GCStipple               (1L<<11)
153 #define GCTileStipXOrigin       (1L<<12)
154 #define GCTileStipYOrigin       (1L<<13)
155 #define GCFont                  (1L<<14)
156 #define GCSubwindowMode         (1L<<15)
157 #define GCGraphicsExposures     (1L<<16)
158 #define GCClipXOrigin           (1L<<17)
159 #define GCClipYOrigin           (1L<<18)
160 #define GCClipMask              (1L<<19)
161 #define GCDashOffset            (1L<<20)
162 #define GCDashList              (1L<<21)
163 #define GCArcMode               (1L<<22)
164
165 #define KeyPress                2
166 #define KeyRelease              3
167 #define ButtonPress             4
168 #define ButtonRelease           5
169 #define MotionNotify            6
170 #define Expose                  12
171 #define GraphicsExpose          13
172 #define NoExpose                14
173 #define VisibilityNotify        15
174
175 #define ClipByChildren          0
176 #define IncludeInferiors        1
177
178 #define KeyPressMask            (1L<<0)
179 #define KeyReleaseMask          (1L<<1)
180 #define ButtonPressMask         (1L<<2)
181 #define ButtonReleaseMask       (1L<<3)
182 #define PointerMotionMask       (1L<<6)
183
184 #define Button1                 1
185 #define Button2                 2
186 #define Button3                 3
187 #define Button4                 4
188 #define Button5                 5
189
190 #define ShiftMask               (1<<0)
191 #define LockMask                (1<<1)
192 #define ControlMask             (1<<2)
193 #define Mod1Mask                (1<<3)
194 #define Mod2Mask                (1<<4)
195 #define Mod3Mask                (1<<5)
196 #define Mod4Mask                (1<<6)
197 #define Mod5Mask                (1<<7)
198 #define Button1Mask             (1<<8)
199 #define Button2Mask             (1<<9)
200 #define Button3Mask             (1<<10)
201 #define Button4Mask             (1<<11)
202 #define Button5Mask             (1<<12)
203
204 #define XK_Shift_L              0xFFE1
205 #define XK_Shift_R              0xFFE2
206 #define XK_Control_L            0xFFE3
207 #define XK_Control_R            0xFFE4
208 #define XK_Caps_Lock            0xFFE5
209 #define XK_Shift_Lock           0xFFE6
210 #define XK_Meta_L               0xFFE7
211 #define XK_Meta_R               0xFFE8
212 #define XK_Alt_L                0xFFE9
213 #define XK_Alt_R                0xFFEA
214 #define XK_Super_L              0xFFEB
215 #define XK_Super_R              0xFFEC
216 #define XK_Hyper_L              0xFFED
217 #define XK_Hyper_R              0xFFEE
218
219 #define XK_Home                 0xFF50
220 #define XK_Left                 0xFF51
221 #define XK_Up                   0xFF52
222 #define XK_Right                0xFF53
223 #define XK_Down                 0xFF54
224 #define XK_Prior                0xFF55
225 #define XK_Page_Up              0xFF55
226 #define XK_Next                 0xFF56
227 #define XK_Page_Down            0xFF56
228 #define XK_End                  0xFF57
229 #define XK_Begin                0xFF58
230
231 #define GXclear                 0x0             /* 0 */
232 #define GXand                   0x1             /* src AND dst */
233 // #define GXandReverse         0x2             /* src AND NOT dst */
234 #define GXcopy                  0x3             /* src */
235 // #define GXandInverted        0x4             /* NOT src AND dst */
236 // #define GXnoop               0x5             /* dst */
237 #define GXxor                   0x6             /* src XOR dst */
238 #define GXor                    0x7             /* src OR dst */
239 // #define GXnor                0x8             /* NOT src AND NOT dst */
240 // #define GXequiv              0x9             /* NOT src XOR dst */
241 // #define GXinvert             0xa             /* NOT dst */
242 // #define GXorReverse          0xb             /* src OR NOT dst */
243 // #define GXcopyInverted       0xc             /* NOT src */
244 // #define GXorInverted         0xd             /* NOT src OR dst */
245 // #define GXnand               0xe             /* NOT src OR NOT dst */
246 #define GXset                   0xf             /* 1 */
247
248 #define DefaultScreen(dpy) (0)
249 #define BlackPixelOfScreen(s) (0xFF000000)
250 #define WhitePixelOfScreen(s) (0xFFFFFFFF)
251 #define BlackPixel(dpy,n) BlackPixelOfScreen(0)
252 #define WhitePixel(dpy,n) WhitePixelOfScreen(0)
253 #define CellsOfScreen(s) (0x00FFFFFF)
254 #define XFree(x) free(x)
255 #define BitmapPad(dpy) (8)
256 #define BitmapBitOrder(dpy) (MSBFirst)
257 #define ImageByteOrder(dpy) (MSBFirst)
258 #define DisplayOfScreen XDisplayOfScreen
259 #define DefaultScreenOfDisplay XDefaultScreenOfDisplay
260 #define ScreenOfDisplay(dpy,n) DefaultScreenOfDisplay(dpy)
261 #define DefaultVisualOfScreen XDefaultVisualOfScreen
262 #define DefaultColormapOfScreen(s) (0)
263 #define RootWindow XRootWindow
264 #define RootWindowOfScreen(s) RootWindow(DisplayOfScreen(s),0)
265 #define DisplayWidth XDisplayWidth
266 #define DisplayHeight XDisplayHeight
267 #define XMaxRequestSize(dpy) (65535)
268
269 extern Display *jwxyz_make_display (void *nsview, void *cgc);
270 extern void jwxyz_free_display (Display *);
271 extern void *jwxyz_window_view (Window);
272 extern void jwxyz_window_resized (Display *, Window,
273                                   int, int, int, int,
274                                   void *cgc);
275 extern void jwxyz_mouse_moved (Display *, Window, int x, int y);
276
277 extern Window XRootWindow (Display *, int screen);
278 extern Screen *XDefaultScreenOfDisplay (Display *);
279 extern Visual *XDefaultVisualOfScreen (Screen *);
280 extern Display *XDisplayOfScreen (Screen *);
281 extern int XDisplayNumberOfScreen (Screen *);
282 extern int XScreenNumberOfScreen (Screen *);
283 extern int XDisplayWidth (Display *, int);
284 extern int XDisplayHeight (Display *, int);
285
286 extern int XDrawPoint (Display *, Drawable, GC, int x, int y);
287 extern int XDrawPoints (Display *, Drawable, GC, XPoint *, int n, int mode);
288 extern int XDrawSegments (Display *, Drawable, GC, XSegment *, int n);
289
290 extern GC XCreateGC (Display *, Drawable, unsigned long mask, XGCValues *);
291 extern int XChangeGC (Display *, GC, unsigned long mask, XGCValues *);
292 extern int XFreeGC (Display *, GC);
293
294 extern int XClearWindow (Display *, Window);
295 extern int XClearArea (Display *, Window, int x, int y, int w, int h,Bool exp);
296 extern int XSetWindowBackground (Display *, Window, unsigned long);
297 extern Status XGetWindowAttributes (Display *, Window, XWindowAttributes *);
298 extern Status XGetGeometry (Display *, Drawable, Window *root_ret,
299                             int *x_ret, int *y_ret, 
300                             unsigned int *w_ret, unsigned int *h_ret,
301                             unsigned int *bw_ret, unsigned int *depth_ret);
302 extern Status XAllocColor (Display *, Colormap, XColor *);
303 extern Status XAllocColorCells (Display *, Colormap, Bool contig,
304                                 unsigned long *pmret, unsigned int npl,
305                                 unsigned long *pxret, unsigned int npx);
306 extern int XStoreColors (Display *, Colormap, XColor *, int n);
307 extern int XStoreColor (Display *, Colormap, XColor *);
308 extern Status XParseColor(Display *, Colormap, const char *spec, XColor *ret);
309 extern Status XAllocNamedColor (Display *, Colormap, char *name,
310                                 XColor *screen_ret, XColor *exact_ret);
311 extern int XQueryColor (Display *, Colormap, XColor *);
312 extern int XQueryColors(Display *, Colormap colormap, XColor *, int ncolors);
313
314 extern int XSetForeground (Display *, GC, unsigned long);
315 extern int XSetBackground (Display *, GC, unsigned long);
316 extern int XSetFunction (Display *, GC, int);
317 extern int XSetSubwindowMode (Display *, GC, int);
318 extern int XSetLineAttributes (Display *, GC, unsigned int line_width,
319                                int line_style, int cap_style, int join_style);
320 extern int XSetClipMask (Display *, GC, Pixmap);
321 extern int XSetClipOrigin (Display *, GC, int x, int y);
322 extern int jwxyz_XSetAlphaAllowed (Display *, GC, Bool);
323 extern int jwxyz_XSetAntiAliasing (Display *, GC, Bool);
324
325 extern int XFlush (Display *);
326 extern int XSync (Display *, Bool);
327 extern int XFreeColors (Display *, Colormap, unsigned long *px, int n,
328                         unsigned long planes);
329 extern int XFillPolygon (Display *, Drawable, GC, 
330                          XPoint * points, int npoints, int shape, int mode);
331 extern int XCopyArea (Display *, Drawable src, Drawable dest, GC, 
332                       int src_x, int src_y, 
333                       unsigned int width, unsigned int height, 
334                       int dest_x, int dest_y);
335 extern int XCopyPlane (Display *, Drawable, Drawable, GC,
336                        int src_x, int src_y,
337                        unsigned width, int height,
338                        int dest_x, int dest_y,
339                        unsigned long plane);
340
341 extern int XDrawLine (Display *, Drawable, GC, int x1, int y1, int x2, int y2);
342 extern int XDrawLines (Display *, Drawable, GC, XPoint *, int n, int mode);
343 extern int XDrawArc (Display *, Drawable, GC, int x, int y, 
344                      unsigned int width, unsigned int height,
345                      int angle1, int angle2);
346 extern int XFillArc (Display *, Drawable, GC, int x, int y, 
347                      unsigned int width, unsigned int height,
348                      int angle1, int angle2);
349 extern int XDrawArcs (Display *, Drawable, GC, XArc *arcs, int narcs);
350 extern int XFillArcs (Display *, Drawable, GC, XArc *arcs, int narcs);
351 extern int XDrawRectangle (Display *, Drawable, GC, int x, int y, 
352                            unsigned int width, unsigned int height);
353 extern int XFillRectangle (Display *, Drawable, GC, int x, int y, 
354                            unsigned int width, unsigned int height);
355 extern int XFillRectangles (Display *, Drawable, GC, XRectangle *, int n);
356
357 extern int XDrawString (Display *, Drawable, GC, int x, int y, const char *,
358                         int len);
359 extern int XDrawImageString (Display *, Drawable, GC, int x, int y, 
360                              const char *, int len);
361
362 extern Bool XQueryPointer (Display *, Window, Window *root_ret,
363                            Window *child_ret,
364                            int *root_x_ret, int *root_y_ret,
365                            int *win_x_ret, int *win_y_ret,
366                            unsigned int *mask_ret);
367 extern int XLookupString (XKeyEvent *, char *ret, int size, KeySym *ks_ret,
368                           XComposeStatus *);
369 extern KeySym XKeycodeToKeysym (Display *, KeyCode, int index);
370
371 extern Status XInitImage (XImage *);
372 extern XImage *XCreateImage (Display *, Visual *, unsigned int depth,
373                              int format, int offset, char *data,
374                              unsigned int width, unsigned int height,
375                              int bitmap_pad, int bytes_per_line);
376 extern XImage *XSubImage (XImage *, int x, int y, 
377                           unsigned int w, unsigned int h);
378
379 extern unsigned long XGetPixel (XImage *, int x, int y);
380 extern int XPutPixel (XImage *, int x, int y, unsigned long);
381 extern int XDestroyImage (XImage *);
382 extern int XPutImage (Display *, Drawable, GC, XImage *, 
383                       int src_x, int src_y, int dest_x, int dest_y,
384                       unsigned int w, unsigned int h);
385 extern XImage *XGetImage (Display *, Drawable, int x, int y,
386                           unsigned int w, unsigned int h,
387                           unsigned long pm, int fmt);
388 extern Pixmap XCreatePixmapFromBitmapData (Display *, Drawable,
389                                            const char *data,
390                                            unsigned int w, unsigned int h,
391                                            unsigned long fg,
392                                            unsigned int bg,
393                                            unsigned int depth);
394 extern XPixmapFormatValues *XListPixmapFormats (Display *, int *count_ret);
395
396 extern void jwxyz_draw_NSImage_or_CGImage (Display *, Drawable, 
397                                            Bool nsimg_p, void *NSImage_arg,
398                                            XRectangle *geom_ret, 
399                                            int exif_rotation);
400
401 extern int XSetGraphicsExposures (Display *, GC, Bool);
402 extern Bool XTranslateCoordinates (Display *, Window src_w, Window dest_w,
403                                    int src_x, int src_y,
404                                    int *dest_x_ret, int *dest_y_ret,
405                                    Window *child_ret);
406
407 extern Font XLoadFont (Display *, const char *);
408 extern XFontStruct * XQueryFont (Display *, Font);
409 extern XFontStruct * XLoadQueryFont (Display *, const char *);
410 extern int XFreeFontInfo (char **names, XFontStruct *info, int n);
411 extern int XFreeFont (Display *, XFontStruct *);
412 extern int XUnloadFont (Display *, Font);
413 extern int XTextExtents (XFontStruct *, const char *, int length,
414                          int *dir_ret, int *ascent_ret, int *descent_ret,
415                          XCharStruct *overall_ret);
416 extern int XTextWidth (XFontStruct *, const char *, int length);
417 extern int XSetFont (Display *, GC, Font);
418
419 extern Pixmap XCreatePixmap (Display *, Drawable,
420                              unsigned int width, unsigned int height,
421                              unsigned int depth);
422 extern int XFreePixmap (Display *, Pixmap);
423
424 // Xt timers and fds
425 extern XtAppContext XtDisplayToApplicationContext (Display *);
426 typedef void (*XtTimerCallbackProc) (XtPointer closure, XtIntervalId *);
427 typedef void (*XtInputCallbackProc) (XtPointer closure, int *fd, XtInputId *);
428 extern XtIntervalId XtAppAddTimeOut (XtAppContext, unsigned long usecs,
429                                      XtTimerCallbackProc, XtPointer closure);
430 extern void XtRemoveTimeOut (XtIntervalId);
431 extern XtInputId XtAppAddInput (XtAppContext, int fd, XtPointer flags,
432                                XtInputCallbackProc, XtPointer closure);
433 extern void XtRemoveInput (XtInputId);
434 extern XtInputMask XtAppPending (XtAppContext);
435 extern void XtAppProcessEvent (XtAppContext, XtInputMask);
436 extern struct jwxyz_sources_data *display_sources_data (Display *);
437
438 // Some GLX stuff that also doesn't technically belong here...
439 // from XScreenSaverGLView.m
440 extern void glXSwapBuffers (Display *, Window);
441 extern void glXMakeCurrent (Display *, Window, GLXContext);
442
443 // also declared in utils/visual.h
444 extern int has_writable_cells (Screen *, Visual *);
445 extern int visual_depth (Screen *, Visual *);
446 extern int visual_cells (Screen *, Visual *);
447 extern int visual_class (Screen *, Visual *);
448
449 // also declared in utils/grabclient.h
450 extern Bool use_subwindow_mode_p (Screen *, Window);
451
452 struct jwxyz_Visual {
453   VisualID visualid;    /* visual id of this visual */
454   int class;            /* class of screen (monochrome, etc.) */
455   unsigned long red_mask, green_mask, blue_mask;        /* mask values */
456   int bits_per_rgb;     /* log base 2 of distinct color values */
457 //  int map_entries;    /* color map entries */
458 };
459
460 struct jwxyz_XGCValues {
461   int function;         /* logical operation */
462 #if 0
463   unsigned long plane_mask;/* plane mask */
464 #endif
465   unsigned long foreground;/* foreground pixel */
466   unsigned long background;/* background pixel */
467   int line_width;       /* line width */
468 #if 0
469   int line_style;       /* LineSolid, LineOnOffDash, LineDoubleDash */
470 #endif
471   int cap_style;        /* CapNotLast, CapButt, CapRound, CapProjecting */
472   int join_style;       /* JoinMiter, JoinRound, JoinBevel */
473 #if 0
474   int fill_style;       /* FillSolid, FillTiled, 
475                            FillStippled, FillOpaeueStippled */
476 #endif
477   int fill_rule;        /* EvenOddRule, WindingRule */
478 #if 0
479   int arc_mode;         /* ArcChord, ArcPieSlice */
480   Pixmap tile;          /* tile pixmap for tiling operations */
481   Pixmap stipple;       /* stipple 1 plane pixmap for stipping */
482   int ts_x_origin;      /* offset for tile or stipple operations */
483   int ts_y_origin;
484 #endif
485   Font font;            /* default text font for text operations */
486   int subwindow_mode;     /* ClipByChildren, IncludeInferiors */
487 #if 0
488   Bool graphics_exposures;/* boolean, should exposures be generated */
489 #endif
490   int clip_x_origin;    /* origin for clipping */
491   int clip_y_origin;
492   Pixmap clip_mask;     /* bitmap clipping; other calls for rects */
493 #if 0
494   int dash_offset;      /* patterned/dashed line information */
495   char dashes;
496 #endif
497
498   Bool alpha_allowed_p; /* jwxyz extension: whether pixel values may have
499                            a non-opaque alpha component. */
500   Bool antialias_p;     /* jwxyz extension: whether Quartz should draw
501                            with antialiasing. */
502 };
503
504 struct jwxyz_XWindowAttributes {
505     int x, y;                   /* location of window */
506     int width, height;          /* width and height of window */
507     int border_width;           /* border width of window */
508     int depth;                  /* depth of window */
509     Visual *visual;             /* the associated visual structure */
510 #if 0
511     Window root;                /* root of screen containing window */
512     int class;                  /* InputOutput, InputOnly*/
513     int bit_gravity;            /* one of bit gravity values */
514     int win_gravity;            /* one of the window gravity values */
515     int backing_store;          /* NotUseful, WhenMapped, Always */
516     unsigned long backing_planes;/* planes to be preserved if possible */
517     unsigned long backing_pixel;/* value to be used when restoring planes */
518     Bool save_under;            /* boolean, should bits under be saved? */
519 #endif
520     Colormap colormap;          /* color map to be associated with window */
521 #if 0
522     Bool map_installed;         /* boolean, is color map currently installed*/
523     int map_state;              /* IsUnmapped, IsUnviewable, IsViewable */
524     long all_event_masks;       /* set of events all people have interest in*/
525     long your_event_mask;       /* my event mask */
526     long do_not_propagate_mask; /* set of events that should not propagate */
527     Bool override_redirect;     /* boolean value for override-redirect */
528 #endif
529     Screen *screen;             /* back pointer to correct screen */
530 };
531
532 struct jwxyz_XColor {
533   unsigned long pixel;
534   unsigned short red, green, blue;
535   char flags;  /* do_red, do_green, do_blue */
536   char pad;
537 };
538
539 struct jwxyz_XPoint {
540   short x, y;
541 };
542
543 struct jwxyz_XSegment {
544   short x1, y1, x2, y2;
545 };
546
547 struct jwxyz_XRectangle {
548   short x, y;
549   unsigned short width, height;
550 };
551
552 struct jwxyz_XArc {
553   short x, y;
554   unsigned short width, height;
555   short angle1, angle2;
556 };
557
558
559 struct jwxyz_XrmOptionDescRec {
560   char *option;
561   char *specifier;
562   int argKind;
563   void *value;
564 };
565
566 struct jwxyz_XAnyEvent {
567   int type;
568 #if 0
569   unsigned long serial;
570   Bool send_event;
571   Display *display;
572   Window window;
573 #endif
574 };
575
576 struct jwxyz_XKeyEvent {
577   int type;
578 #if 0
579   unsigned long serial;
580   Bool send_event;
581   Display *display;
582   Window window;
583   Window root;
584   Window subwindow;
585   Time time;
586   int x, y;
587   int x_root, y_root;
588 #endif
589   unsigned int state;
590   unsigned int keycode;
591 #if 0
592   Bool same_screen;
593 #endif
594 };
595
596 struct jwxyz_XButtonEvent {
597   int type;
598 #if 0
599   unsigned long serial;
600   Bool send_event;
601   Display *display;
602   Window window;
603   Window root;
604   Window subwindow;
605   Time time;
606 #endif
607   int x, y;
608 #if 0
609   int x_root, y_root;
610 #endif
611   unsigned int state;
612   unsigned int button;
613 #if 0
614   Bool same_screen;
615 #endif
616 };
617
618 struct jwxyz_XMotionEvent {
619   int type;
620 #if 0
621   unsigned long serial;
622   Bool send_event;
623   Display *display;
624   Window window;
625   Window root;
626   Window subwindow;
627   Time time;
628 #endif
629   int x, y;
630 #if 0
631   int x_root, y_root;
632 #endif
633   unsigned int state;
634 #if 0
635   char is_hint;
636   Bool same_screen;
637 #endif
638 };
639
640 union jwxyz_XEvent {
641   int type;
642   XAnyEvent xany;
643   XKeyEvent xkey;
644   XButtonEvent xbutton;
645   XMotionEvent xmotion;
646 };
647
648 struct jwxyz_XImage {
649     int width, height;          /* size of image */
650     int xoffset;                /* number of pixels offset in X direction */
651     int format;                 /* XYBitmap, XYPixmap, ZPixmap */
652     char *data;                 /* pointer to image data */
653     int byte_order;             /* data byte order, LSBFirst, MSBFirst */
654     int bitmap_unit;            /* quant. of scanline 8, 16, 32 */
655     int bitmap_bit_order;       /* LSBFirst, MSBFirst */
656     int bitmap_pad;             /* 8, 16, 32 either XY or ZPixmap */
657     int depth;                  /* depth of image */
658     int bytes_per_line;         /* accelarator to next line */
659     int bits_per_pixel;         /* bits per pixel (ZPixmap) */
660     unsigned long red_mask;     /* bits in z arrangment */
661     unsigned long green_mask;
662     unsigned long blue_mask;
663 //  XPointer obdata;            /* hook for the object routines to hang on */
664     struct funcs {              /* image manipulation routines */
665 #if 0
666       XImage *(*create_image)(
667                 Display*        /* display */,
668                 Visual*         /* visual */,
669                 unsigned int    /* depth */,
670                 int             /* format */,
671                 int             /* offset */,
672                 char*           /* data */,
673                 unsigned int    /* width */,
674                 unsigned int    /* height */,
675                 int             /* bitmap_pad */,
676                 int             /* bytes_per_line */);
677         int (*destroy_image)        (XImage *);
678 #endif
679         unsigned long (*get_pixel)  (XImage *, int, int);
680         int (*put_pixel)            (XImage *, int, int, unsigned long);
681 #if 0
682         XImage *(*sub_image)        (XImage *, int, int, unsigned int, unsigned int);
683         int (*add_pixel)            (XImage *, long);
684 #endif
685     } f;
686 };
687
688 struct jwxyz_XCharStruct {
689   short lbearing;       /* origin to left edge of raster */
690   short rbearing;       /* origin to right edge of raster */
691   short width;          /* advance to next char's origin */
692   short ascent;         /* baseline to top edge of raster */
693   short descent;        /* baseline to bottom edge of raster */
694 #if 0
695   unsigned short attributes;    /* per char flags (not predefined) */
696 #endif
697 };
698
699 struct jwxyz_XFontStruct {
700 #if 0
701   XExtData      *ext_data;      /* hook for extension to hang data */
702 #endif
703   Font          fid;            /* Font id for this font */
704 #if 0
705   unsigned      direction;      /* hint about direction the font is painted */
706 #endif
707   unsigned      min_char_or_byte2;      /* first character */
708   unsigned      max_char_or_byte2;      /* last character */
709 #if 0
710   unsigned      min_byte1;      /* first row that exists */
711   unsigned      max_byte1;      /* last row that exists */
712   Bool  all_chars_exist;        /* flag if all characters have non-zero size*/
713 #endif
714   unsigned      default_char;   /* char to print for undefined character */
715 #if 0
716   int         n_properties;   /* how many properties there are */
717   XFontProp     *properties;    /* pointer to array of additional properties*/
718 #endif
719   XCharStruct   min_bounds;     /* minimum bounds over all existing char*/
720   XCharStruct   max_bounds;     /* maximum bounds over all existing char*/
721   XCharStruct   *per_char;      /* first_char to last_char information */
722   int           ascent;         /* log. extent above baseline for spacing */
723   int           descent;        /* log. descent below baseline for spacing */
724 };
725
726 struct jwxyz_XComposeStatus {
727   char dummy;
728 };
729
730 struct  jwxyz_XPixmapFormatValues {
731   int depth;
732   int bits_per_pixel;
733   int scanline_pad;
734 };
735
736 #endif /* __JWXYZ_H__ */