1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
|
/*-
* @(#)mode.h 4.00 97/01/01 xlockmore
*
* mode.h - mode management for xlock, the X Window System lockscreen.
*
* Copyright (c) 1991 by Patrick J. Naughton.
*
* See xlock.c for copying information.
*
* Revision History:
*
* Changes maintained by David Bagley <bagleyd@tux.org>
* 18-Mar-96: Ron Hitchens <ron@idiom.com>
* Extensive revision to define new data types for
* the new mode calling scheme.
* 02-Jun-95: Extracted out of resource.c.
*
*/
/*-
* Declare external interface routines for supported screen savers.
*/
/* -------------------------------------------------------------------- */
/* Force inclusion of all modes ! */
#define HAVE_CXX
#define HAVE_XPM
#define USE_GL
#define USE_UNSTABLE
#define USE_BOMB
#define HAVE_TTF
#define HAVE_GLTT
#define HAVE_FREETYPE
#define HAVE_FTGL
typedef struct {
int dummy;
} ModeSpecOpt;
struct LockStruct_s;
struct ModeInfo_s;
typedef void (ModeHook) (struct ModeInfo_s *);
typedef void (HookProc) (struct LockStruct_s *, struct ModeInfo_s *);
typedef struct LockStruct_s {
char *cmdline_arg; /* mode name */
#if 0
char *init_hook; /* func to init a mode */
char *callback_hook; /* func to run (tick) a mode */
char *release_hook; /* func to shutdown a mode */
char *refresh_hook; /* tells mode to repaint */
char *change_hook; /* user wants mode to change */
char *unused_hook; /* for future expansion */
ModeSpecOpt *msopt; /* this mode's def resources */
#endif
int def_delay; /* default delay for mode */
int def_count;
int def_cycles;
int def_size;
int def_ncolors;
float def_saturation;
char *def_bitmap;
char *desc; /* text description of mode */
unsigned int flags; /* state flags for this mode */
void *userdata; /* for use by the mode */
char *define;
} LockStruct;
LockStruct LockProcs[] =
{
{"anemone",
50000, 1, 1, 1, 64, 1.0, "",
"Shows wiggling tentacles", 0, NULL, NULL},
{"ant",
1000, -3, 40000, -7, 64, 1.0, "",
"Shows Langton's and Turk's generalized ants", 0, NULL, NULL},
{"ant3d",
5000, -3, 100000, 1, 64, 1.0, "",
"Shows 3D ants", 0, NULL, NULL},
{"apollonian",
1000000, 64, 20, 1, 64, 1.0, "",
"Shows Apollonian Circles", 0, NULL, NULL},
#ifdef USE_GL
{"atlantis",
25000, 4, 100, 6000, 64, 1.0, "",
"Shows moving sharks/whales/dolphin", 0, NULL, "#ifdef USE_GL"},
{"atunnels",
25000, 1, 1, 0, 64, 1.0, "",
"Shows an OpenGL advanced tunnel screensaver", 0, NULL, "#ifdef USE_GL"},
#endif
{"ball",
10000, 10, 20, -100, 64, 1.0, "",
"Shows bouncing balls", 0, NULL, NULL},
{"bat",
100000, -8, 1, 0, 64, 1.0, "",
"Shows bouncing flying bats", 0, NULL, NULL},
#ifdef USE_GL
{"biof",
10000, 800, 1, 0, 64, 1.0, "",
"Shows 3D bioform", 0, NULL, "#ifdef USE_GL"},
#endif
{"blot",
200000, 6, 30, 1, 64, 0.3, "",
"Shows Rorschach's ink blot test", 0, NULL, NULL},
{"bouboule",
10000, 100, 1, 15, 64, 1.0, "",
"Shows Mimi's bouboule of moving stars", 0, NULL, NULL},
{"bounce",
5000, -10, 1, 0, 64, 1.0, "",
"Shows bouncing footballs", 0, NULL, NULL},
{"braid",
1000, 15, 100, -7, 64, 1.0, "",
"Shows random braids and knots", 0, NULL, NULL},
{"bubble",
100000, 25, 1, 100, 64, 0.6, "",
"Shows popping bubbles", 0, NULL, NULL},
#if defined( USE_GL ) && defined( HAVE_CXX )
{"bubble3d",
20000, 1, 2, 1, 64, 1.0, "",
"Richard Jones's GL bubbles", 0, NULL, "#if defined( USE_GL ) && defined( HAVE_CXX )"},
#endif
{"bug",
75000, 10, 32767, -4, 64, 1.0, "",
"Shows Palmiter's bug evolution and garden of Eden", 0, NULL, NULL},
#ifdef USE_GL
{"cage",
80000, 1, 1, 1, 64, 1.0, "",
"Shows the Impossible Cage, an Escher-like GL scene", 0, NULL, "#ifdef USE_GL"},
#endif
{"clock",
100000, -16, 200, -200, 64, 1.0, "",
"Shows Packard's clock", 0, NULL, NULL},
{"coral",
60000, -3, 1, 35, 64, 0.6, "",
"Shows a coral reef", 0, NULL, NULL},
{"crystal",
60000, -500, 200, -15, 64, 1.0, "",
"Shows polygons in 2D plane groups", 0, NULL, NULL},
{"daisy",
100000, 300, 350, 1, 64, 1.0, "",
"Shows a meadow of daisies", 0, NULL, NULL},
{"dclock",
10000, 1, 10000, 1, 64, 0.3, "",
"Shows a floating digital clock or message", 0, NULL, NULL},
{"decay",
200000, 6, 30, 1, 64, 0.3, "",
"Shows a decaying screen", 0, NULL, NULL},
{"deco",
1000000, -30, 2, -10, 64, 0.6, "",
"Shows art as ugly as sin", 0, NULL, NULL},
{"demon",
50000, 0, 1000, -7, 64, 1.0, "",
"Shows Griffeath's cellular automata", 0, NULL, NULL},
{"dilemma",
200000, -2, 1000, 0, 64, 1.0, "",
"Shows Lloyd's Prisoner's Dilemma simulation", 0, NULL, NULL},
{"discrete",
1000, 4096, 2500, 1, 64, 1.0, "",
"Shows various discrete maps", 0, NULL, NULL},
{"dragon",
2000000, 1, 16, -24, 64, 1.0, "",
"Shows Deventer's Hexagonal Dragons Maze", 0, NULL, NULL},
{"drift",
10000, 30, 1, 1, 64, 1.0, "",
"Shows cosmic drifting flame fractals", 0, NULL, NULL},
{"euler2d",
1000, 1024, 3000, 1, 64, 1.0, "",
"Shows a simulation of 2D incompressible inviscid fluid", 0, NULL, NULL},
{"eyes",
20000, -8, 5, 1, 64, 1.0, "",
"Shows eyes following a bouncing grelb", 0, NULL, NULL},
{"fadeplot",
30000, 10, 1500, 1, 64, 0.6, "",
"Shows a fading plot of sine squared", 0, NULL, NULL},
{"fiberlamp",
10000, 500, 10000, 0, 64, 1.0, "",
"Shows a Fiber Optic Lamp", 0, NULL, NULL},
#ifdef USE_GL
{"fire",
10000, 800, 1, 0, 64, 1.0, "",
"Shows a 3D fire-like image", 0, NULL, "#ifdef USE_GL"},
#endif
{"flag",
50000, 1, 1000, -7, 64, 1.0, "",
"Shows a waving flag image", 0, NULL, NULL},
{"flame",
750000, 20, 10000, 1, 64, 1.0, "",
"Shows cosmic flame fractals", 0, NULL, NULL},
{"flow",
1000, 1024, 3000, -10, 64, 1.0, "",
"Shows dynamic strange attractors", 0, NULL, NULL},
{"forest",
400000, 100, 200, 1, 64, 1.0, "",
"Shows binary trees of a fractal forest", 0, NULL, NULL},
{"fzort",
10000, 1, 1, 1, 64, 1.0, "",
"Shows a metalic-looking fzort", 0, NULL, NULL},
{"galaxy",
100, -5, 250, -3, 64, 1.0, "",
"Shows crashing spiral galaxies", 0, NULL, NULL},
#ifdef USE_GL
{"gears",
50000, 1, 2, 1, 64, 1.0, "",
"Shows GL's gears", 0, NULL, "#ifdef USE_GL"},
{"glplanet",
15000, 1, 2, 1, 64, 1.0, "",
"Animates texture mapped sphere (planet)", 0, NULL, "#ifdef USE_GL"},
#endif
{"goop",
10000, -12, 1, 1, 64, 1.0, "",
"Shows goop from a lava lamp", 0, NULL, NULL},
{"grav",
10000, -12, 1, 1, 64, 1.0, "",
"Shows orbiting planets", 0, NULL, NULL},
{"helix",
25000, 1, 100, 1, 64, 1.0, "",
"Shows string art", 0, NULL, NULL},
{"hop",
10000, 1000, 2500, 1, 64, 1.0, "",
"Shows real plane iterated fractals", 0, NULL, NULL},
{"hyper",
100000, -6, 300, 1, 64, 1.0, "",
"Shows spinning n-dimensional hypercubes", 0, NULL, NULL},
{"ico",
100000, 0, 400, 0, 64, 1.0, "",
"Shows a bouncing polyhedron", 0, NULL, NULL},
{"ifs",
1000, 1, 1, 1, 64, 1.0, "",
"Shows a modified iterated function system", 0, NULL, NULL},
{"image",
3000000, -20, 1, 1, 64, 1.0, "",
"Shows randomly appearing logos", 0, NULL, NULL},
#if defined( USE_GL ) && defined( HAVE_CXX )
{"invert",
80000, 1, 1, 1, 64, 1.0, "",
"Shows a sphere inverted without wrinkles", 0, NULL, "#if defined( USE_GL ) && defined( HAVE_CXX )"},
#endif
{"juggle",
10000, 200, 1000, 1, 64, 1.0, "",
"Shows a Juggler, juggling", 0, NULL, NULL},
{"julia",
10000, 1000, 20, 1, 64, 1.0, "",
"Shows the Julia set", 0, NULL, NULL},
{"kaleid",
80000, 4, 40, -9, 64, 0.6, "",
"Shows a kaleidoscope", 0, NULL, NULL},
{"kumppa",
10000, 1, 1, 1, 64, 1.0, "",
"Shows kumppa", 0, NULL, NULL},
#ifdef USE_GL
{"lament",
10000, 1, 1, 1, 64, 1.0, "",
"Shows Lemarchand's Box", 0, NULL, "#ifdef USE_GL"},
#endif
{"laser",
20000, -10, 200, 1, 64, 1.0, "",
"Shows spinning lasers", 0, NULL, NULL},
{"life",
750000, 40, 140, 0, 64, 1.0, "",
"Shows Conway's game of Life", 0, NULL, NULL},
{"life1d",
10000, 1, 10, 0, 64, 1.0, "",
"Shows Wolfram's game of 1D Life", 0, NULL, NULL},
{"life3d",
1000000, 35, 85, 1, 64, 1.0, "",
"Shows Bays' game of 3D Life", 0, NULL, NULL},
{"lightning",
10000, 1, 1, 1, 64, 0.6, "",
"Shows Keith's fractal lightning bolts", 0, NULL, NULL},
{"lisa",
25000, 1, 256, -1, 64, 1.0, "",
"Shows animated lisajous loops", 0, NULL, NULL},
{"lissie",
10000, 1, 2000, -200, 64, 0.6, "",
"Shows lissajous worms", 0, NULL, NULL},
{"loop",
100000, -5, 1600, -12, 64, 1.0, "",
"Shows Langton's self-producing loops", 0, NULL, NULL},
{"lyapunov",
25000, 600, 1, 1, 64, 1.0, "",
"Shows lyapunov space", 0, NULL, NULL},
{"mandelbrot",
25000, -8, 20000, 1, 64, 1.0, "",
"Shows mandelbrot sets", 0, NULL, NULL},
{"marquee",
100000, 1, 1, 1, 64, 1.0, "",
"Shows messages", 0, NULL, NULL},
{"matrix",
100, 1, 1, 1, 64, 1.0, "",
"Shows the matrix", 0, NULL, NULL},
{"maze",
1000, 1, 3000, -40, 64, 1.0, "",
"Shows a random maze and a depth first search solution", 0, NULL, NULL},
#ifdef USE_GL
{"moebius",
30000, 1, 1, 1, 64, 1.0, "",
"Shows Moebius Strip II, an Escher-like GL scene with ants", 0, NULL, "#ifdef USE_GL"},
{(char *) "molecule",
50000, 1, 20, 1, 64, 1.0, "",
"Draws molecules", 0, NULL, "#ifdef USE_GL"},
{"morph3d",
40000, 0, 1, 1, 64, 1.0, "",
"Shows GL morphing polyhedra", 0, NULL, "#ifdef USE_GL"},
#endif
{"mountain",
1000, 30, 4000, 1, 64, 1.0, "",
"Shows Papo's mountain range", 0, NULL, NULL},
{"munch",
5000, 1, 7, 1, 64, 1.0, "",
"Shows munching squares", 0, NULL, NULL},
#ifdef USE_GL
{"noof",
1000, 1, 1, 1, 64, 1.0, "",
"Shows SGI Diatoms", 0, NULL, "#ifdef USE_GL"},
#endif
{"nose",
100000, 1, 1, 1, 64, 1.0, "",
"Shows a man with a big nose runs around spewing out messages", 0, NULL, NULL},
{"pacman",
10000, 10, 1, 0, 64, 1.0, "",
"Shows Pacman(tm)", 0, NULL, NULL},
{"penrose",
10000, 1, 1, -40, 64, 1.0, "",
"Shows Penrose's quasiperiodic tilings", 0, NULL, NULL},
{"petal",
10000, -500, 400, 1, 64, 1.0, "",
"Shows various GCD Flowers", 0, NULL, NULL},
{"petri",
10000, 1, 1, 4, 8, 1.0, "",
"Shows a mold simulation in a petri dish", 0, NULL, NULL},
#ifdef USE_GL
{"pipes",
1000, 2, 5, 500, 64, 1.0, "",
"Shows a selfbuilding pipe system", 0, NULL, "#ifdef USE_GL"},
#endif
{"polyominoes",
6000, 1, 8192, 1, 64, 1.0, "",
"Shows attempts to place polyominoes into a rectangle", 0, NULL, NULL},
{"puzzle",
10000, 250, 1, 1, 64, 1.0, "",
"Shows a puzzle being scrambled and then solved", 0, NULL, NULL},
{"pyro",
15000, 100, 1, -3, 64, 1.0, "",
"Shows fireworks", 0, NULL, NULL},
{"qix",
30000, -5, 32, 1, 64, 1.0, "",
"Shows spinning lines a la Qix(tm)", 0, NULL, NULL},
{"roll",
100000, 25, 1, -64, 64, 0.6, "",
"Shows a rolling ball", 0, NULL, NULL},
{"rotor",
100, 4, 100, -6, 64, 0.3, "",
"Shows Tom's Roto-Rooter", 0, NULL, NULL},
#ifdef USE_GL
{"rubik",
100000, -30, 5, -6, 64, 1.0, "",
"Shows an auto-solving Rubik's Cube", 0, NULL, "#ifdef USE_GL"},
#endif
#ifdef USE_GL
{"sballs",
40000, 0, 10, 0, 64, 1.0, "",
"Balls spinning like crazy in GL", 0, NULL, "#ifdef USE_GL"},
#endif
{"scooter",
20000, 24, 3, 100, 64, 1.0, "",
"Shows a journey through space tunnel and stars", 0, NULL, NULL},
{"shape",
10000, 100, 256, 1, 64, 1.0, "",
"Shows stippled rectangles, ellipses, and triangles", 0, NULL, NULL},
{"sierpinski",
400000, 2000, 100, 1, 64, 1.0, "",
"Shows Sierpinski's triangle", 0, NULL, NULL},
#ifdef USE_GL
{"sierpinski3d",
15000, 1, 2, 1, 64, 1.0, "",
"Shows GL's Sierpinski gasket", 0, NULL, "#ifdef USE_GL"},
#endif
#if defined(USE_GL) && defined( USE_UNSTABLE )
{"skewb",
100000, -30, 5, 1, 64, 1.0, "",
"Shows an auto-solving Skewb", 0, NULL, "#if defined(USE_GL) && defined( USE_UNSTABLE )"},
#endif
{"slip",
50000, 35, 50, 1, 64, 1.0, "",
"Shows slipping blits", 0, NULL, NULL},
#ifdef HAVE_CXX
{"solitare",
2000000, 1, 1, 1, 64, 1.0, "",
"Shows Klondike's game of solitare", 0, NULL, "#ifdef HAVE_CXX"},
#endif
{"space",
10000, 100, 1, 15, 64, 1.0, "",
"Shows a journey into deep space", 0, NULL, "#ifdef USE_UNSTABLE"},
{"sphere",
5000, 1, 20, 0, 64, 1.0, "",
"Shows a bunch of shaded spheres", 0, NULL, NULL},
{"spiral",
5000, -40, 350, 1, 64, 1.0, "",
"Shows a helical locus of points", 0, NULL, NULL},
{"spline",
30000, -6, 2048, 1, 64, 0.3, "",
"Shows colorful moving splines", 0, NULL, NULL},
#ifdef USE_GL
{"sproingies",
80000, 5, 0, 0, 64, 1.0, "",
"Shows Sproingies! Nontoxic. Safe for pets and small children", 0, NULL, "#ifdef USE_GL"},
{"stairs",
200000, 0, 1, 1, 64, 1.0, "",
"Shows some Infinite Stairs, an Escher-like scene", 0, NULL, "#ifdef USE_GL"},
#endif
{"star",
75000, 100, 1, 100, 64, 0.3, "",
"Shows a star field with a twist", 0, NULL, NULL},
{"starfish",
10000, 1, 1, 1, 64, 1.0, "",
"Shows starfish", 0, NULL, NULL},
{"strange",
1000, 1, 1, 1, 64, 1.0, "",
"Shows strange attractors", 0, NULL, NULL},
#ifdef USE_GL
{"superquadrics",
40000, 25, 40, 1, 64, 1.0, "",
"Shows 3D mathematical shapes", 0, NULL, "#ifdef USE_GL"},
#endif
{"swarm",
15000, -100, 1, -10, 64, 1.0, "",
"Shows a swarm of bees following a wasp", 0, NULL, NULL},
{"swirl",
5000, 5, 1, 1, 64, 1.0, "",
"Shows animated swirling patterns", 0, NULL, NULL},
{"t3d",
250000, 1000, 60000, 0, 64, 1.0, "",
"Shows a Flying Balls Clock Demo", 0, NULL, NULL},
{"tetris",
50000, 1, 1, -100, 64, 1.0, "",
"Shows an autoplaying tetris game", 0, NULL, NULL},
#if defined(USE_GL) && defined(HAVE_CXX) && defined( HAVE_TTF ) && defined( HAVE_GLTT )
{"text3d",
100000, 1, 10, 1, 64, 1.0, "",
"Shows 3D text", 0, NULL, "#if defined(USE_GL) && defined(HAVE_CXX) && defined( HAVE_TTF ) && defined( HAVE_GLTT )"},
#endif
#if defined(USE_GL) && defined(HAVE_CXX) && defined( HAVE_FREETYPE ) && defined( HAVE_FTGL )
{"text3d2",
100000, 1, 10, 1, 64, 1.0, "",
"Shows 3D text", 0, NULL, "#if defined(USE_GL) && defined(HAVE_CXX) && defined( HAVE_FREETYPE ) && defined( HAVE_FTGL )"},
#endif
{"thornbird",
1000, 800, 16, 1, 64, 1.0, "",
"Shows an animated bird in a thorn bush fractal map", 0, NULL, NULL},
{"tik_tak",
60000, -20, 200, -1000, 64, 1.0, "",
"Shows rotating polygons", 0, NULL, NULL},
{"toneclock",
60000, -20, 200, -1000, 64, 1.0, "",
"Shows Peter Schat's toneclock", 0, NULL, NULL},
{"triangle",
10000, 1, 1, 1, 64, 1.0, "",
"Shows a triangle mountain range", 0, NULL, NULL},
{"tube",
25000, -9, 20000, -200, 64, 1.0, "",
"Shows an animated tube", 0, NULL, NULL},
{"turtle",
1000000, 1, 20, 1, 64, 1.0, "",
"Shows turtle fractals", 0, NULL, NULL},
{"vines",
200000, 0, 1, 1, 64, 1.0, "",
"Shows fractals", 0, NULL, NULL},
{"voters",
1000, 0, 327670, 0, 64, 1.0, "",
"Shows Dewdney's Voters", 0, NULL, NULL},
{"wator",
750000, 1, 32767, 0, 64, 1.0, "",
"Shows Dewdney's Water-Torus planet of fish and sharks", 0, NULL, NULL},
{"wire",
500000, 1000, 150, -8, 64, 1.0, "",
"Shows a random circuit with 2 electrons", 0, NULL, NULL},
{"world",
100000, -16, 1, 1, 64, 0.3, "",
"Shows spinning Earths", 0, NULL, NULL},
{"worm",
17000, -20, 10, -3, 64, 1.0, "",
"Shows wiggly worms", 0, NULL, NULL},
{"xcl",
20000, -3, 1, 1, 64, 1.0, "",
"Shows a control line combat model race", 0, NULL, NULL},
{"xjack",
50000, 1, 1, 1, 64, 1.0, "",
"Shows Jack having one of those days", 0, NULL, NULL},
/* SPECIAL MODES */
{"blank",
3000000, 1, 1, 1, 64, 1.0, "",
"Shows nothing but a black screen", 0, NULL, NULL}
};
|