-/* xscreensaver, Copyright (c) 1992, 1995 Jamie Zawinski <jwz@netscape.com>
+/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997, 1998
+ * 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
#define NBITS 12
-#include <X11/bitmaps/stipple>
-#include <X11/bitmaps/cross_weave>
-#include <X11/bitmaps/dimple1>
-#include <X11/bitmaps/dimple3>
-#include <X11/bitmaps/flipped_gray>
-#include <X11/bitmaps/gray1>
-#include <X11/bitmaps/gray3>
-#include <X11/bitmaps/hlines2>
-#include <X11/bitmaps/light_gray>
-#include <X11/bitmaps/root_weave>
-#include <X11/bitmaps/vlines2>
-#include <X11/bitmaps/vlines3>
+/* On some systems (notably MacOS X) these files are messed up.
+ * They're tiny, so we might as well just inline them here.
+ *
+ * # include <X11/bitmaps/stipple>
+ * # include <X11/bitmaps/cross_weave>
+ * # include <X11/bitmaps/dimple1>
+ * # include <X11/bitmaps/dimple3>
+ * # include <X11/bitmaps/flipped_gray>
+ * # include <X11/bitmaps/gray1>
+ * # include <X11/bitmaps/gray3>
+ * # include <X11/bitmaps/hlines2>
+ * # include <X11/bitmaps/light_gray>
+ * # include <X11/bitmaps/root_weave>
+ * # include <X11/bitmaps/vlines2>
+ * # include <X11/bitmaps/vlines3>
+*/
+
+#define stipple_width 16
+#define stipple_height 4
+static char stipple_bits[] = { 0x55, 0x55, 0xee, 0xee, 0x55, 0x55, 0xba, 0xbb};
+
+#define cross_weave_width 16
+#define cross_weave_height 16
+static char cross_weave_bits[] = {
+ 0x55, 0x55, 0x88, 0x88, 0x55, 0x55, 0x22, 0x22, 0x55, 0x55, 0x88, 0x88,
+ 0x55, 0x55, 0x22, 0x22, 0x55, 0x55, 0x88, 0x88, 0x55, 0x55, 0x22, 0x22,
+ 0x55, 0x55, 0x88, 0x88, 0x55, 0x55, 0x22, 0x22};
+
+#define dimple1_width 16
+#define dimple1_height 16
+static char dimple1_bits[] = {
+ 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00,
+ 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00,
+ 0x55, 0x55, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00};
+
+#define dimple3_width 16
+#define dimple3_height 16
+static char dimple3_bits[] = {
+ 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+#define flipped_gray_width 4
+#define flipped_gray_height 2
+static char flipped_gray_bits[] = { 0x07, 0x0d};
+#define gray1_width 2
+#define gray1_height 2
+static char gray1_bits[] = { 0x01, 0x02};
+#define gray3_width 4
+#define gray3_height 4
+static char gray3_bits[] = { 0x01, 0x00, 0x04, 0x00};
+#define hlines2_width 1
+#define hlines2_height 2
+static char hlines2_bits[] = { 0x01, 0x00};
+#define light_gray_width 4
+#define light_gray_height 2
+static char light_gray_bits[] = { 0x08, 0x02};
+#define root_weave_width 4
+#define root_weave_height 4
+static char root_weave_bits[] = { 0x07, 0x0d, 0x0b, 0x0e};
+#define vlines2_width 2
+#define vlines2_height 1
+static char vlines2_bits[] = { 0x01};
+#define vlines3_width 3
+#define vlines3_height 1
+static char vlines3_bits[] = { 0x02};
+
+
+
static Pixmap pixmaps [NBITS];
static GC gc;
static int npixels;
static void
-init_greynetic (dpy, window)
- Display *dpy;
- Window window;
+init_greynetic (Display *dpy, Window window)
{
int i;
XGCValues gcv;
}
static void
-greynetic (dpy, window)
- Display *dpy;
- Window window;
+greynetic (Display *dpy, Window window)
{
static int tick = 500, xlim, ylim;
static Colormap cmap;
- int x, y, w, h, i;
+ int x, y, w=0, h=0, i;
XGCValues gcv;
if (tick++ == 500)
{
gcv.stipple = pixmaps [random () % NBITS];
if (mono_p)
{
+ MONO:
if (random () & 1)
gcv.foreground = fg, gcv.background = bg;
else
gcv.background = bgc.pixel;
goto DONE;
REUSE:
+ if (npixels <= 0)
+ {
+ mono_p = 1;
+ goto MONO;
+ }
gcv.foreground = pixels [random () % npixels];
gcv.background = pixels [random () % npixels];
DONE:
}
XChangeGC (dpy, gc, GCStipple|GCForeground|GCBackground, &gcv);
XFillRectangle (dpy, window, gc, x, y, w, h);
- XSync (dpy, True);
+ XSync (dpy, False);
}
\f
char *progclass = "Greynetic";
char *defaults [] = {
- "Greynetic.background: black", /* to placate SGI */
- "Greynetic.foreground: white",
- "*delay: 0",
+ ".background: black",
+ ".foreground: white",
+ "*delay: 10000",
0
};
XrmOptionDescRec options [] = {
- { "-delay", ".delay", XrmoptionSepArg, 0 }
+ { "-delay", ".delay", XrmoptionSepArg, 0 },
+ { 0, 0, 0, 0 }
};
-int options_size = (sizeof (options) / sizeof (options[0]));
void
-screenhack (dpy, window)
- Display *dpy;
- Window window;
+screenhack (Display *dpy, Window window)
{
init_greynetic (dpy, window);
while (1)
{
greynetic (dpy, window);
+ screenhack_handle_events (dpy);
if (delay) usleep (delay);
}
}