20
21
* other special, indirect and consequential damages.
22
23
* Revision History:
23
* Changes of David Bagley <bagleyd@bigfoot.com>
24
* 24-Jun-97: EJK and RR functions stolen from xmartin2.2
25
* Ed Kubaitis <ejk@ux2.cso.uiuc.edu> ejk functions and xmartin
26
* Renaldo Recuerdo rr function, generalized exponent version
24
* Changes in xlockmore distribution
25
* 01-Nov-2000: Allocation checks
26
* 24-Jun-1997: EJK and RR functions stolen from xmartin2.2
27
* Ed Kubaitis <ejk@ux2.cso.uiuc.edu> ejk functions and xmartin
28
* Renaldo Recuerdo rr function, generalized exponent version
27
29
* of the Barry Martin's square root function
28
* 10-May-97: jwz@jwz.org: ported from xlockmore 4.03a10 to be a
29
* standalone program and thus usable with xscreensaver
30
* (I threw away my 1992 port and started over.)
31
* 27-Jul-95: added Peter de Jong's hop from Scientific American
32
* July 87 p. 111. Sometimes they are amazing but there are a
33
* few duds (I did not see a pattern in the parameters).
34
* 29-Mar-95: changed name from hopalong to hop
35
* 09-Dec-94: added Barry Martin's sine hop
37
* (12-Aug-92: jwz@lucid.com: made xlock version run standalone.)
39
* Changes of Patrick J. Naughton
40
* 29-Oct-90: fix bad (int) cast.
41
* 29-Jul-90: support for multiple screens.
42
* 08-Jul-90: new timing and colors and new algorithm for fractals.
43
* 15-Dec-89: Fix for proper skipping of {White,Black}Pixel() in colors.
44
* 08-Oct-89: Fixed long standing typo bug in RandomInitHop();
45
* Fixed bug in memory allocation in init_hop();
46
* Moved seconds() to an extern.
47
* Got rid of the % mod since .mod is slow on a sparc.
49
* 31-Aug-88: Forked from xlock.c for modularity.
50
* 23-Mar-88: Coded HOPALONG routines from Scientific American Sept. 86 p. 14.
51
* Hopalong was attributed to Barry Martin of Aston University
52
* (Birmingham, England)
30
* 10-May-1997: Compatible with xscreensaver
31
* 27-Jul-1995: added Peter de Jong's hop from Scientific American
32
* July 87 p. 111. Sometimes they are amazing but there are a
33
* few duds (I did not see a pattern in the parameters).
34
* 29-Mar-1995: changed name from hopalong to hop
35
* 09-Dec-1994: added Barry Martin's sine hop
36
* Changes in original xlock
37
* 29-Oct-1990: fix bad (int) cast.
38
* 29-Jul-1990: support for multiple screens.
39
* 08-Jul-1990: new timing and colors and new algorithm for fractals.
40
* 15-Dec-1989: Fix for proper skipping of {White,Black}Pixel() in colors.
41
* 08-Oct-1989: Fixed long standing typo bug in RandomInitHop();
42
* Fixed bug in memory allocation in init_hop();
43
* Moved seconds() to an extern.
44
* Got rid of the % mod since .mod is slow on a sparc.
46
* 31-Aug-1988: Forked from xlock.c for modularity.
47
* 23-Mar-1988: Coded HOPALONG routines from Scientific American Sept. 86 p. 14.
48
* Hopalong was attributed to Barry Martin of Aston University
49
* (Birmingham, England)
56
# define PROGCLASS "Hopalong"
57
# define HACK_INIT init_hop
58
# define HACK_DRAW draw_hop
59
# define HACK_FREE release_hop
60
# define hop_opts xlockmore_opts
61
# define DEFAULTS "*delay: 10000 \n" \
65
# define SMOOTH_COLORS
66
# include "xlockmore.h" /* from the xscreensaver distribution */
68
#else /* !STANDALONE */
69
# include "xlock.h" /* from the xlockmore distribution */
70
#endif /* !STANDALONE */
55
#define PROGCLASS "Hop"
56
#define HACK_INIT init_hop
57
#define HACK_DRAW draw_hop
58
#define hop_opts xlockmore_opts
59
#define DEFAULTS "*delay: 10000 \n" \
64
#include "xlockmore.h" /* in xscreensaver distribution */
66
#else /* STANDALONE */
67
#include "xlock.h" /* in xlockmore distribution */
69
#endif /* STANDALONE */
72
73
#define DEF_MARTIN "False"
73
74
#define DEF_POPCORN "False"
96
97
static XrmOptionDescRec opts[] =
98
{"-martin", ".hop.martin", XrmoptionNoArg, (caddr_t) "on"},
99
{"+martin", ".hop.martin", XrmoptionNoArg, (caddr_t) "off"},
100
{"-popcorn", ".hop.popcorn", XrmoptionNoArg, (caddr_t) "on"},
101
{"+popcorn", ".hop.popcorn", XrmoptionNoArg, (caddr_t) "off"},
102
{"-ejk1", ".hop.ejk1", XrmoptionNoArg, (caddr_t) "on"},
103
{"+ejk1", ".hop.ejk1", XrmoptionNoArg, (caddr_t) "off"},
104
{"-ejk2", ".hop.ejk2", XrmoptionNoArg, (caddr_t) "on"},
105
{"+ejk2", ".hop.ejk2", XrmoptionNoArg, (caddr_t) "off"},
106
{"-ejk3", ".hop.ejk3", XrmoptionNoArg, (caddr_t) "on"},
107
{"+ejk3", ".hop.ejk3", XrmoptionNoArg, (caddr_t) "off"},
108
{"-ejk4", ".hop.ejk4", XrmoptionNoArg, (caddr_t) "on"},
109
{"+ejk4", ".hop.ejk4", XrmoptionNoArg, (caddr_t) "off"},
110
{"-ejk5", ".hop.ejk5", XrmoptionNoArg, (caddr_t) "on"},
111
{"+ejk5", ".hop.ejk5", XrmoptionNoArg, (caddr_t) "off"},
112
{"-ejk6", ".hop.ejk6", XrmoptionNoArg, (caddr_t) "on"},
113
{"+ejk6", ".hop.ejk6", XrmoptionNoArg, (caddr_t) "off"},
114
{"-rr", ".hop.rr", XrmoptionNoArg, (caddr_t) "on"},
115
{"+rr", ".hop.rr", XrmoptionNoArg, (caddr_t) "off"},
116
{"-jong", ".hop.jong", XrmoptionNoArg, (caddr_t) "on"},
117
{"+jong", ".hop.jong", XrmoptionNoArg, (caddr_t) "off"},
118
{"-sine", ".hop.sine", XrmoptionNoArg, (caddr_t) "on"},
119
{"+sine", ".hop.sine", XrmoptionNoArg, (caddr_t) "off"}
99
{"-martin", ".hop.martin", XrmoptionNoArg, "on"},
100
{"+martin", ".hop.martin", XrmoptionNoArg, "off"},
101
{"-popcorn", ".hop.popcorn", XrmoptionNoArg, "on"},
102
{"+popcorn", ".hop.popcorn", XrmoptionNoArg, "off"},
103
{"-ejk1", ".hop.ejk1", XrmoptionNoArg, "on"},
104
{"+ejk1", ".hop.ejk1", XrmoptionNoArg, "off"},
105
{"-ejk2", ".hop.ejk2", XrmoptionNoArg, "on"},
106
{"+ejk2", ".hop.ejk2", XrmoptionNoArg, "off"},
107
{"-ejk3", ".hop.ejk3", XrmoptionNoArg, "on"},
108
{"+ejk3", ".hop.ejk3", XrmoptionNoArg, "off"},
109
{"-ejk4", ".hop.ejk4", XrmoptionNoArg, "on"},
110
{"+ejk4", ".hop.ejk4", XrmoptionNoArg, "off"},
111
{"-ejk5", ".hop.ejk5", XrmoptionNoArg, "on"},
112
{"+ejk5", ".hop.ejk5", XrmoptionNoArg, "off"},
113
{"-ejk6", ".hop.ejk6", XrmoptionNoArg, "on"},
114
{"+ejk6", ".hop.ejk6", XrmoptionNoArg, "off"},
115
{"-rr", ".hop.rr", XrmoptionNoArg, "on"},
116
{"+rr", ".hop.rr", XrmoptionNoArg, "off"},
117
{"-jong", ".hop.jong", XrmoptionNoArg, "on"},
118
{"+jong", ".hop.jong", XrmoptionNoArg, "off"},
119
{"-sine", ".hop.sine", XrmoptionNoArg, "on"},
120
{"+sine", ".hop.sine", XrmoptionNoArg, "off"}
121
122
static argtype vars[] =
123
{(caddr_t *) & martin, "martin", "Martin", DEF_MARTIN, t_Bool},
124
{(caddr_t *) & popcorn, "popcorn", "Popcorn", DEF_POPCORN, t_Bool},
125
{(caddr_t *) & ejk1, "ejk1", "EJK1", DEF_EJK1, t_Bool},
126
{(caddr_t *) & ejk2, "ejk2", "EJK2", DEF_EJK2, t_Bool},
127
{(caddr_t *) & ejk3, "ejk3", "EJK3", DEF_EJK3, t_Bool},
128
{(caddr_t *) & ejk4, "ejk4", "EJK4", DEF_EJK4, t_Bool},
129
{(caddr_t *) & ejk5, "ejk5", "EJK5", DEF_EJK5, t_Bool},
130
{(caddr_t *) & ejk6, "ejk6", "EJK6", DEF_EJK6, t_Bool},
131
{(caddr_t *) & rr, "rr", "RR", DEF_RR, t_Bool},
132
{(caddr_t *) & jong, "jong", "Jong", DEF_JONG, t_Bool},
133
{(caddr_t *) & sine, "sine", "Sine", DEF_SINE, t_Bool}
124
{&martin, "martin", "Martin", DEF_MARTIN, t_Bool},
125
{&popcorn, "popcorn", "Popcorn", DEF_POPCORN, t_Bool},
126
{&ejk1, "ejk1", "EJK1", DEF_EJK1, t_Bool},
127
{&ejk2, "ejk2", "EJK2", DEF_EJK2, t_Bool},
128
{&ejk3, "ejk3", "EJK3", DEF_EJK3, t_Bool},
129
{&ejk4, "ejk4", "EJK4", DEF_EJK4, t_Bool},
130
{&ejk5, "ejk5", "EJK5", DEF_EJK5, t_Bool},
131
{&ejk6, "ejk6", "EJK6", DEF_EJK6, t_Bool},
132
{&rr, "rr", "RR", DEF_RR, t_Bool},
133
{&jong, "jong", "Jong", DEF_JONG, t_Bool},
134
{&sine, "sine", "Sine", DEF_SINE, t_Bool}
135
136
static OptionStruct desc[] =