http://packetstormsecurity.org/UNIX/admin/xscreensaver-4.04.2.tar.gz
[xscreensaver] / hacks / xlockmore.h
index 9ad4e98e34bd5aaedddb5c3b2ba40853ee8ab3ff..3b390f039a16783bae5754b60c226538434865f3 100644 (file)
@@ -1,5 +1,5 @@
 /* xlockmore.h --- xscreensaver compatibility layer for xlockmore modules.
- * xscreensaver, Copyright (c) 1997, 1998 Jamie Zawinski <jwz@netscape.com>
+ * xscreensaver, Copyright (c) 1997-2002 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
@@ -11,7 +11,7 @@
  *
  * The definitions in this file make it possible to compile an xlockmore
  * module into a standalone program, and thus use it with xscreensaver.
- * By Jamie Zawinski <jwz@netscape.com> on 10-May-97; based on the ideas
+ * By Jamie Zawinski <jwz@jwz.org> on 10-May-97; based on the ideas
  * in the older xlock.h by Charles Hannum <mycroft@ai.mit.edu>.  (I had
  * to redo it, since xlockmore has diverged so far from xlock...)
  */
@@ -35,8 +35,11 @@ ERROR!  Sorry, xlockmore.h requires ANSI C (gcc, for example.)
 #ifdef USE_GL
 # include <GL/glx.h>
   extern GLXContext *init_GL (ModeInfo *);
+  extern void clear_gl_error (void);
+  extern void check_gl_error (const char *type);
+  extern void do_fps (ModeInfo *);
 # define FreeAllGL(dpy) /* */
-#endif
+#endif /* !USE_GL */
 
 /* Accessor macros for the ModeInfo structure
  */
@@ -73,7 +76,12 @@ ERROR!  Sorry, xlockmore.h requires ANSI C (gcc, for example.)
 #define MI_CYCLES(MI)          ((MI)->cycles)
 #define MI_BATCHCOUNT(MI)      ((MI)->batchcount)
 #define MI_SIZE(MI)            ((MI)->size)
+#define MI_IS_DRAWN(MI)                ((MI)->is_drawn)
+#define MI_IS_FPS(MI)          ((MI)->fps_p)
+#define MI_NCOLORS(MI)         ((MI)->npixels)
+#define MI_NAME(MI)            (progname)
 
+#define MI_COLORMAP(MI)                (MI_WIN_COLORMAP((MI)))
 #define MI_WIDTH(MI)           (MI_WIN_WIDTH((MI)))
 #define MI_HEIGHT(MI)          (MI_WIN_HEIGHT((MI)))
 #define MI_IS_ICONIC(MI)       (MI_WIN_IS_ICONIC((MI)))
@@ -82,6 +90,11 @@ ERROR!  Sorry, xlockmore.h requires ANSI C (gcc, for example.)
 #define MI_COUNT(MI)           (MI_BATCHCOUNT((MI)))
 #define MI_BLACK_PIXEL(MI)     (MI_WIN_BLACK_PIXEL(MI))
 #define MI_WHITE_PIXEL(MI)     (MI_WIN_WHITE_PIXEL(MI))
+#define MI_IS_FULLRANDOM(MI)   (MI_WIN_IS_FULLRANDOM(MI))
+#define MI_IS_VERBOSE(MI)      (MI_WIN_IS_VERBOSE(MI))
+#define MI_IS_INSTALL(MI)      (MI_WIN_IS_INSTALL(MI))
+#define MI_IS_DEBUG(MI)                (False)
+#define MI_IS_MOUSE(MI)                (False)
 
 #define MI_CLEARWINDOW(mi) XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi))
 
@@ -117,6 +130,18 @@ extern void HACK_DRAW(ModeInfo *);
 # define HACK_FREE 0
 #endif
 
+#ifdef HACK_RESHAPE
+  extern void HACK_RESHAPE(ModeInfo *, int width, int height);
+#else
+# define HACK_RESHAPE 0
+#endif
+
+#ifdef HACK_HANDLE_EVENT
+  extern Bool HACK_HANDLE_EVENT(ModeInfo *, XEvent *e);
+#else
+# define HACK_HANDLE_EVENT 0
+#endif
+
 
 /* Emit code for the entrypoint used by screenhack.c, and pass control
    down into xlockmore.c with the appropriate parameters.
@@ -152,8 +177,16 @@ void screenhack (Display *dpy, Window window)
                        False,
 #endif
 
+#ifdef EVENT_MASK
+                       EVENT_MASK,
+#else
+                       0,
+#endif
+
                        HACK_INIT,
                        HACK_DRAW,
+                       HACK_RESHAPE,
+                       HACK_HANDLE_EVENT,
                        HACK_FREE);
 }