From http://www.jwz.org/xscreensaver/xscreensaver-5.30.tar.gz
[xscreensaver] / hacks / braid.c
index 1a802ff7fdbddb4a52fcdcaf9c2ec1df5e839aed..a1bb6a47403e4369ce3b61c7290dfc813de183df 100644 (file)
@@ -36,10 +36,11 @@ static const char sccsid[] = "@(#)braid.c   5.00 2000/11/01 xlockmore";
                                   "*count: 15 \n" \
                                   "*cycles: 100 \n" \
                                   "*size: -7 \n" \
-                                  "*ncolors: 64 \n"
+                                  "*ncolors: 64 \n" \
+                                  "*fpsSolid: true \n" \
+                                  "*ignoreRotation: True" \
+
 # define UNIFORM_COLORS
-# define reshape_braid 0
-# define braid_handle_event 0
 # include "xlockmore.h"
 # include "erase.h"
 #else /* STANDALONE */
@@ -49,8 +50,7 @@ static const char sccsid[] = "@(#)braid.c     5.00 2000/11/01 xlockmore";
 
 #ifdef MODE_braid
 
-ENTRYPOINT ModeSpecOpt braid_opts =
-{0, (XrmOptionDescRec *) NULL, 0, (argtype *) NULL, (OptionStruct *) NULL};
+ENTRYPOINT ModeSpecOpt braid_opts = {0, NULL, 0, NULL, NULL};
 
 #ifdef USE_MODULES
 ModStruct   braid_description =
@@ -199,7 +199,7 @@ init_braid(ModeInfo * mi)
                braid->nstrands = INTRAND(MINSTRANDS,
                                       MAX(MIN(MIN(MAXSTRANDS, MI_COUNT(mi)),
                                               (int) ((braid->max_radius - braid->min_radius) / 5.0)), MINSTRANDS));
-       braid->braidlength = INTRAND(MINLENGTH, MIN(MAXLENGTH, braid->nstrands * 6));
+       braid->braidlength = INTRAND(MINLENGTH, MIN(MAXLENGTH -1, braid->nstrands * 6));
 
        for (i = 0; i < braid->braidlength; i++) {
                braid->braidword[i] =
@@ -446,6 +446,25 @@ draw_braid(ModeInfo * mi)
        }
 }
 
+ENTRYPOINT void
+reshape_braid(ModeInfo * mi, int width, int height)
+{
+  XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi));
+  init_braid (mi);
+}
+
+ENTRYPOINT Bool
+braid_handle_event (ModeInfo *mi, XEvent *event)
+{
+  if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+    {
+      reshape_braid (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+      return True;
+    }
+
+  return False;
+}
+
 ENTRYPOINT void
 release_braid(ModeInfo * mi)
 {