X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fhopalong.c;h=10e2656d937b940e6603d636639a026362e7dd99;hb=4ade52359b6eba3621566dac79793a33aa4c915f;hp=949c5b9f1086336c4b9551022ba1ddebfeea3f6a;hpb=a94197e76a5dea5cb60542840809d6c20d0abbf3;p=xscreensaver diff --git a/hacks/hopalong.c b/hacks/hopalong.c index 949c5b9f..10e2656d 100644 --- a/hacks/hopalong.c +++ b/hacks/hopalong.c @@ -1,9 +1,8 @@ /* -*- 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 /*- @@ -53,20 +52,20 @@ static const char sccsid[] = "@(#)hop.c 5.00 2000/11/01 xlockmore"; #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" \ + "*ignoreRotation: 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 @@ -97,59 +96,59 @@ static Bool sine; 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 @@ -188,11 +187,14 @@ typedef struct { 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); @@ -387,14 +389,16 @@ init_hop(ModeInfo * 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; @@ -405,6 +409,15 @@ draw_hop(ModeInfo * mi) 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; @@ -533,13 +546,13 @@ draw_hop(ModeInfo * mi) 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) { @@ -556,10 +569,12 @@ release_hop(ModeInfo * mi) } } -void +ENTRYPOINT void refresh_hop(ModeInfo * mi) { MI_CLEARWINDOW(mi); } +XSCREENSAVER_MODULE_2 ("Hopalong", hopalong, hop) + #endif /* MODE_hop */