/* -*- Mode: C; tab-width: 4 -*- */
/* hop --- real plane fractals */
-#if !defined( lint ) && !defined( SABER )
+#if 0
static const char sccsid[] = "@(#)hop.c 5.00 2000/11/01 xlockmore";
-
#endif
/*-
#ifdef STANDALONE
#define MODE_hop
-#define PROGCLASS "Hop"
-#define HACK_INIT init_hop
-#define HACK_DRAW draw_hop
-#define hop_opts xlockmore_opts
-#define DEFAULTS "*delay: 10000 \n" \
- "*count: 1000 \n" \
- "*cycles: 2500 \n" \
- "*ncolors: 200 \n"
-#define SMOOTH_COLORS
-#include "xlockmore.h" /* in xscreensaver distribution */
-#include "erase.h"
+#define DEFAULTS "*delay: 10000 \n" \
+ "*count: 1000 \n" \
+ "*cycles: 2500 \n" \
+ "*ncolors: 200 \n" \
+ "*fpsSolid: true \n" \
+
+# define SMOOTH_COLORS
+# define reshape_hop 0
+# define hop_handle_event 0
+# include "xlockmore.h" /* in xscreensaver distribution */
+# include "erase.h"
#else /* STANDALONE */
-#include "xlock.h" /* in xlockmore distribution */
-
+# include "xlock.h" /* in xlockmore distribution */
#endif /* STANDALONE */
#ifdef MODE_hop
static XrmOptionDescRec opts[] =
{
- {(char *) "-martin", (char *) ".hop.martin", XrmoptionNoArg, (caddr_t) "on"},
- {(char *) "+martin", (char *) ".hop.martin", XrmoptionNoArg, (caddr_t) "off"},
- {(char *) "-popcorn", (char *) ".hop.popcorn", XrmoptionNoArg, (caddr_t) "on"},
- {(char *) "+popcorn", (char *) ".hop.popcorn", XrmoptionNoArg, (caddr_t) "off"},
- {(char *) "-ejk1", (char *) ".hop.ejk1", XrmoptionNoArg, (caddr_t) "on"},
- {(char *) "+ejk1", (char *) ".hop.ejk1", XrmoptionNoArg, (caddr_t) "off"},
- {(char *) "-ejk2", (char *) ".hop.ejk2", XrmoptionNoArg, (caddr_t) "on"},
- {(char *) "+ejk2", (char *) ".hop.ejk2", XrmoptionNoArg, (caddr_t) "off"},
- {(char *) "-ejk3", (char *) ".hop.ejk3", XrmoptionNoArg, (caddr_t) "on"},
- {(char *) "+ejk3", (char *) ".hop.ejk3", XrmoptionNoArg, (caddr_t) "off"},
- {(char *) "-ejk4", (char *) ".hop.ejk4", XrmoptionNoArg, (caddr_t) "on"},
- {(char *) "+ejk4", (char *) ".hop.ejk4", XrmoptionNoArg, (caddr_t) "off"},
- {(char *) "-ejk5", (char *) ".hop.ejk5", XrmoptionNoArg, (caddr_t) "on"},
- {(char *) "+ejk5", (char *) ".hop.ejk5", XrmoptionNoArg, (caddr_t) "off"},
- {(char *) "-ejk6", (char *) ".hop.ejk6", XrmoptionNoArg, (caddr_t) "on"},
- {(char *) "+ejk6", (char *) ".hop.ejk6", XrmoptionNoArg, (caddr_t) "off"},
- {(char *) "-rr", (char *) ".hop.rr", XrmoptionNoArg, (caddr_t) "on"},
- {(char *) "+rr", (char *) ".hop.rr", XrmoptionNoArg, (caddr_t) "off"},
- {(char *) "-jong", (char *) ".hop.jong", XrmoptionNoArg, (caddr_t) "on"},
- {(char *) "+jong", (char *) ".hop.jong", XrmoptionNoArg, (caddr_t) "off"},
- {(char *) "-sine", (char *) ".hop.sine", XrmoptionNoArg, (caddr_t) "on"},
- {(char *) "+sine", (char *) ".hop.sine", XrmoptionNoArg, (caddr_t) "off"}
+ {"-martin", ".hop.martin", XrmoptionNoArg, "on"},
+ {"+martin", ".hop.martin", XrmoptionNoArg, "off"},
+ {"-popcorn", ".hop.popcorn", XrmoptionNoArg, "on"},
+ {"+popcorn", ".hop.popcorn", XrmoptionNoArg, "off"},
+ {"-ejk1", ".hop.ejk1", XrmoptionNoArg, "on"},
+ {"+ejk1", ".hop.ejk1", XrmoptionNoArg, "off"},
+ {"-ejk2", ".hop.ejk2", XrmoptionNoArg, "on"},
+ {"+ejk2", ".hop.ejk2", XrmoptionNoArg, "off"},
+ {"-ejk3", ".hop.ejk3", XrmoptionNoArg, "on"},
+ {"+ejk3", ".hop.ejk3", XrmoptionNoArg, "off"},
+ {"-ejk4", ".hop.ejk4", XrmoptionNoArg, "on"},
+ {"+ejk4", ".hop.ejk4", XrmoptionNoArg, "off"},
+ {"-ejk5", ".hop.ejk5", XrmoptionNoArg, "on"},
+ {"+ejk5", ".hop.ejk5", XrmoptionNoArg, "off"},
+ {"-ejk6", ".hop.ejk6", XrmoptionNoArg, "on"},
+ {"+ejk6", ".hop.ejk6", XrmoptionNoArg, "off"},
+ {"-rr", ".hop.rr", XrmoptionNoArg, "on"},
+ {"+rr", ".hop.rr", XrmoptionNoArg, "off"},
+ {"-jong", ".hop.jong", XrmoptionNoArg, "on"},
+ {"+jong", ".hop.jong", XrmoptionNoArg, "off"},
+ {"-sine", ".hop.sine", XrmoptionNoArg, "on"},
+ {"+sine", ".hop.sine", XrmoptionNoArg, "off"}
};
static argtype vars[] =
{
- {(caddr_t *) & martin, (char *) "martin", (char *) "Martin", (char *) DEF_MARTIN, t_Bool},
- {(caddr_t *) & popcorn, (char *) "popcorn", (char *) "Popcorn", (char *) DEF_POPCORN, t_Bool},
- {(caddr_t *) & ejk1, (char *) "ejk1", (char *) "EJK1", (char *) DEF_EJK1, t_Bool},
- {(caddr_t *) & ejk2, (char *) "ejk2", (char *) "EJK2", (char *) DEF_EJK2, t_Bool},
- {(caddr_t *) & ejk3, (char *) "ejk3", (char *) "EJK3", (char *) DEF_EJK3, t_Bool},
- {(caddr_t *) & ejk4, (char *) "ejk4", (char *) "EJK4", (char *) DEF_EJK4, t_Bool},
- {(caddr_t *) & ejk5, (char *) "ejk5", (char *) "EJK5", (char *) DEF_EJK5, t_Bool},
- {(caddr_t *) & ejk6, (char *) "ejk6", (char *) "EJK6", (char *) DEF_EJK6, t_Bool},
- {(caddr_t *) & rr, (char *) "rr", (char *) "RR", (char *) DEF_RR, t_Bool},
- {(caddr_t *) & jong, (char *) "jong", (char *) "Jong", (char *) DEF_JONG, t_Bool},
- {(caddr_t *) & sine, (char *) "sine", (char *) "Sine", (char *) DEF_SINE, t_Bool}
+ {&martin, "martin", "Martin", DEF_MARTIN, t_Bool},
+ {&popcorn, "popcorn", "Popcorn", DEF_POPCORN, t_Bool},
+ {&ejk1, "ejk1", "EJK1", DEF_EJK1, t_Bool},
+ {&ejk2, "ejk2", "EJK2", DEF_EJK2, t_Bool},
+ {&ejk3, "ejk3", "EJK3", DEF_EJK3, t_Bool},
+ {&ejk4, "ejk4", "EJK4", DEF_EJK4, t_Bool},
+ {&ejk5, "ejk5", "EJK5", DEF_EJK5, t_Bool},
+ {&ejk6, "ejk6", "EJK6", DEF_EJK6, t_Bool},
+ {&rr, "rr", "RR", DEF_RR, t_Bool},
+ {&jong, "jong", "Jong", DEF_JONG, t_Bool},
+ {&sine, "sine", "Sine", DEF_SINE, t_Bool}
};
static OptionStruct desc[] =
{
- {(char *) "-/+martin", (char *) "turn on/off sqrt format"},
- {(char *) "-/+popcorn", (char *) "turn on/off Clifford A. Pickover's popcorn format"},
- {(char *) "-/+ejk1", (char *) "turn on/off ejk1 format"},
- {(char *) "-/+ejk2", (char *) "turn on/off ejk2 format"},
- {(char *) "-/+ejk3", (char *) "turn on/off ejk3 format"},
- {(char *) "-/+ejk4", (char *) "turn on/off ejk4 format"},
- {(char *) "-/+ejk5", (char *) "turn on/off ejk5 format"},
- {(char *) "-/+ejk6", (char *) "turn on/off ejk6 format"},
- {(char *) "-/+rr", (char *) "turn on/off rr format"},
- {(char *) "-/+jong", (char *) "turn on/off jong format"},
- {(char *) "-/+sine", (char *) "turn on/off sine format"}
+ {"-/+martin", "turn on/off sqrt format"},
+ {"-/+popcorn", "turn on/off Clifford A. Pickover's popcorn format"},
+ {"-/+ejk1", "turn on/off ejk1 format"},
+ {"-/+ejk2", "turn on/off ejk2 format"},
+ {"-/+ejk3", "turn on/off ejk3 format"},
+ {"-/+ejk4", "turn on/off ejk4 format"},
+ {"-/+ejk5", "turn on/off ejk5 format"},
+ {"-/+ejk6", "turn on/off ejk6 format"},
+ {"-/+rr", "turn on/off rr format"},
+ {"-/+jong", "turn on/off jong format"},
+ {"-/+sine", "turn on/off sine format"}
};
-ModeSpecOpt hop_opts =
+ENTRYPOINT ModeSpecOpt hop_opts =
{sizeof opts / sizeof opts[0], opts, sizeof vars / sizeof vars[0], vars, desc};
#ifdef USE_MODULES
int count;
int bufsize;
XPoint *pointBuffer; /* pointer for XDrawPoints */
+#ifdef STANDALONE
+ eraser_state *eraser;
+#endif
} hopstruct;
static hopstruct *hops = (hopstruct *) NULL;
-void
+ENTRYPOINT void
init_hop(ModeInfo * mi)
{
Display *display = MI_DISPLAY(mi);
return;
}
+#ifndef STANDALONE
MI_CLEARWINDOW(mi);
+#endif
XSetForeground(display, gc, MI_WHITE_PIXEL(mi));
hp->count = 0;
}
-void
+ENTRYPOINT void
draw_hop(ModeInfo * mi)
{
double oldj, oldi;
if (hops == NULL)
return;
hp = &hops[MI_SCREEN(mi)];
+
+#ifdef STANDALONE
+ if (hp->eraser) {
+ hp->eraser = erase_window (MI_DISPLAY(mi), MI_WINDOW(mi), hp->eraser);
+ return;
+ }
+#endif
+
+
if (hp->pointBuffer == NULL)
return;
xp = hp->pointBuffer;
hp->pointBuffer, hp->bufsize, CoordModeOrigin);
if (++hp->count > MI_CYCLES(mi)) {
#ifdef STANDALONE
- erase_full_window(MI_DISPLAY(mi), MI_WINDOW(mi));
+ hp->eraser = erase_window (MI_DISPLAY(mi), MI_WINDOW(mi), hp->eraser);
#endif /* STANDALONE */
init_hop(mi);
}
}
-void
+ENTRYPOINT void
release_hop(ModeInfo * mi)
{
if (hops != NULL) {
}
}
-void
+ENTRYPOINT void
refresh_hop(ModeInfo * mi)
{
MI_CLEARWINDOW(mi);
}
+XSCREENSAVER_MODULE_2 ("Hopalong", hopalong, hop)
+
#endif /* MODE_hop */