X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=OSX%2Fjwxyz.h;h=69b716b248bbb53648818d179fec34faab40f626;hb=88cfe534a698a0562e81345957a50714af1453bc;hp=ad3947c2d53da74ca7fa36968ea88ca1509c9974;hpb=5f1f12f2a37da634000f96d18d59cc73a8814ef7;p=xscreensaver diff --git a/OSX/jwxyz.h b/OSX/jwxyz.h index ad3947c2..69b716b2 100644 --- a/OSX/jwxyz.h +++ b/OSX/jwxyz.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1991-2010 Jamie Zawinski +/* xscreensaver, Copyright (c) 1991-2015 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 @@ -19,6 +19,9 @@ #ifndef __JWXYZ_H__ #define __JWXYZ_H__ +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; @@ -26,6 +29,7 @@ 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; @@ -43,11 +47,14 @@ 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; @@ -67,9 +74,15 @@ 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 @@ -195,6 +208,47 @@ typedef void * XtPointer; #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 */ @@ -212,12 +266,14 @@ typedef void * XtPointer; // #define GXnand 0xe /* NOT src OR NOT dst */ #define GXset 0xf /* 1 */ +#define XA_FONT 18 + #define DefaultScreen(dpy) (0) -#define BlackPixelOfScreen(s) (0xFF000000) -#define WhitePixelOfScreen(s) (0xFFFFFFFF) -#define BlackPixel(dpy,n) BlackPixelOfScreen(0) -#define WhitePixel(dpy,n) WhitePixelOfScreen(0) -#define CellsOfScreen(s) (0x00FFFFFF) +#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) @@ -233,10 +289,17 @@ typedef void * XtPointer; #define DisplayHeight XDisplayHeight #define XMaxRequestSize(dpy) (65535) -extern Display *jwxyz_make_display (void *nsview); +#define ScreenCount(dpy) jwxyz_ScreenCount(dpy) +extern int jwxyz_ScreenCount(Display *); + +extern Display *jwxyz_make_display (void *nsview, void *cgc); extern void jwxyz_free_display (Display *); extern void *jwxyz_window_view (Window); -extern void jwxyz_window_resized (Display *, Window w); +extern void jwxyz_window_resized (Display *, Window, + int, int, int, int, + void *cgc); +extern void jwxyz_mouse_moved (Display *, Window, int x, int y); +extern void jwxyz_flush_context (Display *); extern Window XRootWindow (Display *, int screen); extern Screen *XDefaultScreenOfDisplay (Display *); @@ -247,6 +310,10 @@ extern int XScreenNumberOfScreen (Screen *); extern int XDisplayWidth (Display *, int); extern int XDisplayHeight (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); @@ -322,6 +389,8 @@ 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, @@ -377,14 +446,33 @@ 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 *); @@ -395,6 +483,8 @@ 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... @@ -407,10 +497,13 @@ 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); + struct jwxyz_Visual { VisualID visualid; /* visual id of this visual */ int class; /* class of screen (monochrome, etc.) */ @@ -648,16 +741,21 @@ struct jwxyz_XImage { }; struct jwxyz_XCharStruct { - short lbearing; /* origin to left edge of raster */ - short rbearing; /* origin to right edge of raster */ + 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 raster */ - short descent; /* baseline to bottom edge of raster */ + 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 */ @@ -674,10 +772,8 @@ struct jwxyz_XFontStruct { Bool all_chars_exist; /* flag if all characters have non-zero size*/ #endif unsigned default_char; /* char to print for undefined character */ -#if 0 int n_properties; /* how many properties there are */ XFontProp *properties; /* pointer to array of additional properties*/ -#endif 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 */ @@ -695,4 +791,9 @@ struct jwxyz_XPixmapFormatValues { int scanline_pad; }; +struct jwxyz_XChar2b { + unsigned char byte1; + unsigned char byte2; +}; + #endif /* __JWXYZ_H__ */