X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=jwxyz%2Fjwxyz.h;fp=jwxyz%2Fjwxyz.h;h=335df69100b0c788a776e6336930a61a1b089201;hp=0000000000000000000000000000000000000000;hb=aa75c7476aeaa84cf3abc192b376a8b03c325213;hpb=88cfe534a698a0562e81345957a50714af1453bc diff --git a/jwxyz/jwxyz.h b/jwxyz/jwxyz.h new file mode 100644 index 00000000..335df691 --- /dev/null +++ b/jwxyz/jwxyz.h @@ -0,0 +1,816 @@ +/* xscreensaver, Copyright (c) 1991-2016 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* JWXYZ Is Not Xlib. + + But it's a bunch of function definitions that bear some resemblance to + Xlib and that do Cocoa-ish or OpenGL-ish things that bear some resemblance + to the things that Xlib might have done. + */ + +#ifndef __JWXYZ_H__ +#define __JWXYZ_H__ + +#include /* For abort(). */ + +#if defined __FreeBSD__ || defined __MACH__ && defined __APPLE__ +# include +#endif + +#ifndef __dead2 +/* __dead2 is an undocumented FreeBSD-ism (and by extension, an OSX-ism), + normally #defined in . + */ +# if defined __GNUC__ || defined __clang__ +# define __dead2 __attribute__((__noreturn__)) +# else +# define __dead2 +# endif +#endif + +extern void jwxyz_abort(const char *fmt, ...) __dead2; +#define abort() jwxyz_abort("abort in %s:%d", __FUNCTION__, __LINE__) + +typedef int Bool; +typedef int Status; +typedef void * XPointer; +typedef unsigned long Time; +typedef unsigned int KeySym; +typedef unsigned int KeyCode; +typedef unsigned int VisualID; +typedef unsigned long Atom; /* Must be as large as a char *. */ + +typedef struct jwxyz_Display Display; +typedef struct jwxyz_Screen Screen; +typedef struct jwxyz_Visual Visual; +typedef struct jwxyz_Drawable * Drawable; +typedef struct jwxyz_Colormap * Colormap; +typedef struct jwxyz_GC * GC; +typedef struct jwxyz_XColor XColor; +typedef struct jwxyz_XGCValues XGCValues; +typedef struct jwxyz_XPoint XPoint; +typedef struct jwxyz_XSegment XSegment; +typedef struct jwxyz_XRectangle XRectangle; +typedef struct jwxyz_XArc XArc; +typedef struct jwxyz_XWindowAttributes XWindowAttributes; +typedef struct jwxyz_XrmOptionDescRec XrmOptionDescRec; +typedef struct jwxyz_XrmDatabase * XrmDatabase; +typedef struct jwxyz_XImage XImage; +typedef struct jwxyz_XFontProp XFontProp; +typedef struct jwxyz_XFontStruct XFontStruct; +typedef struct jwxyz_Font * Font; +typedef struct jwxyz_XFontSet * XFontSet; +typedef struct jwxyz_XCharStruct XCharStruct; +typedef struct jwxyz_XComposeStatus XComposeStatus; +typedef struct jwxyz_XPixmapFormatValues XPixmapFormatValues; +typedef struct jwxyz_XChar2b XChar2b; + +typedef union jwxyz_XEvent XEvent; +typedef struct jwxyz_XAnyEvent XAnyEvent; +typedef struct jwxyz_XKeyEvent XKeyEvent; +typedef struct jwxyz_XMotionEvent XMotionEvent; +typedef struct jwxyz_XButtonEvent XButtonEvent; +typedef XKeyEvent XKeyPressedEvent; +typedef XKeyEvent XKeyReleasedEvent; +typedef XMotionEvent XPointerMovedEvent; +typedef XButtonEvent XButtonPressedEvent; +typedef XButtonEvent XButtonReleasedEvent; + + +/* Not technically Xlib... */ +typedef struct jwxyz_GLXContext * GLXContext; +typedef struct jwxyz_XtAppContext * XtAppContext; +typedef struct jwxyz_XtIntervalId * XtIntervalId; +typedef struct jwxyz_XtInputId * XtInputId; +typedef void * XtPointer; +typedef unsigned long XtInputMask; +#define XtInputReadMask (1L<<0) +#define XtInputWriteMask (1L<<1) +#define XtInputExceptMask (1L<<2) +#define XtIMXEvent 1 +#define XtIMTimer 2 +#define XtIMAlternateInput 4 +#define XtIMSignal 8 +#define XtIMAll (XtIMXEvent | XtIMTimer | XtIMAlternateInput | XtIMSignal) + +#define True 1 +#define TRUE 1 +#define False 0 +#define FALSE 0 +#define None 0 + +#define Window Drawable +#define Pixmap Drawable + +#define XrmoptionNoArg 0 +#define XrmoptionSepArg 1 + +#define CoordModeOrigin 0 +#define CoordModePrevious 1 + +#define LineSolid 0 +#define LineOnOffDash 1 +#define LineDoubleDash 2 + +#define CapNotLast 0 +#define CapButt 1 +#define CapRound 2 +#define CapProjecting 3 + +#define JoinMiter 0 +#define JoinRound 1 +#define JoinBevel 2 + +#define FillSolid 0 +#define FillTiled 1 +#define FillStippled 2 +#define FillOpaqueStippled 3 + +#define EvenOddRule 0 +#define WindingRule 1 + +#define Complex 0 +#define Nonconvex 1 +#define Convex 2 + +#define XYBitmap 0 +#define XYPixmap 1 +#define ZPixmap 2 + +#define AllocNone 0 +#define AllocAll 1 + +#define StaticGray 0 +#define GrayScale 1 +#define StaticColor 2 +#define PseudoColor 3 +#define TrueColor 4 +#define DirectColor 5 + +#define LSBFirst 0 +#define MSBFirst 1 + +#define DoRed (1<<0) +#define DoGreen (1<<1) +#define DoBlue (1<<2) + +#define GCFunction (1L<<0) +#define GCPlaneMask (1L<<1) +#define GCForeground (1L<<2) +#define GCBackground (1L<<3) +#define GCLineWidth (1L<<4) +#define GCLineStyle (1L<<5) +#define GCCapStyle (1L<<6) +#define GCJoinStyle (1L<<7) +#define GCFillStyle (1L<<8) +#define GCFillRule (1L<<9) +#define GCTile (1L<<10) +#define GCStipple (1L<<11) +#define GCTileStipXOrigin (1L<<12) +#define GCTileStipYOrigin (1L<<13) +#define GCFont (1L<<14) +#define GCSubwindowMode (1L<<15) +#define GCGraphicsExposures (1L<<16) +#define GCClipXOrigin (1L<<17) +#define GCClipYOrigin (1L<<18) +#define GCClipMask (1L<<19) +#define GCDashOffset (1L<<20) +#define GCDashList (1L<<21) +#define GCArcMode (1L<<22) + +#define KeyPress 2 +#define KeyRelease 3 +#define ButtonPress 4 +#define ButtonRelease 5 +#define MotionNotify 6 +#define Expose 12 +#define GraphicsExpose 13 +#define NoExpose 14 +#define VisibilityNotify 15 + +#define ClipByChildren 0 +#define IncludeInferiors 1 + +#define KeyPressMask (1L<<0) +#define KeyReleaseMask (1L<<1) +#define ButtonPressMask (1L<<2) +#define ButtonReleaseMask (1L<<3) +#define PointerMotionMask (1L<<6) + +#define Button1 1 +#define Button2 2 +#define Button3 3 +#define Button4 4 +#define Button5 5 + +#define ShiftMask (1<<0) +#define LockMask (1<<1) +#define ControlMask (1<<2) +#define Mod1Mask (1<<3) +#define Mod2Mask (1<<4) +#define Mod3Mask (1<<5) +#define Mod4Mask (1<<6) +#define Mod5Mask (1<<7) +#define Button1Mask (1<<8) +#define Button2Mask (1<<9) +#define Button3Mask (1<<10) +#define Button4Mask (1<<11) +#define Button5Mask (1<<12) + +#define XK_Shift_L 0xFFE1 +#define XK_Shift_R 0xFFE2 +#define XK_Control_L 0xFFE3 +#define XK_Control_R 0xFFE4 +#define XK_Caps_Lock 0xFFE5 +#define XK_Shift_Lock 0xFFE6 +#define XK_Meta_L 0xFFE7 +#define XK_Meta_R 0xFFE8 +#define XK_Alt_L 0xFFE9 +#define XK_Alt_R 0xFFEA +#define XK_Super_L 0xFFEB +#define XK_Super_R 0xFFEC +#define XK_Hyper_L 0xFFED +#define XK_Hyper_R 0xFFEE + +#define XK_Home 0xFF50 +#define XK_Left 0xFF51 +#define XK_Up 0xFF52 +#define XK_Right 0xFF53 +#define XK_Down 0xFF54 +#define XK_Prior 0xFF55 +#define XK_Page_Up 0xFF55 +#define XK_Next 0xFF56 +#define XK_Page_Down 0xFF56 +#define XK_End 0xFF57 +#define XK_Begin 0xFF58 + +#define XK_F1 0xFFBE +#define XK_F2 0xFFBF +#define XK_F3 0xFFC0 +#define XK_F4 0xFFC1 +#define XK_F5 0xFFC2 +#define XK_F6 0xFFC3 +#define XK_F7 0xFFC4 +#define XK_F8 0xFFC5 +#define XK_F9 0xFFC6 +#define XK_F10 0xFFC7 +#define XK_F11 0xFFC8 +#define XK_F12 0xFFC9 + + +#define GXclear 0x0 /* 0 */ +#define GXand 0x1 /* src AND dst */ +// #define GXandReverse 0x2 /* src AND NOT dst */ +#define GXcopy 0x3 /* src */ +// #define GXandInverted 0x4 /* NOT src AND dst */ +// #define GXnoop 0x5 /* dst */ +#define GXxor 0x6 /* src XOR dst */ +#define GXor 0x7 /* src OR dst */ +// #define GXnor 0x8 /* NOT src AND NOT dst */ +// #define GXequiv 0x9 /* NOT src XOR dst */ +// #define GXinvert 0xa /* NOT dst */ +// #define GXorReverse 0xb /* src OR NOT dst */ +// #define GXcopyInverted 0xc /* NOT src */ +// #define GXorInverted 0xd /* NOT src OR dst */ +// #define GXnand 0xe /* NOT src OR NOT dst */ +#define GXset 0xf /* 1 */ + +#define XA_FONT 18 + +#define DefaultScreen(dpy) (0) +#define BlackPixelOfScreen XBlackPixelOfScreen +#define WhitePixelOfScreen XWhitePixelOfScreen +#define BlackPixel(dpy,n) BlackPixelOfScreen(ScreenOfDisplay(dpy,n)) +#define WhitePixel(dpy,n) WhitePixelOfScreen(ScreenOfDisplay(dpy,n)) +#define CellsOfScreen XCellsOfScreen +#define XFree(x) free(x) +#define BitmapPad(dpy) (8) +#define BitmapBitOrder(dpy) (MSBFirst) +#define ImageByteOrder(dpy) (MSBFirst) +#define DisplayOfScreen XDisplayOfScreen +#define DefaultScreenOfDisplay XDefaultScreenOfDisplay +#define ScreenOfDisplay(dpy,n) DefaultScreenOfDisplay(dpy) +#define DefaultVisualOfScreen XDefaultVisualOfScreen +#define DefaultColormapOfScreen(s) (0) +#define RootWindow XRootWindow +#define RootWindowOfScreen(s) RootWindow(DisplayOfScreen(s),0) +#define DisplayWidth XDisplayWidth +#define DisplayHeight XDisplayHeight +#define XMaxRequestSize(dpy) (65535) +#define XWidthOfScreen(s) (DisplayWidth(DisplayOfScreen(s),0)) +#define XHeightOfScreen(s) (DisplayHeight(DisplayOfScreen(s),0)) +#define XWidthMMOfScreen(s) (XDisplayWidthMM(DisplayOfScreen(s),0)) +#define XHeightMMOfScreen(s) (XDisplayHeightMM(DisplayOfScreen(s),0)) + +#define ScreenCount(dpy) jwxyz_ScreenCount(dpy) +extern int jwxyz_ScreenCount(Display *); + +extern Window XRootWindow (Display *, int screen); +extern Screen *XDefaultScreenOfDisplay (Display *); +extern Visual *XDefaultVisualOfScreen (Screen *); +extern Display *XDisplayOfScreen (Screen *); +extern int XDisplayNumberOfScreen (Screen *); +extern int XScreenNumberOfScreen (Screen *); +extern int XDisplayWidth (Display *, int); +extern int XDisplayHeight (Display *, int); +extern int XDisplayWidthMM (Display *, int); +extern int XDisplayHeightMM (Display *, int); + +unsigned long XBlackPixelOfScreen(Screen *); +unsigned long XWhitePixelOfScreen(Screen *); +unsigned long XCellsOfScreen(Screen *); + +extern int XDrawPoint (Display *, Drawable, GC, int x, int y); +extern int XDrawPoints (Display *, Drawable, GC, XPoint *, int n, int mode); +extern int XDrawSegments (Display *, Drawable, GC, XSegment *, int n); + +extern GC XCreateGC (Display *, Drawable, unsigned long mask, XGCValues *); +extern int XChangeGC (Display *, GC, unsigned long mask, XGCValues *); +extern int XFreeGC (Display *, GC); + +extern int XClearWindow (Display *, Window); +extern int XClearArea (Display *, Window, int x, int y, int w, int h,Bool exp); +extern int XSetWindowBackground (Display *, Window, unsigned long); +extern Status XGetWindowAttributes (Display *, Window, XWindowAttributes *); +extern Status XGetGeometry (Display *, Drawable, Window *root_ret, + int *x_ret, int *y_ret, + unsigned int *w_ret, unsigned int *h_ret, + unsigned int *bw_ret, unsigned int *depth_ret); +extern Status XAllocColor (Display *, Colormap, XColor *); +extern Status XAllocColorCells (Display *, Colormap, Bool contig, + unsigned long *pmret, unsigned int npl, + unsigned long *pxret, unsigned int npx); +extern int XStoreColors (Display *, Colormap, XColor *, int n); +extern int XStoreColor (Display *, Colormap, XColor *); +extern Status XParseColor(Display *, Colormap, const char *spec, XColor *ret); +extern Status XAllocNamedColor (Display *, Colormap, char *name, + XColor *screen_ret, XColor *exact_ret); +extern int XQueryColor (Display *, Colormap, XColor *); +extern int XQueryColors(Display *, Colormap colormap, XColor *, int ncolors); + +extern int XSetForeground (Display *, GC, unsigned long); +extern int XSetBackground (Display *, GC, unsigned long); +extern int XSetFunction (Display *, GC, int); +extern int XSetSubwindowMode (Display *, GC, int); +extern int XSetLineAttributes (Display *, GC, unsigned int line_width, + int line_style, int cap_style, int join_style); +extern int XSetClipMask (Display *, GC, Pixmap); +extern int XSetClipOrigin (Display *, GC, int x, int y); +extern int jwxyz_XSetAlphaAllowed (Display *, GC, Bool); +extern int jwxyz_XSetAntiAliasing (Display *, GC, Bool); + +extern int XFlush (Display *); +extern int XSync (Display *, Bool); +extern int XFreeColors (Display *, Colormap, unsigned long *px, int n, + unsigned long planes); +extern int XFillPolygon (Display *, Drawable, GC, + XPoint * points, int npoints, int shape, int mode); +extern int XCopyArea (Display *, Drawable src, Drawable dest, GC, + int src_x, int src_y, + unsigned int width, unsigned int height, + int dest_x, int dest_y); +extern int XCopyPlane (Display *, Drawable, Drawable, GC, + int src_x, int src_y, + unsigned width, int height, + int dest_x, int dest_y, + unsigned long plane); + +extern int XDrawLine (Display *, Drawable, GC, int x1, int y1, int x2, int y2); +extern int XDrawLines (Display *, Drawable, GC, XPoint *, int n, int mode); +extern int XDrawArc (Display *, Drawable, GC, int x, int y, + unsigned int width, unsigned int height, + int angle1, int angle2); +extern int XFillArc (Display *, Drawable, GC, int x, int y, + unsigned int width, unsigned int height, + int angle1, int angle2); +extern int XDrawArcs (Display *, Drawable, GC, XArc *arcs, int narcs); +extern int XFillArcs (Display *, Drawable, GC, XArc *arcs, int narcs); +extern int XDrawRectangle (Display *, Drawable, GC, int x, int y, + unsigned int width, unsigned int height); +extern int XFillRectangle (Display *, Drawable, GC, int x, int y, + unsigned int width, unsigned int height); +extern int XFillRectangles (Display *, Drawable, GC, XRectangle *, int n); + +extern int XDrawString (Display *, Drawable, GC, int x, int y, const char *, + int len); +extern int XDrawImageString (Display *, Drawable, GC, int x, int y, + const char *, int len); +extern int XDrawString16 (Display *, Drawable, GC, int x, int y, + const XChar2b *, int len); + +extern Bool XQueryPointer (Display *, Window, Window *root_ret, + Window *child_ret, + int *root_x_ret, int *root_y_ret, + int *win_x_ret, int *win_y_ret, + unsigned int *mask_ret); +extern int XLookupString (XKeyEvent *, char *ret, int size, KeySym *ks_ret, + XComposeStatus *); +extern KeySym XKeycodeToKeysym (Display *, KeyCode, int index); + +extern Status XInitImage (XImage *); +extern XImage *XCreateImage (Display *, Visual *, unsigned int depth, + int format, int offset, char *data, + unsigned int width, unsigned int height, + int bitmap_pad, int bytes_per_line); +extern XImage *XSubImage (XImage *, int x, int y, + unsigned int w, unsigned int h); + +extern unsigned long XGetPixel (XImage *, int x, int y); +extern int XPutPixel (XImage *, int x, int y, unsigned long); +extern int XDestroyImage (XImage *); +extern int XPutImage (Display *, Drawable, GC, XImage *, + int src_x, int src_y, int dest_x, int dest_y, + unsigned int w, unsigned int h); +extern XImage *XGetImage (Display *, Drawable, int x, int y, + unsigned int w, unsigned int h, + unsigned long pm, int fmt); +extern Pixmap XCreatePixmapFromBitmapData (Display *, Drawable, + const char *data, + unsigned int w, unsigned int h, + unsigned long fg, + unsigned int bg, + unsigned int depth); +extern XPixmapFormatValues *XListPixmapFormats (Display *, int *count_ret); + +extern void jwxyz_draw_NSImage_or_CGImage (Display *, Drawable, + Bool nsimg_p, void *NSImage_arg, + XRectangle *geom_ret, + int exif_rotation); + +extern int XSetGraphicsExposures (Display *, GC, Bool); +extern Bool XTranslateCoordinates (Display *, Window src_w, Window dest_w, + int src_x, int src_y, + int *dest_x_ret, int *dest_y_ret, + Window *child_ret); + +extern Font XLoadFont (Display *, const char *); +extern XFontStruct * XQueryFont (Display *, Font); +extern XFontStruct * XLoadQueryFont (Display *, const char *); +extern int XFreeFontInfo (char **names, XFontStruct *info, int n); +extern int XFreeFont (Display *, XFontStruct *); +extern int XUnloadFont (Display *, Font); +extern int XTextExtents (XFontStruct *, const char *, int length, + int *dir_ret, int *ascent_ret, int *descent_ret, + XCharStruct *overall_ret); +extern char * jwxyz_unicode_character_name (Font, unsigned long uc); +extern int XTextExtents16 (XFontStruct *, const XChar2b *, int length, + int *dir_ret, int *ascent_ret, int *descent_ret, + XCharStruct *overall_ret); +extern int XTextWidth (XFontStruct *, const char *, int length); +extern int XSetFont (Display *, GC, Font); + +extern XFontSet XCreateFontSet (Display *, char *name, + char ***missing_charset_list_return, + int *missing_charset_count_return, + char **def_string_return); +extern void XFreeFontSet (Display *, XFontSet); +extern void XFreeStringList (char **); +extern int Xutf8TextExtents (XFontSet, const char *, int num_bytes, + XRectangle *overall_ink_return, + XRectangle *overall_logical_return); +extern void Xutf8DrawString (Display *, Drawable, XFontSet, GC, + int x, int y, const char *, int num_bytes); +extern const char *jwxyz_nativeFontName (Font, float *size); + +extern Pixmap XCreatePixmap (Display *, Drawable, + unsigned int width, unsigned int height, + unsigned int depth); +extern int XFreePixmap (Display *, Pixmap); + +extern char *XGetAtomName (Display *, Atom); + +// Xt timers and fds +extern XtAppContext XtDisplayToApplicationContext (Display *); +typedef void (*XtTimerCallbackProc) (XtPointer closure, XtIntervalId *); +typedef void (*XtInputCallbackProc) (XtPointer closure, int *fd, XtInputId *); +extern XtIntervalId XtAppAddTimeOut (XtAppContext, unsigned long usecs, + XtTimerCallbackProc, XtPointer closure); +extern void XtRemoveTimeOut (XtIntervalId); +extern XtInputId XtAppAddInput (XtAppContext, int fd, XtPointer flags, + XtInputCallbackProc, XtPointer closure); +extern void XtRemoveInput (XtInputId); +extern XtInputMask XtAppPending (XtAppContext); +extern void XtAppProcessEvent (XtAppContext, XtInputMask); +extern struct jwxyz_sources_data *display_sources_data (Display *); + +// Some GLX stuff that also doesn't technically belong here... +// from XScreenSaverGLView.m +extern void glXSwapBuffers (Display *, Window); +extern void glXMakeCurrent (Display *, Window, GLXContext); + +// also declared in utils/visual.h +extern int has_writable_cells (Screen *, Visual *); +extern int visual_depth (Screen *, Visual *); +extern int visual_cells (Screen *, Visual *); +extern int visual_class (Screen *, Visual *); +extern int get_bits_per_pixel (Display *, int); +extern int screen_number (Screen *); + +// also declared in utils/grabclient.h +extern Bool use_subwindow_mode_p (Screen *, Window); + +// also declared in xlockmoreI.h +extern void clear_gl_error (void); +extern void check_gl_error (const char *type); + +struct jwxyz_Visual { + VisualID visualid; /* visual id of this visual */ + int class; /* class of screen (monochrome, etc.) */ + unsigned long red_mask, green_mask, blue_mask; /* mask values */ + int bits_per_rgb; /* log base 2 of distinct color values */ +// int map_entries; /* color map entries */ +}; + +struct jwxyz_XGCValues { + int function; /* logical operation */ +#if 0 + unsigned long plane_mask;/* plane mask */ +#endif + unsigned long foreground;/* foreground pixel */ + unsigned long background;/* background pixel */ + int line_width; /* line width */ +#if 0 + int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */ +#endif + int cap_style; /* CapNotLast, CapButt, CapRound, CapProjecting */ + int join_style; /* JoinMiter, JoinRound, JoinBevel */ +#if 0 + int fill_style; /* FillSolid, FillTiled, + FillStippled, FillOpaeueStippled */ +#endif + int fill_rule; /* EvenOddRule, WindingRule */ +#if 0 + int arc_mode; /* ArcChord, ArcPieSlice */ + Pixmap tile; /* tile pixmap for tiling operations */ + Pixmap stipple; /* stipple 1 plane pixmap for stipping */ + int ts_x_origin; /* offset for tile or stipple operations */ + int ts_y_origin; +#endif + Font font; /* default text font for text operations */ + int subwindow_mode; /* ClipByChildren, IncludeInferiors */ +#if 0 + Bool graphics_exposures;/* boolean, should exposures be generated */ +#endif + int clip_x_origin; /* origin for clipping */ + int clip_y_origin; + Pixmap clip_mask; /* bitmap clipping; other calls for rects */ +#if 0 + int dash_offset; /* patterned/dashed line information */ + char dashes; +#endif + + Bool alpha_allowed_p; /* jwxyz extension: whether pixel values may have + a non-opaque alpha component. */ + Bool antialias_p; /* jwxyz extension: whether Quartz should draw + with antialiasing. */ +}; + +struct jwxyz_XWindowAttributes { + int x, y; /* location of window */ + int width, height; /* width and height of window */ + int border_width; /* border width of window */ + int depth; /* depth of window */ + Visual *visual; /* the associated visual structure */ +#if 0 + Window root; /* root of screen containing window */ + int class; /* InputOutput, InputOnly*/ + int bit_gravity; /* one of bit gravity values */ + int win_gravity; /* one of the window gravity values */ + int backing_store; /* NotUseful, WhenMapped, Always */ + unsigned long backing_planes;/* planes to be preserved if possible */ + unsigned long backing_pixel;/* value to be used when restoring planes */ + Bool save_under; /* boolean, should bits under be saved? */ +#endif + Colormap colormap; /* color map to be associated with window */ +#if 0 + Bool map_installed; /* boolean, is color map currently installed*/ + int map_state; /* IsUnmapped, IsUnviewable, IsViewable */ + long all_event_masks; /* set of events all people have interest in*/ + long your_event_mask; /* my event mask */ + long do_not_propagate_mask; /* set of events that should not propagate */ + Bool override_redirect; /* boolean value for override-redirect */ +#endif + Screen *screen; /* back pointer to correct screen */ +}; + +struct jwxyz_XColor { + unsigned long pixel; + unsigned short red, green, blue; + char flags; /* do_red, do_green, do_blue */ + char pad; +}; + +struct jwxyz_XPoint { + short x, y; +}; + +struct jwxyz_XSegment { + short x1, y1, x2, y2; +}; + +struct jwxyz_XRectangle { + short x, y; + unsigned short width, height; +}; + +struct jwxyz_XArc { + short x, y; + unsigned short width, height; + short angle1, angle2; +}; + + +struct jwxyz_XrmOptionDescRec { + char *option; + char *specifier; + int argKind; + void *value; +}; + +struct jwxyz_XAnyEvent { + int type; +#if 0 + unsigned long serial; + Bool send_event; + Display *display; + Window window; +#endif +}; + +struct jwxyz_XKeyEvent { + int type; +#if 0 + unsigned long serial; + Bool send_event; + Display *display; + Window window; + Window root; + Window subwindow; + Time time; + int x, y; + int x_root, y_root; +#endif + unsigned int state; + unsigned int keycode; +#if 0 + Bool same_screen; +#endif +}; + +struct jwxyz_XButtonEvent { + int type; +#if 0 + unsigned long serial; + Bool send_event; + Display *display; + Window window; + Window root; + Window subwindow; + Time time; +#endif + int x, y; +#if 0 + int x_root, y_root; +#endif + unsigned int state; + unsigned int button; +#if 0 + Bool same_screen; +#endif +}; + +struct jwxyz_XMotionEvent { + int type; +#if 0 + unsigned long serial; + Bool send_event; + Display *display; + Window window; + Window root; + Window subwindow; + Time time; +#endif + int x, y; +#if 0 + int x_root, y_root; +#endif + unsigned int state; +#if 0 + char is_hint; + Bool same_screen; +#endif +}; + +union jwxyz_XEvent { + int type; + XAnyEvent xany; + XKeyEvent xkey; + XButtonEvent xbutton; + XMotionEvent xmotion; +}; + +struct jwxyz_XImage { + int width, height; /* size of image */ + int xoffset; /* number of pixels offset in X direction */ + int format; /* XYBitmap, XYPixmap, ZPixmap */ + char *data; /* pointer to image data */ + int byte_order; /* data byte order, LSBFirst, MSBFirst */ + int bitmap_unit; /* quant. of scanline 8, 16, 32 */ + int bitmap_bit_order; /* LSBFirst, MSBFirst */ + int bitmap_pad; /* 8, 16, 32 either XY or ZPixmap */ + int depth; /* depth of image */ + int bytes_per_line; /* accelarator to next line */ + int bits_per_pixel; /* bits per pixel (ZPixmap) */ + unsigned long red_mask; /* bits in z arrangment */ + unsigned long green_mask; + unsigned long blue_mask; +// XPointer obdata; /* hook for the object routines to hang on */ + struct funcs { /* image manipulation routines */ +#if 0 + XImage *(*create_image)( + Display* /* display */, + Visual* /* visual */, + unsigned int /* depth */, + int /* format */, + int /* offset */, + char* /* data */, + unsigned int /* width */, + unsigned int /* height */, + int /* bitmap_pad */, + int /* bytes_per_line */); + int (*destroy_image) (XImage *); +#endif + unsigned long (*get_pixel) (XImage *, int, int); + int (*put_pixel) (XImage *, int, int, unsigned long); +#if 0 + XImage *(*sub_image) (XImage *, int, int, unsigned int, unsigned int); + int (*add_pixel) (XImage *, long); +#endif + } f; +}; + +struct jwxyz_XCharStruct { + short lbearing; /* origin to left edge of ink */ + short rbearing; /* origin to right edge of ink */ + short width; /* advance to next char's origin */ + short ascent; /* baseline to top edge of ink */ + short descent; /* baseline to bottom edge of ink */ +#if 0 + unsigned short attributes; /* per char flags (not predefined) */ +#endif +}; + +struct jwxyz_XFontProp { + Atom name; + unsigned long card32; /* Careful: This holds (32- or 64-bit) pointers. */ +}; + +struct jwxyz_XFontStruct { +#if 0 + XExtData *ext_data; /* hook for extension to hang data */ +#endif + Font fid; /* Font id for this font */ +#if 0 + unsigned direction; /* hint about direction the font is painted */ +#endif + unsigned min_char_or_byte2; /* first character */ + unsigned max_char_or_byte2; /* last character */ +#if 0 + unsigned min_byte1; /* first row that exists */ + unsigned max_byte1; /* last row that exists */ + Bool all_chars_exist; /* flag if all characters have non-zero size*/ +#endif + unsigned default_char; /* char to print for undefined character */ + int n_properties; /* how many properties there are */ + XFontProp *properties; /* pointer to array of additional properties*/ + XCharStruct min_bounds; /* minimum bounds over all existing char*/ + XCharStruct max_bounds; /* maximum bounds over all existing char*/ + XCharStruct *per_char; /* first_char to last_char information */ + int ascent; /* log. extent above baseline for spacing */ + int descent; /* log. descent below baseline for spacing */ +}; + +struct jwxyz_XComposeStatus { + char dummy; +}; + +struct jwxyz_XPixmapFormatValues { + int depth; + int bits_per_pixel; + int scanline_pad; +}; + +struct jwxyz_XChar2b { + unsigned char byte1; + unsigned char byte2; +}; + +#endif /* __JWXYZ_H__ */