From http://www.jwz.org/xscreensaver/xscreensaver-5.22.tar.gz
[xscreensaver] / hacks / thornbird.c
index 44a2a59f294e7cb96eacac744f37ccfc07989c79..cb5541de2e99b9bc12e3c697f558c7971a03e997 100644 (file)
@@ -6,7 +6,7 @@ static const char sccsid[] = "@(#)thornbird.c   5.00 2000/11/01 xlockmore";
 #endif
 
 /*-
- * Copyright (c) 1996 by Tim Auckland <Tim.Auckland@Procket.com>
+ * Copyright (c) 1996 by Tim Auckland <tda10.geo@yahoo.com>
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation for any purpose and without fee is hereby granted,
@@ -30,24 +30,24 @@ static const char sccsid[] = "@(#)thornbird.c       5.00 2000/11/01 xlockmore";
  */
 
 #ifdef STANDALONE
-#define MODE_thornbird
-#define PROGCLASS "Thornbird"
-#define HACK_INIT init_thornbird
-#define HACK_DRAW draw_thornbird
-#define thornbird_opts xlockmore_opts
-#define DEFAULTS "*delay: 10000 \n" \
"*count: 800 \n" \
- "*cycles: 16 \n" \
- "*ncolors: 64 \n"
-#define SMOOTH_COLORS
-#include "xlockmore.h"         /* in xscreensaver distribution */
+# define MODE_thornbird
+#define DEFAULTS       "*delay:    10000 \n" \
+                                       "*count:    100   \n" \
+                                        "*cycles:  400   \n" \
+                                        "*ncolors: 64    \n" \
+                                        "*fpsSolid: true    \n" \
                                      "*ignoreRotation: True \n" \
+
+# define BRIGHT_COLORS
+# define thornbird_handle_event 0
+# include "xlockmore.h"                /* in xscreensaver distribution */
 #else /* STANDALONE */
-#include "xlock.h"             /* in xlockmore distribution */
+# include "xlock.h"            /* in xlockmore distribution */
 #endif /* STANDALONE */
 
 #ifdef MODE_thornbird
 
-ModeSpecOpt thornbird_opts =
+ENTRYPOINT ModeSpecOpt thornbird_opts =
 {0, (XrmOptionDescRec *) NULL, 0, (argtype *) NULL, (OptionStruct *) NULL};
 
 #ifdef USE_MODULES
@@ -104,8 +104,8 @@ free_thornbird(thornbirdstruct *hp)
        }
 }
 
-void
-init_thornbird(ModeInfo * mi)
+ENTRYPOINT void
+init_thornbird (ModeInfo * mi)
 {
        thornbirdstruct *hp;
 
@@ -160,7 +160,7 @@ init_thornbird(ModeInfo * mi)
 }
 
 
-void
+ENTRYPOINT void
 draw_thornbird(ModeInfo * mi)
 {
        Display    *dsp = MI_DISPLAY(mi);
@@ -235,7 +235,11 @@ draw_thornbird(ModeInfo * mi)
        }
        if (MI_NPIXELS(mi) > 2) {
                XSetForeground(dsp, gc, MI_PIXEL(mi, hp->pix));
+#if 0
                if (erase == 0) /* change colours after "cycles" cycles */
+#else
+        if (!((hp->inc + 1) % (1 + (MI_CYCLES(mi) / 3)))) /* jwz: sooner */
+#endif
                        if (++hp->pix >= MI_NPIXELS(mi))
                                hp->pix = 0;
        } else
@@ -244,10 +248,16 @@ draw_thornbird(ModeInfo * mi)
        XDrawPoints(dsp, win, gc, hp->pointBuffer[current],
                    batchcount, CoordModeOrigin);
        hp->inc++;
+}
 
+ENTRYPOINT void
+reshape_thornbird(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_thornbird (mi);
 }
 
-void
+ENTRYPOINT void
 release_thornbird(ModeInfo * mi)
 {
        if (thornbirds != NULL) {
@@ -260,10 +270,13 @@ release_thornbird(ModeInfo * mi)
        }
 }
 
-void
-refresh_thornbird(ModeInfo * mi)
+ENTRYPOINT void
+refresh_thornbird (ModeInfo * mi)
 {
        MI_CLEARWINDOW(mi);
 }
 
+
+XSCREENSAVER_MODULE ("Thornbird", thornbird)
+
 #endif /* MODE_thornbird */