From http://www.jwz.org/xscreensaver/xscreensaver-5.34.tar.gz
[xscreensaver] / OSX / jwxyz.h
index 35e7f5572b56beefaf9006bfaf8f509aef895a3c..69b716b248bbb53648818d179fec34faab40f626 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1991-2006 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1991-2015 Jamie Zawinski <jwz@jwz.org>
  *
  * 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)
@@ -231,11 +287,19 @@ typedef void *                            XtPointer;
 #define RootWindowOfScreen(s) RootWindow(DisplayOfScreen(s),0)
 #define DisplayWidth XDisplayWidth
 #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 *);
@@ -246,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);
@@ -321,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,
@@ -356,8 +426,10 @@ extern Pixmap XCreatePixmapFromBitmapData (Display *, Drawable,
                                            unsigned int depth);
 extern XPixmapFormatValues *XListPixmapFormats (Display *, int *count_ret);
 
-extern void jwxyz_draw_NSImage (Display *, Drawable, void *NSImage_arg,
-                                XRectangle *geom_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,
@@ -374,15 +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 Font XGContextFromGC (GC);
+
+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 *);
@@ -393,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...
@@ -405,13 +497,12 @@ 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);
 
-// for aglUseFont
-extern int jwxyz_font_info (Font, int *size_ret, int *face_ret);
-
 
 struct jwxyz_Visual {
   VisualID visualid;   /* visual id of this visual */
@@ -650,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 */
@@ -676,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 */
@@ -697,4 +791,9 @@ struct  jwxyz_XPixmapFormatValues {
   int scanline_pad;
 };
 
+struct jwxyz_XChar2b {
+  unsigned char byte1;
+  unsigned char byte2;
+};
+
 #endif /* __JWXYZ_H__ */