From http://www.jwz.org/xscreensaver/xscreensaver-5.38.tar.gz
[xscreensaver] / hacks / braid.c
index 55e4fa7ea77ba6d023b15bd4a4651318fdc8c7d4..4f5a77c9caa4040fd670d068a874e25a7a557a9a 100644 (file)
@@ -4,9 +4,8 @@
  *           a rotational pattern
  */
 
-#if !defined( lint ) && !defined( SABER )
+#if 0
 static const char sccsid[] = "@(#)braid.c      5.00 2000/11/01 xlockmore";
-
 #endif
 
 /*-
@@ -32,32 +31,33 @@ static const char sccsid[] = "@(#)braid.c   5.00 2000/11/01 xlockmore";
  */
 
 #ifdef STANDALONE
-#define MODE_braid
-#define PROGCLASS "Braid"
-#define HACK_INIT init_braid
-#define HACK_DRAW draw_braid
-#define braid_opts xlockmore_opts
-#define DEFAULTS "*delay: 1000 \n" \
- "*count: 15 \n" \
- "*cycles: 100 \n" \
- "*size: -7 \n" \
- "*ncolors: 64 \n"
-#define UNIFORM_COLORS
-#include "xlockmore.h"
-#include "erase.h"
+# define MODE_braid
+# define DEFAULTS  "*delay: 1000 \n" \
+                                  "*count: 15 \n" \
+                                  "*cycles: 100 \n" \
+                                  "*size: -7 \n" \
+                                  "*ncolors: 64 \n" \
+                                  "*fpsSolid: true \n" \
+                                  "*ignoreRotation: True" \
+
+# define UNIFORM_COLORS
+# define free_braid 0
+# define release_braid 0
+# define reshape_braid 0
+# define braid_handle_event 0
+# include "xlockmore.h"
 #else /* STANDALONE */
-#include "xlock.h"
-
+# include "xlock.h"
+# define ENTRYPOINT /**/
 #endif /* STANDALONE */
 
 #ifdef MODE_braid
 
-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 =
-{"braid", "init_braid", "draw_braid", "release_braid",
+{"braid", "init_braid", "draw_braid", (char *) NULL,
  "refresh_braid", "init_braid", (char *) NULL, &braid_opts,
  1000, 15, 100, 1, 64, 1.0, "",
  "Shows random braids and knots", 0, NULL};
@@ -162,7 +162,7 @@ applywordbackto(braidtype * braid, int string, int position)
        return c;
 }
 
-void
+ENTRYPOINT void
 init_braid(ModeInfo * mi)
 {
        braidtype  *braid;
@@ -170,11 +170,7 @@ init_braid(ModeInfo * mi)
        int         i, count, comp, c;
        float       min_length;
 
-       if (braids == NULL) {
-               if ((braids = (braidtype *) calloc(MI_NUM_SCREENS(mi),
-                                               sizeof (braidtype))) == NULL)
-                       return;
-       }
+       MI_INIT (mi, braids);
        braid = &braids[MI_SCREEN(mi)];
 
        braid->center_x = MI_WIDTH(mi) / 2;
@@ -197,7 +193,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] =
@@ -266,7 +262,7 @@ init_braid(ModeInfo * mi)
                        braid->components[i] *= -1;
 }
 
-void
+ENTRYPOINT void
 draw_braid(ModeInfo * mi)
 {
        Display    *display = MI_DISPLAY(mi);
@@ -430,26 +426,18 @@ draw_braid(ModeInfo * mi)
        XSetLineAttributes(display, MI_GC(mi), 1, LineSolid, CapNotLast, JoinRound);
 
        if (++braid->age > MI_CYCLES(mi)) {
-#ifdef STANDALONE
-         erase_full_window(MI_DISPLAY(mi), MI_WINDOW(mi));
-#endif
                init_braid(mi);
        }
 }
 
-void
-release_braid(ModeInfo * mi)
-{
-       if (braids != NULL) {
-               (void) free((void *) braids);
-               braids = (braidtype *) NULL;
-       }
-}
-
-void
+#ifndef STANDALONE
+ENTRYPOINT void
 refresh_braid(ModeInfo * mi)
 {
        MI_CLEARWINDOW(mi);
 }
+#endif
+
+XSCREENSAVER_MODULE ("Braid", braid)
 
 #endif /* MODE_braid */