1 #ifndef __XLOCK_MODE_H__
2 #define __XLOCK_MODE_H__
3 
4 #if !defined( lint ) && !defined( SABER )
5 /* #ident  "@(#)mode.h      4.14 99/06/17 xlockmore" */
6 
7 #endif
8 
9 /*-
10  * mode.h - mode management for xlock, the X Window System lockscreen.
11  *
12  * Copyright (c) 1991 by Patrick J. Naughton.
13  * xscreensaver code, Copyright (c) 1997 Jamie Zawinski <jwz AT jwz.org>
14  *
15  * Permission to use, copy, modify, and distribute this software and its
16  * documentation for any purpose and without fee is hereby granted,
17  * provided that the above copyright notice appear in all copies and that
18  * both that copyright notice and this permission notice appear in
19  * supporting documentation.
20  *
21  * This file is provided AS IS with no warranties of any kind.  The author
22  * shall have no liability with respect to the infringement of copyrights,
23  * trade secrets or any patents by this file or any part thereof.  In no
24  * event will the author be liable for any lost revenue or profits or
25  * other special, indirect and consequential damages.
26  *
27  * Revision History:
28  *
29  * Changes maintained by David Bagley <bagleyd AT verizon.net>
30  * 18-Mar-96: Ron Hitchens <ron AT idiom.com>
31  *		Extensive revision to define new data types for
32  *		the new mode calling scheme.
33  * 02-Jun-95: Extracted out of resource.c.
34  *
35  */
36 
37 #ifdef __cplusplus
38   extern "C" {
39 #endif
40 struct LockStruct_s;
41 struct ModeInfo_s;
42 
43 typedef void (ModeHook) (struct ModeInfo_s *);
44 typedef void (HookProc) (struct LockStruct_s *, struct ModeInfo_s *);
45 
46 typedef struct LockStruct_s {
47 	char       *cmdline_arg;	/* mode name */
48 	ModeHook   *init_hook;	/* func to init a mode */
49 	ModeHook   *callback_hook;	/* func to run (tick) a mode */
50 	ModeHook   *release_hook;	/* func to shutdown a mode */
51 	ModeHook   *refresh_hook;	/* tells mode to repaint */
52 	ModeHook   *change_hook;	/* user wants mode to change */
53 	/*ModeHook   *unused_hook;*/	/* future */
54 	ModeHook   *free_hook;	/* free a single screen */
55 	ModeSpecOpt *msopt;	/* this mode's def resources */
56 	int         def_delay;	/* default delay for mode */
57 	int         def_count;
58 	int         def_cycles;
59 	int         def_size;
60 	int         def_ncolors;
61 	float       def_saturation;
62 	char       *def_bitmap;
63 	char       *desc;	/* text description of mode */
64 	unsigned int flags;	/* state flags for this mode */
65 	void       *userdata;	/* for use by the mode */
66 	void       **state_array;	/* array of per-screen state, set from MI_INIT */
67 } LockStruct;
68 
69 #define LS_FLAG_INITED		1
70 
71 typedef struct {
72 	Pixmap      pixmap;
73 #ifdef ORIGINAL_XPM_PATCH
74 	/* Not recommended */
75 	Pixmap      bitmap;
76 #else
77 	int         width, height, graphics_format;
78 #endif
79 } mailboxInfo;
80 
81 typedef struct {
82 	mailboxInfo mail;
83 	mailboxInfo nomail;
84 	GC          mbgc;
85 } mboxInfo;
86 
87 typedef struct {
88 	Visual     *visual;
89 	int         visualclass;	/* visual class name of current window */
90 	unsigned int depth;
91 	unsigned long red_mask, green_mask, blue_mask;	/* masks of current window */
92 	int         colormap_size;	/* colormap of current window */
93 	Colormap    colormap;	/* current colormap */
94 	Window      window;	/* window used to cover screen */
95 	Window      icon;	/* window used during password typein */
96 	Window      root;	/* convenience pointer to the root window */
97 #ifdef USE_BUTTON_LOGOUT
98 	Window      button;
99 #endif
100 	GC          gc;		/* graphics context for animation */
101 	GC          textgc;	/* graphics context used for text rendering */
102 	GC          plantextgc;	/* graphics context for plan message rendering */
103 	XPoint      iconpos;	/* location of top left edge of icon */
104 	XPoint      planpos;	/* location of top left edge of message */
105 	int         npixels;	/* number of valid entries in pixels */
106         int         polygon_count; /* screensaver variable */
107 	unsigned long *pixels;	/* pixel values in the colormap */
108 	unsigned long black_pixel, white_pixel;		/* black and white pixel values */
109 	unsigned long bg_pixel, fg_pixel;	/* background and foreground pixel values */
110 	unsigned long right_pixel, left_pixel;	/* 3D color pixel values */
111 	unsigned long none_pixel, both_pixel;
112 	XWindowChanges fullsizeconfigure;
113 	mboxInfo    mb;
114 	Pixmap	    root_pixmap;
115 	double      recursion_depth;
116 } ScreenInfo;
117 
118 typedef struct {
119 	Display    *display;	/* handle to X display */
120 	Screen     *screenptr;	/* ptr to screen info */
121 	int         screen;	/* number of current screen */
122 	int         real_screen;	/* for debugging */
123 	int         num_screens;	/* number screens locked */
124 	int         max_screens;	/* max # active screens */
125 	Window      window;	/* handle to current window */
126 	int         width;	/* width of current window */
127 	int         height;	/* height of current window */
128 	unsigned int flags;	/* xlock window flags */
129 	float       delta3d;
130 	Bool        is_drawn;	/*Indicates that enough is drawn for special *
131 				 *  erase                                    */
132 } WindowInfo;
133 #ifdef __cplusplus
134   }
135 #endif
136 
137 #define WI_FLAG_INFO_INITTED	0x001	/* private state flag */
138 #define WI_FLAG_ICONIC		0x002
139 #define WI_FLAG_MONO		0x004
140 #define WI_FLAG_INWINDOW	0x008
141 #define WI_FLAG_INROOT		0x010
142 #define WI_FLAG_NOLOCK		0x020
143 #define WI_FLAG_INSTALL		0x040
144 #define WI_FLAG_DEBUG		0x080
145 #define WI_FLAG_USE3D		0x100
146 #define WI_FLAG_VERBOSE		0x200
147 #define WI_FLAG_FULLRANDOM	0x400
148 #define WI_FLAG_WIREFRAME	0x800
149 #define WI_FLAG_FPS		0x1000
150 #define WI_FLAG_JUST_INITTED	0x2000	/* private state flag */
151 
152 #ifdef __cplusplus
153   extern "C" {
154 #endif
155 typedef struct {
156 	long        pause;	/* output, set by mode */
157 	long        delay;	/* inputs, current settings */
158 	int         count;
159 	int         cycles;
160 	int         size;
161 	int         ncolors;
162 	float       saturation;
163 	char       *bitmap;
164 } RunInfo;
165 
166 typedef struct ModeInfo_s {
167 	WindowInfo  windowinfo;
168 	ScreenInfo *screeninfo;
169 	RunInfo     runinfo;
170 	struct LockStruct_s *lockstruct;
171 } ModeInfo;
172 #ifdef __cplusplus
173   }
174 #endif
175 
176 /* -------------------------------------------------------------------- */
177 
178 /*-
179  * These are the public interfaces that a mode should use to obtain
180  * information about the display and other environmental parameters.
181  * Everything hangs off a ModeInfo pointer.  A mode should NOT cache
182  * a ModeInfo pointer, the struct it points to is volatile.  The mode
183  * can safely make a copy of the data it points to, however.  But it
184  * is recommended the mode make use of the passed-in pointer and pass
185  * it along to functions it calls.
186  * Use these macros, don't look at the fields directly.  The insides
187  * of the ModeInfo struct are certain to change in the future.
188  */
189 
190 #define MODE_IS_INITED(ls)	((ls)->flags & LS_FLAG_INITED)
191 #define MODE_NOT_INITED(ls)	( ! MODE_IS_INITED(ls))
192 
193 #define MI_DISPLAY(mi)		((mi)->windowinfo.display)
194 #define MI_SCREEN(mi)		((mi)->windowinfo.screen)
195 #define MI_SCREENPTR(mi)      	((mi)->windowinfo.screenptr)
196 #define MI_REAL_SCREEN(mi)	((mi)->windowinfo.real_screen)
197 #define MI_NUM_SCREENS(mi)	((mi)->windowinfo.num_screens)
198 #define MI_MAX_SCREENS(mi)	((mi)->windowinfo.max_screens)
199 #define MI_WINDOW(mi)		((mi)->windowinfo.window)
200 #define MI_WIDTH(mi)		((mi)->windowinfo.width)
201 #define MI_HEIGHT(mi)		((mi)->windowinfo.height)
202 #define MI_DELTA3D(mi)		((mi)->windowinfo.delta3d)
203 #define MI_FLAGS(mi)		((mi)->windowinfo.flags)
204 #define MI_IS_DRAWN(mi)		((mi)->windowinfo.is_drawn)
205 #define MI_SET_FLAG_STATE(mi,f,bool) ((mi)->windowinfo.flags = \
206 					(bool) ? (mi)->windowinfo.flags | f \
207 					: (mi)->windowinfo.flags & ~(f))
208 #define MI_FLAG_IS_SET(mi,f) 	((mi)->windowinfo.flags & f)
209 #define MI_FLAG_NOT_SET(mi,f) 	( ! MI_FLAG_IS_SET(mi,f))
210 #define MI_IS_ICONIC(mi)	(MI_FLAG_IS_SET (mi, WI_FLAG_ICONIC))
211 #define MI_IS_MONO(mi)		(MI_FLAG_IS_SET (mi, WI_FLAG_MONO))
212 #define MI_IS_INWINDOW(mi)	(MI_FLAG_IS_SET (mi, WI_FLAG_INWINDOW))
213 #define MI_IS_INROOT(mi)	(MI_FLAG_IS_SET (mi, WI_FLAG_INROOT))
214 #define MI_IS_NOLOCK(mi)	(MI_FLAG_IS_SET (mi, WI_FLAG_NOLOCK))
215 #define MI_IS_INSTALL(mi)	(MI_FLAG_IS_SET (mi, WI_FLAG_INSTALL))
216 #define MI_IS_DEBUG(mi)		(MI_FLAG_IS_SET (mi, WI_FLAG_DEBUG))
217 #define MI_IS_USE3D(mi)		(MI_FLAG_IS_SET (mi, WI_FLAG_USE3D))
218 #define MI_IS_VERBOSE(mi)	(MI_FLAG_IS_SET (mi, WI_FLAG_VERBOSE))
219 #define MI_IS_FULLRANDOM(mi) 	(MI_FLAG_IS_SET (mi, WI_FLAG_FULLRANDOM))
220 #define MI_IS_WIREFRAME(mi)	(MI_FLAG_IS_SET (mi, WI_FLAG_WIREFRAME))
221 #define MI_IS_FPS(mi)		(MI_FLAG_IS_SET (mi, WI_FLAG_FPS))
222 
223 #define MI_SCREENINFO(mi)	((mi)->screeninfo)
224 #define MI_DEPTH(mi)		((mi)->screeninfo->depth)
225 #define MI_VISUAL(mi)		((mi)->screeninfo->visual)
226 #define MI_VISUALCLASS(mi)	((mi)->screeninfo->visualclass)
227 #define MI_COLORMAP_SIZE(mi)	((mi)->screeninfo->colormap_size)
228 #define MI_RED_MASK(mi)		((mi)->screeninfo->red_mask)
229 #define MI_GREEN_MASK(mi)	((mi)->screeninfo->green_mask)
230 #define MI_BLUE_MASK(mi)	((mi)->screeninfo->blue_mask)
231 #define MI_COLORMAP(mi)		((mi)->screeninfo->colormap)
232 #define MI_GC(mi)		((mi)->screeninfo->gc)
233 #define MI_NPIXELS(mi)		((mi)->screeninfo->npixels)
234 #define MI_PIXELS(mi)		((mi)->screeninfo->pixels)
235 #define MI_PIXEL(mi,n)		((mi)->screeninfo->pixels[n])
236 #define MI_POLYGONCOUNT(mi)	((mi)->screeninfo->polygon_count)
237 #define MI_BLACK_PIXEL(mi)	((mi)->screeninfo->black_pixel)
238 #define MI_WHITE_PIXEL(mi)	((mi)->screeninfo->white_pixel)
239 #define MI_BG_PIXEL(mi)		((mi)->screeninfo->bg_pixel)
240 #define MI_FG_PIXEL(mi)		((mi)->screeninfo->fg_pixel)
241 #define MI_NONE_COLOR(mi)	((mi)->screeninfo->none_pixel)	/* -install */
242 #define MI_RIGHT_COLOR(mi)	((mi)->screeninfo->right_pixel)
243 #define MI_LEFT_COLOR(mi)	((mi)->screeninfo->left_pixel)
244 #define MI_ROOT_PIXMAP(mi)	((mi)->screeninfo->root_pixmap)
245 #define MI_RECURSION_DEPTH(MI)	((mi)->screeninfo->recursion_depth)
246 
247 #define MI_DELAY(mi)		((mi)->runinfo.delay)
248 #define MI_COUNT(mi)		((mi)->runinfo.count)
249 #define MI_CYCLES(mi)		((mi)->runinfo.cycles)
250 #define MI_SIZE(mi)		((mi)->runinfo.size)
251 #define MI_NCOLORS(mi)		((mi)->runinfo.ncolors)
252 #define MI_SATURATION(mi)	((mi)->runinfo.saturation)
253 #define MI_BITMAP(mi)		((mi)->runinfo.bitmap)
254 #define MI_PAUSE(MI)		((mi)->runinfo.pause)
255 
256 #define MI_LOCKSTRUCT(mi)	((mi)->lockstruct)
257 #define MI_DEFDELAY(mi)		((mi)->lockstruct->def_delay)
258 #define MI_DEFCOUNT(mi)		((mi)->lockstruct->def_count)
259 #define MI_DEFCYCLES(mi)	((mi)->lockstruct->def_cycles)
260 #define MI_DEFSIZE(mi)		((mi)->lockstruct->def_size)
261 #define MI_DEFNCOLORS(mi)	((mi)->lockstruct->def_ncolors)
262 #define MI_DEFSATURATION(mi)	((mi)->lockstruct->def_saturation)
263 #define MI_DEFBITMAP(mi)	((mi)->lockstruct->def_bitmap)
264 
265 #define MI_NAME(mi)		((mi)->lockstruct->cmdline_arg)
266 #define MI_DESC(mi)		((mi)->lockstruct->desc)
267 #define MI_USERDATA(mi)		((mi)->lockstruct->userdata)
268 
269 #ifdef SOLARIS2
270 /*-
271  * It was acting weird with the first rectangle drawn
272  * on a Ultra2 with TrueColor Solaris2.x in deco mode.
273  * Not sure if other modes are affected... now handled in deco mode.
274  * If it does happen it is probably not as noticeable to worry about.
275  */
276 #endif
277 
278 #ifdef __cplusplus
279   extern "C" {
280 #endif
281 extern void modeDescription(ModeInfo * mi);
282 extern void erase_full_window(ModeInfo * mi, GC erase_gc, unsigned long pixel);
283 #ifdef __cplusplus
284   }
285 #endif
286 
287 #define MI_CLEARWINDOWCOLORMAP(mi, gc, pixel) \
288 { \
289  erase_full_window( mi , gc , pixel ); \
290 }
291 #define MI_CLEARWINDOWCOLORMAPFAST(mi, gc, pixel) \
292 { \
293  XSetForeground(MI_DISPLAY(mi), gc, pixel); \
294  if ((MI_WIDTH(mi) >= 2) || (MI_HEIGHT(mi) >= 2)) { \
295  XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc, 1, 1, \
296   (unsigned int) MI_WIDTH(mi) - 2, (unsigned int) MI_HEIGHT(mi) - 2); \
297  XDrawRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc, 0, 0, \
298   (unsigned int) MI_WIDTH(mi) - 1, (unsigned int) MI_HEIGHT(mi) - 1); \
299  } else \
300  XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc, 0, 0, \
301   (unsigned int) MI_WIDTH(mi), (unsigned int) MI_HEIGHT(mi)); \
302 }
303 #define MI_CLEARWINDOWCOLOR(mi, pixel) \
304  MI_CLEARWINDOWCOLORMAP(mi, MI_GC(mi), pixel)
305 #if 1
306 /*-
307  * XClearWindow with GL or MONO does not always work.
308  */
309 #define MI_CLEARWINDOW(mi) MI_CLEARWINDOWCOLOR(mi, MI_BLACK_PIXEL(mi))
310 #else
311 #define MI_CLEARWINDOW(mi) XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi))
312 #endif
313 
314 /* -------------------------------------------------------------------- */
315 
316 #ifdef __cplusplus
317   extern "C" {
318 #endif
319 extern HookProc call_init_hook;
320 extern HookProc call_callback_hook;
321 extern HookProc call_release_hook;
322 extern HookProc call_refresh_hook;
323 extern HookProc call_change_hook;
324 /*extern HookProc call_unused_hook;*/
325 
326 extern void set_default_mode(LockStruct *);
327 extern void release_last_mode(ModeInfo *);
328 
329 /* -------------------------------------------------------------------- */
330 
331 /* if you just want the blank mode... how sad! */
332 #ifndef BLANK_ONLY
333 #ifndef NICE_ONLY
334 /* comment out following defines to remove modes */
335 #ifdef USE_GL
336 #define MODE_boxed
337 #define MODE_cage
338 #define MODE_fire
339 #define MODE_gears
340 #ifndef WIN32
341 #define MODE_glplanet
342 #define MODE_juggler3d
343 #endif
344 #define MODE_lament
345 #ifdef HAVE_LIBPNG
346 #define MODE_maze3d
347 #endif
348 #define MODE_moebius
349 #ifndef WIN32
350 #define MODE_molecule
351 #endif
352 #define MODE_morph3d
353 #define MODE_noof
354 #define MODE_rubik
355 #define MODE_sierpinski3d
356 #define MODE_skewb
357 #define MODE_sballs
358 #define MODE_sproingies
359 #define MODE_stairs
360 #define MODE_superquadrics
361 #ifndef WIN32
362 #ifdef USE_RETIRED
363 #define MODE_cartoon /* retired mode */
364 #define MODE_kaleid2 /* retired mode */
365 #endif
366 #endif
367 #define MODE_atlantis
368 #define MODE_atunnels
369 #define MODE_bubble3d
370 #define MODE_pipes
371 #define MODE_sproingies
372 #ifdef HAVE_CXX
373 #define MODE_invert
374 #ifndef WIN32
375 #if defined( HAVE_TTF ) && defined( HAVE_GLTT )
376 #define MODE_text3d
377 #endif
378 #if defined( HAVE_FREETYPE ) && defined( HAVE_FTGL )
379 #define MODE_text3d2
380 #endif
381 #endif  /* !WIN32 */
382 #endif	/* HAVE_CXX */
383 #endif	/* USE_GL */
384 #ifdef HAVE_CXX
385 #define MODE_solitaire
386 #endif
387 #ifdef USE_UNSTABLE
388 #define MODE_run /* VMS problems as well as -debug problems */
389 #endif	/* USE_UNSTABLE */
390 #define MODE_anemone
391 #define MODE_ant
392 #define MODE_ant3d
393 #define MODE_apollonian
394 #define MODE_ball
395 #define MODE_bat
396 #define MODE_blot
397 #define MODE_bouboule
398 #define MODE_bounce
399 #define MODE_braid
400 #define MODE_bubble
401 #define MODE_bug
402 #define MODE_clock
403 #define MODE_coral
404 #define MODE_crystal
405 #define MODE_daisy
406 #define MODE_dclock
407 /*-
408  * Comment out dclock sub-modes to disable them from random selection.
409  * Useful for disabling y2k and millennium after those countdown dates
410  * have already gone by.
411  */
412 /* #define MODE_dclock_y2k */
413 /* #define MODE_dclock_millennium */
414 #ifndef WIN32
415 #define MODE_decay
416 #endif /* !WIN32 */
417 #define MODE_deco
418 #define MODE_deluxe
419 #define MODE_demon
420 #define MODE_dilemma
421 #define MODE_discrete
422 #define MODE_dragon
423 #define MODE_drift
424 #define MODE_euler2d
425 #define MODE_eyes
426 #define MODE_fadeplot
427 #define MODE_fiberlamp
428 #ifndef WIN32
429 #define MODE_flag
430 #endif /* !WIN32 */
431 #define MODE_flame
432 #define MODE_flow
433 #define MODE_forest
434 #ifndef WIN32
435 #define MODE_fzort
436 #endif /* !WIN32 */
437 #define MODE_galaxy
438 #ifndef WIN32
439 #define MODE_goop
440 #endif /* !WIN32 */
441 #define MODE_grav
442 #define MODE_helix
443 #define MODE_hop
444 #define MODE_hyper
445 #define MODE_ico
446 #define MODE_ifs
447 #define MODE_image
448 #define MODE_juggle
449 #define MODE_julia
450 #define MODE_kaleid
451 #define MODE_kumppa
452 #define MODE_laser
453 #define MODE_life
454 #define MODE_life1d
455 #define MODE_life3d
456 #define MODE_lightning
457 #define MODE_lisa
458 #define MODE_lissie
459 #define MODE_loop
460 #define MODE_lyapunov
461 #define MODE_mandelbrot
462 #ifndef WIN32
463 #define MODE_marquee
464 #endif /* !WIN32 */
465 #define MODE_matrix
466 #define MODE_maze
467 #define MODE_mountain
468 #define MODE_munch
469 #define MODE_nose
470 #define MODE_pacman
471 #define MODE_penrose
472 #define MODE_petal
473 #define MODE_petri
474 #define MODE_polyominoes
475 #ifndef WIN32
476 #define MODE_puzzle
477 #endif /* !WIN32 */
478 #define MODE_pyro
479 #define MODE_pyro2
480 #define MODE_qix
481 #define MODE_rain
482 #define MODE_roll
483 #define MODE_rotor
484 #define MODE_scooter /* should be combined with star some day */
485 #define MODE_shape
486 #define MODE_sierpinski
487 #define MODE_slip
488 #define MODE_space /* should be combined with star some day */
489 #define MODE_sphere
490 #define MODE_spiral
491 #define MODE_spline
492 #define MODE_star
493 #define MODE_starfish
494 #define MODE_strange
495 #define MODE_swarm
496 #ifndef WIN32
497 #define MODE_swirl
498 #endif /* !WIN32 */
499 #ifndef WIN32
500 #define MODE_t3d
501 #endif /* !WIN32 */
502 #define MODE_tetris
503 #define MODE_thornbird
504 #define MODE_tik_tak
505 #define MODE_toneclock
506 #define MODE_triangle
507 #define MODE_tube
508 #define MODE_turtle
509 #define MODE_vines
510 #define MODE_voters
511 #define MODE_wator
512 #define MODE_wire
513 #define MODE_world
514 #define MODE_worm
515 #define MODE_xcl
516 #define MODE_xjack
517 
518 #ifdef USE_BOMB
519 #define MODE_bomb
520 #endif
521 
522 #else /* NICE_ONLY */
523 #ifdef HAVE_CXX
524 #define MODE_solitaire
525 #endif
526 #define MODE_apollonian
527 #define MODE_blot
528 #define MODE_bouboule
529 #define MODE_bug
530 #define MODE_clock
531 #define MODE_daisy
532 #define MODE_dclock
533 #define MODE_decay
534 #define MODE_deco
535 #define MODE_deluxe
536 #define MODE_demon
537 #define MODE_dilemma
538 #define MODE_dragon
539 #define MODE_eyes
540 #define MODE_fadeplot
541 #define MODE_flame
542 #define MODE_forest
543 #define MODE_fzort
544 #define MODE_grav
545 #define MODE_hop
546 #define MODE_hyper
547 #define MODE_ico
548 #define MODE_image
549 #define MODE_kaleid
550 #define MODE_life
551 #define MODE_life1d
552 #define MODE_life3d
553 #define MODE_lightning
554 #define MODE_lisa
555 #define MODE_lissie
556 #define MODE_loop
557 #define MODE_marquee
558 #define MODE_munch
559 #define MODE_nose
560 #define MODE_pacman
561 #define MODE_penrose
562 #define MODE_petal
563 #define MODE_puzzle
564 #define MODE_pyro
565 #define MODE_pyro2
566 #define MODE_qix
567 #define MODE_rain
568 #define MODE_roll
569 #define MODE_space /* should be combined with star some day */
570 #define MODE_sphere
571 #define MODE_spiral
572 #define MODE_spline
573 #define MODE_star
574 #define MODE_swarm
575 #define MODE_tetris
576 #define MODE_triangle
577 #define MODE_tube
578 #define MODE_turtle
579 #define MODE_vines
580 #define MODE_wator
581 #define MODE_wire
582 #define MODE_world
583 #define MODE_worm
584 #define MODE_xcl
585 #define MODE_xjack
586 
587 #ifdef USE_BOMB
588 #define MODE_bomb
589 #endif
590 
591 #endif /* NICE_ONLY */
592 #endif /* BLANK_ONLY */
593 
594 #ifndef USE_MODULES
595 
596 #ifdef MODE_anemone
597 extern ModeHook init_anemone;
598 extern ModeHook draw_anemone;
599 extern ModeHook release_anemone;
600 extern ModeHook free_anemone;
601 extern ModeSpecOpt anemone_opts;
602 #endif
603 
604 #ifdef MODE_ant
605 extern ModeHook init_ant;
606 extern ModeHook draw_ant;
607 extern ModeHook release_ant;
608 extern ModeHook refresh_ant;
609 extern ModeHook free_ant;
610 extern ModeSpecOpt ant_opts;
611 #endif
612 
613 #ifdef MODE_ant3d
614 extern ModeHook init_ant3d;
615 extern ModeHook draw_ant3d;
616 extern ModeHook release_ant3d;
617 extern ModeHook refresh_ant3d;
618 extern ModeHook free_ant3d;
619 extern ModeSpecOpt ant3d_opts;
620 #endif
621 
622 #ifdef MODE_apollonian
623 extern ModeHook init_apollonian;
624 extern ModeHook draw_apollonian;
625 extern ModeHook release_apollonian;
626 extern ModeHook refresh_apollonian;
627 extern ModeHook free_apollonian;
628 extern ModeSpecOpt apollonian_opts;
629 #endif
630 
631 #ifdef MODE_atlantis
632 extern ModeHook init_atlantis;
633 extern ModeHook draw_atlantis;
634 extern ModeHook release_atlantis;
635 extern ModeHook change_atlantis;
636 extern ModeSpecOpt atlantis_opts;
637 #endif
638 
639 #ifdef MODE_atunnels
640 extern ModeHook init_atunnels;
641 extern ModeHook draw_atunnels;
642 extern ModeHook release_atunnels;
643 extern ModeHook change_atunnels;
644 extern ModeSpecOpt atunnels_opts;
645 #endif
646 
647 #ifdef MODE_ball
648 extern ModeHook init_ball;
649 extern ModeHook draw_ball;
650 extern ModeHook release_ball;
651 extern ModeHook refresh_ball;
652 extern ModeHook free_ball;
653 extern ModeSpecOpt ball_opts;
654 #endif
655 
656 #ifdef MODE_bat
657 extern ModeHook init_bat;
658 extern ModeHook draw_bat;
659 extern ModeHook release_bat;
660 extern ModeHook refresh_bat;
661 extern ModeHook free_bat;
662 extern ModeSpecOpt bat_opts;
663 #endif
664 
665 #ifdef MODE_billiards
666 extern ModeHook init_billiards;
667 extern ModeHook draw_billiards;
668 extern ModeHook release_billiards;
669 extern ModeHook refresh_billiards;
670 extern ModeSpecOpt billiards_opts;
671 #endif
672 
673 #ifdef MODE_blot
674 extern ModeHook init_blot;
675 extern ModeHook draw_blot;
676 extern ModeHook release_blot;
677 extern ModeHook refresh_blot;
678 extern ModeHook free_blot;
679 extern ModeSpecOpt blot_opts;
680 #endif
681 
682 #ifdef MODE_bouboule
683 extern ModeHook init_bouboule;
684 extern ModeHook draw_bouboule;
685 extern ModeHook release_bouboule;
686 extern ModeHook refresh_bouboule;
687 extern ModeSpecOpt bouboule_opts;
688 #endif
689 
690 #ifdef MODE_bounce
691 extern ModeHook init_bounce;
692 extern ModeHook draw_bounce;
693 extern ModeHook release_bounce;
694 extern ModeHook refresh_bounce;
695 extern ModeSpecOpt bounce_opts;
696 #endif
697 
698 #ifdef MODE_boxed
699 extern ModeHook init_boxed;
700 extern ModeHook draw_boxed;
701 extern ModeHook release_boxed;
702 extern ModeSpecOpt boxed_opts;
703 #endif
704 
705 #ifdef MODE_braid
706 extern ModeHook init_braid;
707 extern ModeHook draw_braid;
708 extern ModeHook release_braid;
709 extern ModeHook refresh_braid;
710 extern ModeSpecOpt braid_opts;
711 #endif
712 
713 #ifdef MODE_bubble
714 extern ModeHook init_bubble;
715 extern ModeHook draw_bubble;
716 extern ModeHook release_bubble;
717 extern ModeHook free_bubble;
718 extern ModeSpecOpt bubble_opts;
719 #endif
720 
721 #ifdef MODE_bubble3d
722 extern ModeHook init_bubble3d;
723 extern ModeHook draw_bubble3d;
724 extern ModeHook release_bubble3d;
725 extern ModeSpecOpt bubble3d_opts;
726 #endif
727 
728 #ifdef MODE_bug
729 extern ModeHook init_bug;
730 extern ModeHook draw_bug;
731 extern ModeHook release_bug;
732 extern ModeHook refresh_bug;
733 extern ModeSpecOpt bug_opts;
734 #endif
735 
736 #ifdef MODE_cage
737 extern ModeHook init_cage;
738 extern ModeHook draw_cage;
739 extern ModeHook release_cage;
740 extern ModeHook change_cage;
741 extern ModeSpecOpt cage_opts;
742 #endif
743 
744 #ifdef MODE_cartoon
745 extern ModeHook init_cartoon;
746 extern ModeHook draw_cartoon;
747 extern ModeHook release_cartoon;
748 extern ModeHook refresh_cartoon;
749 extern ModeSpecOpt cartoon_opts;
750 #endif
751 
752 #ifdef MODE_clock
753 extern ModeHook init_clock;
754 extern ModeHook draw_clock;
755 extern ModeHook release_clock;
756 extern ModeHook refresh_clock;
757 extern ModeSpecOpt clock_opts;
758 #endif
759 
760 #ifdef MODE_coral
761 extern ModeHook init_coral;
762 extern ModeHook draw_coral;
763 extern ModeHook release_coral;
764 extern ModeHook refresh_coral;
765 extern ModeSpecOpt coral_opts;
766 #endif
767 
768 #ifdef MODE_crystal
769 extern ModeHook init_crystal;
770 extern ModeHook draw_crystal;
771 extern ModeHook release_crystal;
772 extern ModeHook refresh_crystal;
773 extern ModeSpecOpt crystal_opts;
774 #endif
775 
776 #ifdef MODE_daisy
777 extern ModeHook init_daisy;
778 extern ModeHook draw_daisy;
779 extern ModeHook release_daisy;
780 extern ModeHook refresh_daisy;
781 extern ModeSpecOpt daisy_opts;
782 #endif
783 
784 #ifdef MODE_dclock
785 extern ModeHook init_dclock;
786 extern ModeHook draw_dclock;
787 extern ModeHook release_dclock;
788 extern ModeHook refresh_dclock;
789 extern ModeSpecOpt dclock_opts;
790 #endif
791 
792 #ifdef MODE_decay
793 extern ModeHook init_decay;
794 extern ModeHook draw_decay;
795 extern ModeHook release_decay;
796 extern ModeHook refresh_decay;
797 extern ModeSpecOpt decay_opts;
798 #endif
799 
800 #ifdef MODE_deco
801 extern ModeHook init_deco;
802 extern ModeHook draw_deco;
803 extern ModeHook release_deco;
804 extern ModeHook refresh_deco;
805 extern ModeSpecOpt deco_opts;
806 #endif
807 
808 #ifdef MODE_deluxe
809 extern ModeHook init_deluxe;
810 extern ModeHook draw_deluxe;
811 extern ModeHook release_deluxe;
812 extern ModeSpecOpt deluxe_opts;
813 #endif
814 
815 #ifdef MODE_demon
816 extern ModeHook init_demon;
817 extern ModeHook draw_demon;
818 extern ModeHook release_demon;
819 extern ModeHook refresh_demon;
820 extern ModeSpecOpt demon_opts;
821 #endif
822 
823 #ifdef MODE_dilemma
824 extern ModeHook init_dilemma;
825 extern ModeHook draw_dilemma;
826 extern ModeHook release_dilemma;
827 extern ModeHook refresh_dilemma;
828 extern ModeSpecOpt dilemma_opts;
829 #endif
830 
831 #ifdef MODE_discrete
832 extern ModeHook init_discrete;
833 extern ModeHook draw_discrete;
834 extern ModeHook release_discrete;
835 extern ModeHook refresh_discrete;
836 extern ModeHook change_discrete;
837 extern ModeSpecOpt discrete_opts;
838 #endif
839 
840 #ifdef MODE_dragon
841 extern ModeHook init_dragon;
842 extern ModeHook draw_dragon;
843 extern ModeHook release_dragon;
844 extern ModeHook refresh_dragon;
845 extern ModeSpecOpt dragon_opts;
846 #endif
847 
848 #ifdef MODE_drift
849 extern ModeHook init_drift;
850 extern ModeHook draw_drift;
851 extern ModeHook release_drift;
852 extern ModeHook refresh_drift;
853 extern ModeSpecOpt drift_opts;
854 #endif
855 
856 #ifdef MODE_euler2d
857 extern ModeHook init_euler2d;
858 extern ModeHook draw_euler2d;
859 extern ModeHook release_euler2d;
860 extern ModeHook refresh_euler2d;
861 extern ModeSpecOpt euler2d_opts;
862 #endif
863 
864 #ifdef MODE_eyes
865 extern ModeHook init_eyes;
866 extern ModeHook draw_eyes;
867 extern ModeHook release_eyes;
868 extern ModeHook refresh_eyes;
869 extern ModeSpecOpt eyes_opts;
870 #endif
871 
872 #ifdef MODE_fadeplot
873 extern ModeHook init_fadeplot;
874 extern ModeHook draw_fadeplot;
875 extern ModeHook release_fadeplot;
876 extern ModeHook refresh_fadeplot;
877 extern ModeSpecOpt fadeplot_opts;
878 #endif
879 
880 #ifdef MODE_fiberlamp
881 extern ModeHook init_fiberlamp;
882 extern ModeHook draw_fiberlamp;
883 extern ModeHook release_fiberlamp;
884 extern ModeHook change_fiberlamp;
885 extern ModeSpecOpt fiberlamp_opts;
886 #endif
887 
888 #ifdef MODE_fire
889 extern ModeHook init_fire;
890 extern ModeHook draw_fire;
891 extern ModeHook release_fire;
892 extern ModeHook refresh_fire;
893 extern ModeHook change_fire;
894 extern ModeSpecOpt fire_opts;
895 #endif
896 
897 #ifdef MODE_flag
898 extern ModeHook init_flag;
899 extern ModeHook draw_flag;
900 extern ModeHook release_flag;
901 extern ModeHook refresh_flag;
902 extern ModeSpecOpt flag_opts;
903 #endif
904 
905 #ifdef MODE_flame
906 extern ModeHook init_flame;
907 extern ModeHook draw_flame;
908 extern ModeHook release_flame;
909 extern ModeHook refresh_flame;
910 extern ModeSpecOpt flame_opts;
911 #endif
912 
913 #ifdef MODE_flow
914 extern ModeHook init_flow;
915 extern ModeHook draw_flow;
916 extern ModeHook release_flow;
917 extern ModeHook refresh_flow;
918 extern ModeHook change_flow;
919 extern ModeSpecOpt flow_opts;
920 #endif
921 
922 #ifdef MODE_forest
923 extern ModeHook init_forest;
924 extern ModeHook draw_forest;
925 extern ModeHook release_forest;
926 extern ModeHook refresh_forest;
927 extern ModeSpecOpt forest_opts;
928 #endif
929 
930 #ifdef MODE_fzort
931 extern ModeHook init_fzort;
932 extern ModeHook draw_fzort;
933 extern ModeHook release_fzort;
934 extern ModeHook refresh_fzort;
935 extern ModeSpecOpt fzort_opts;
936 #endif
937 
938 #ifdef MODE_galaxy
939 extern ModeHook init_galaxy;
940 extern ModeHook draw_galaxy;
941 extern ModeHook release_galaxy;
942 extern ModeHook refresh_galaxy;
943 extern ModeSpecOpt galaxy_opts;
944 #endif
945 
946 #ifdef MODE_gears
947 extern ModeHook init_gears;
948 extern ModeHook draw_gears;
949 extern ModeHook release_gears;
950 extern ModeSpecOpt gears_opts;
951 #endif
952 
953 #ifdef MODE_glplanet
954 extern ModeHook init_glplanet;
955 extern ModeHook draw_glplanet;
956 extern ModeHook release_glplanet;
957 extern ModeSpecOpt glplanet_opts;
958 #endif
959 
960 #ifdef MODE_goop
961 extern ModeHook init_goop;
962 extern ModeHook draw_goop;
963 extern ModeHook release_goop;
964 extern ModeSpecOpt goop_opts;
965 #endif
966 
967 #ifdef MODE_grav
968 extern ModeHook init_grav;
969 extern ModeHook draw_grav;
970 extern ModeHook release_grav;
971 extern ModeHook refresh_grav;
972 extern ModeSpecOpt grav_opts;
973 #endif
974 
975 #ifdef MODE_helix
976 extern ModeHook init_helix;
977 extern ModeHook draw_helix;
978 extern ModeHook release_helix;
979 extern ModeHook refresh_helix;
980 extern ModeSpecOpt helix_opts;
981 #endif
982 
983 #ifdef MODE_hop
984 extern ModeHook init_hop;
985 extern ModeHook draw_hop;
986 extern ModeHook release_hop;
987 extern ModeHook refresh_hop;
988 extern ModeSpecOpt hop_opts;
989 #endif
990 
991 #ifdef MODE_hyper
992 extern ModeHook init_hyper;
993 extern ModeHook draw_hyper;
994 extern ModeHook release_hyper;
995 extern ModeHook refresh_hyper;
996 extern ModeHook change_hyper;
997 extern ModeSpecOpt hyper_opts;
998 #endif
999 
1000 #ifdef MODE_ico
1001 extern ModeHook init_ico;
1002 extern ModeHook draw_ico;
1003 extern ModeHook release_ico;
1004 extern ModeHook refresh_ico;
1005 extern ModeHook change_ico;
1006 extern ModeSpecOpt ico_opts;
1007 #endif
1008 
1009 #ifdef MODE_ifs
1010 extern ModeHook init_ifs;
1011 extern ModeHook draw_ifs;
1012 extern ModeHook release_ifs;
1013 extern ModeSpecOpt ifs_opts;
1014 #endif
1015 
1016 #ifdef MODE_image
1017 extern ModeHook init_image;
1018 extern ModeHook draw_image;
1019 extern ModeHook release_image;
1020 extern ModeHook refresh_image;
1021 extern ModeSpecOpt image_opts;
1022 #endif
1023 
1024 #ifdef MODE_invert
1025 extern ModeHook init_invert;
1026 extern ModeHook draw_invert;
1027 extern ModeHook release_invert;
1028 extern ModeSpecOpt invert_opts;
1029 #endif
1030 
1031 
1032 #ifdef MODE_juggle
1033 extern ModeHook init_juggle;
1034 extern ModeHook draw_juggle;
1035 extern ModeHook release_juggle;
1036 extern ModeHook change_juggle;
1037 extern ModeSpecOpt juggle_opts;
1038 #endif
1039 
1040 #ifdef MODE_juggler3d
1041 extern ModeHook init_juggler3d;
1042 extern ModeHook draw_juggler3d;
1043 extern ModeHook release_juggler3d;
1044 extern ModeHook change_juggler3d;
1045 extern ModeSpecOpt juggler3d_opts;
1046 #endif
1047 
1048 #ifdef MODE_julia
1049 extern ModeHook init_julia;
1050 extern ModeHook draw_julia;
1051 extern ModeHook release_julia;
1052 extern ModeHook refresh_julia;
1053 extern ModeSpecOpt julia_opts;
1054 #endif
1055 
1056 #ifdef MODE_kaleid
1057 extern ModeHook init_kaleid;
1058 extern ModeHook draw_kaleid;
1059 extern ModeHook release_kaleid;
1060 extern ModeHook refresh_kaleid;
1061 extern ModeSpecOpt kaleid_opts;
1062 #endif
1063 
1064 #ifdef MODE_kaleid2
1065 extern ModeHook init_kaleid2;
1066 extern ModeHook draw_kaleid2;
1067 extern ModeHook release_kaleid2;
1068 extern ModeHook refresh_kaleid2;
1069 extern ModeSpecOpt kaleid2_opts;
1070 #endif
1071 
1072 #ifdef MODE_kumppa
1073 extern ModeHook init_kumppa;
1074 extern ModeHook draw_kumppa;
1075 extern ModeHook release_kumppa;
1076 extern ModeSpecOpt kumppa_opts;
1077 #endif
1078 
1079 #ifdef MODE_lament
1080 extern ModeHook init_lament;
1081 extern ModeHook draw_lament;
1082 extern ModeHook release_lament;
1083 extern ModeHook change_lament;
1084 extern ModeSpecOpt lament_opts;
1085 #endif
1086 
1087 #ifdef MODE_laser
1088 extern ModeHook init_laser;
1089 extern ModeHook draw_laser;
1090 extern ModeHook release_laser;
1091 extern ModeHook refresh_laser;
1092 extern ModeHook free_laser;
1093 extern ModeSpecOpt laser_opts;
1094 #endif
1095 
1096 #ifdef MODE_life
1097 extern ModeHook init_life;
1098 extern ModeHook draw_life;
1099 extern ModeHook release_life;
1100 extern ModeHook refresh_life;
1101 extern ModeHook change_life;
1102 extern ModeHook free_life;
1103 extern ModeSpecOpt life_opts;
1104 #endif
1105 
1106 #ifdef MODE_life1d
1107 extern ModeHook init_life1d;
1108 extern ModeHook draw_life1d;
1109 extern ModeHook release_life1d;
1110 extern ModeHook refresh_life1d;
1111 extern ModeHook free_life1d;
1112 extern ModeSpecOpt life1d_opts;
1113 #endif
1114 
1115 #ifdef MODE_life3d
1116 extern ModeHook init_life3d;
1117 extern ModeHook draw_life3d;
1118 extern ModeHook release_life3d;
1119 extern ModeHook refresh_life3d;
1120 extern ModeHook change_life3d;
1121 extern ModeHook free_life3d;
1122 extern ModeSpecOpt life3d_opts;
1123 #endif
1124 
1125 #ifdef MODE_lightning
1126 extern ModeHook init_lightning;
1127 extern ModeHook draw_lightning;
1128 extern ModeHook release_lightning;
1129 extern ModeSpecOpt lightning_opts;
1130 #endif
1131 
1132 #ifdef MODE_lisa
1133 extern ModeHook init_lisa;
1134 extern ModeHook draw_lisa;
1135 extern ModeHook release_lisa;
1136 extern ModeHook refresh_lisa;
1137 extern ModeHook change_lisa;
1138 extern ModeSpecOpt lisa_opts;
1139 #endif
1140 
1141 #ifdef MODE_lissie
1142 extern ModeHook init_lissie;
1143 extern ModeHook draw_lissie;
1144 extern ModeHook release_lissie;
1145 extern ModeHook refresh_lissie;
1146 extern ModeSpecOpt lissie_opts;
1147 #endif
1148 
1149 #ifdef MODE_loop
1150 extern ModeHook init_loop;
1151 extern ModeHook draw_loop;
1152 extern ModeHook release_loop;
1153 extern ModeHook refresh_loop;
1154 extern ModeSpecOpt loop_opts;
1155 #endif
1156 
1157 #ifdef MODE_lyapunov
1158 extern ModeHook init_lyapunov;
1159 extern ModeHook draw_lyapunov;
1160 extern ModeHook release_lyapunov;
1161 extern ModeHook refresh_lyapunov;
1162 extern ModeSpecOpt lyapunov_opts;
1163 #endif
1164 
1165 #ifdef MODE_mandelbrot
1166 extern ModeHook init_mandelbrot;
1167 extern ModeHook draw_mandelbrot;
1168 extern ModeHook release_mandelbrot;
1169 extern ModeHook refresh_mandelbrot;
1170 extern ModeSpecOpt mandelbrot_opts;
1171 #endif
1172 
1173 #ifdef MODE_marquee
1174 extern ModeHook init_marquee;
1175 extern ModeHook draw_marquee;
1176 extern ModeHook release_marquee;
1177 extern ModeSpecOpt marquee_opts;
1178 #endif
1179 
1180 #ifdef MODE_matrix
1181 extern ModeHook init_matrix;
1182 extern ModeHook draw_matrix;
1183 extern ModeHook release_matrix;
1184 extern ModeHook refresh_matrix;
1185 extern ModeHook change_matrix;
1186 extern ModeSpecOpt matrix_opts;
1187 #endif
1188 
1189 #ifdef MODE_maze
1190 extern ModeHook init_maze;
1191 extern ModeHook draw_maze;
1192 extern ModeHook release_maze;
1193 extern ModeHook refresh_maze;
1194 extern ModeSpecOpt maze_opts;
1195 #endif
1196 
1197 #ifdef MODE_maze3d
1198 extern ModeHook init_maze3d;
1199 extern ModeHook draw_maze3d;
1200 extern ModeHook release_maze3d;
1201 extern ModeSpecOpt maze3d_opts;
1202 #endif
1203 
1204 #ifdef MODE_moebius
1205 extern ModeHook init_moebius;
1206 extern ModeHook draw_moebius;
1207 extern ModeHook release_moebius;
1208 extern ModeHook change_moebius;
1209 extern ModeSpecOpt moebius_opts;
1210 #endif
1211 
1212 #ifdef MODE_molecule
1213 extern ModeHook init_molecule;
1214 extern ModeHook draw_molecule;
1215 extern ModeHook release_molecule;
1216 extern ModeSpecOpt molecule_opts;
1217 #endif
1218 
1219 #ifdef MODE_morph3d
1220 extern ModeHook init_morph3d;
1221 extern ModeHook draw_morph3d;
1222 extern ModeHook release_morph3d;
1223 extern ModeHook change_morph3d;
1224 extern ModeSpecOpt morph3d_opts;
1225 #endif
1226 
1227 #ifdef MODE_mountain
1228 extern ModeHook init_mountain;
1229 extern ModeHook draw_mountain;
1230 extern ModeHook release_mountain;
1231 extern ModeHook refresh_mountain;
1232 extern ModeSpecOpt mountain_opts;
1233 #endif
1234 
1235 #ifdef MODE_munch
1236 extern ModeHook init_munch;
1237 extern ModeHook draw_munch;
1238 extern ModeHook release_munch;
1239 extern ModeSpecOpt munch_opts;
1240 #endif
1241 
1242 #ifdef MODE_noof
1243 extern ModeHook init_noof;
1244 extern ModeHook draw_noof;
1245 extern ModeHook release_noof;
1246 extern ModeSpecOpt noof_opts;
1247 #endif
1248 
1249 #ifdef MODE_nose
1250 extern ModeHook init_nose;
1251 extern ModeHook draw_nose;
1252 extern ModeHook release_nose;
1253 extern ModeHook refresh_nose;
1254 extern ModeSpecOpt nose_opts;
1255 #endif
1256 
1257 #ifdef MODE_pacman
1258 extern ModeHook init_pacman;
1259 extern ModeHook draw_pacman;
1260 extern ModeHook release_pacman;
1261 extern ModeHook refresh_pacman;
1262 extern ModeHook change_pacman;
1263 extern ModeSpecOpt pacman_opts;
1264 #endif
1265 
1266 #ifdef MODE_penrose
1267 extern ModeHook init_penrose;
1268 extern ModeHook draw_penrose;
1269 extern ModeHook release_penrose;
1270 
1271 #if 0
1272 extern ModeHook refresh_penrose;	/* Needed */
1273 #endif
1274 extern ModeSpecOpt penrose_opts;
1275 #endif
1276 
1277 #ifdef MODE_petal
1278 extern ModeHook init_petal;
1279 extern ModeHook draw_petal;
1280 extern ModeHook release_petal;
1281 extern ModeHook refresh_petal;
1282 extern ModeSpecOpt petal_opts;
1283 #endif
1284 
1285 #ifdef MODE_petri
1286 extern ModeHook init_petri;
1287 extern ModeHook draw_petri;
1288 extern ModeHook release_petri;
1289 extern ModeHook refresh_petri;
1290 extern ModeSpecOpt petri_opts;
1291 #endif
1292 
1293 #ifdef MODE_pipes
1294 extern ModeHook init_pipes;
1295 extern ModeHook draw_pipes;
1296 extern ModeHook release_pipes;
1297 extern ModeHook refresh_pipes;
1298 extern ModeHook change_pipes;
1299 extern ModeSpecOpt pipes_opts;
1300 #endif
1301 
1302 #ifdef MODE_polyominoes
1303 extern ModeHook init_polyominoes;
1304 extern ModeHook draw_polyominoes;
1305 extern ModeHook release_polyominoes;
1306 extern ModeHook refresh_polyominoes;
1307 extern ModeSpecOpt polyominoes_opts;
1308 #endif
1309 
1310 #ifdef MODE_puzzle
1311 extern ModeHook init_puzzle;
1312 extern ModeHook draw_puzzle;
1313 extern ModeHook release_puzzle;
1314 
1315 #if 0
1316 extern ModeHook refresh_puzzle;	/* Needed */
1317 #endif
1318 extern ModeSpecOpt puzzle_opts;
1319 #endif
1320 
1321 #ifdef MODE_pyro
1322 extern ModeHook init_pyro;
1323 extern ModeHook draw_pyro;
1324 extern ModeHook release_pyro;
1325 extern ModeHook refresh_pyro;
1326 extern ModeSpecOpt pyro_opts;
1327 #endif
1328 
1329 #ifdef MODE_pyro2
1330 extern ModeHook init_pyro2;
1331 extern ModeHook draw_pyro2;
1332 extern ModeHook release_pyro2;
1333 extern ModeHook refresh_pyro2;
1334 extern ModeSpecOpt pyro2_opts;
1335 #endif
1336 
1337 #ifdef MODE_qix
1338 extern ModeHook init_qix;
1339 extern ModeHook draw_qix;
1340 extern ModeHook release_qix;
1341 extern ModeHook refresh_qix;
1342 extern ModeHook free_qix;
1343 extern ModeSpecOpt qix_opts;
1344 #endif
1345 
1346 #ifdef MODE_rain
1347 extern ModeHook init_rain;
1348 extern ModeHook draw_rain;
1349 extern ModeHook release_rain;
1350 extern ModeHook refresh_rain;
1351 extern ModeSpecOpt rain_opts;
1352 #endif
1353 
1354 #ifdef MODE_roll
1355 extern ModeHook init_roll;
1356 extern ModeHook draw_roll;
1357 extern ModeHook release_roll;
1358 extern ModeHook refresh_roll;
1359 extern ModeSpecOpt roll_opts;
1360 #endif
1361 
1362 #ifdef MODE_rotor
1363 extern ModeHook init_rotor;
1364 extern ModeHook draw_rotor;
1365 extern ModeHook release_rotor;
1366 extern ModeHook refresh_rotor;
1367 extern ModeSpecOpt rotor_opts;
1368 #endif
1369 
1370 #ifdef MODE_rubik
1371 extern ModeHook init_rubik;
1372 extern ModeHook draw_rubik;
1373 extern ModeHook release_rubik;
1374 extern ModeHook change_rubik;
1375 extern ModeSpecOpt rubik_opts;
1376 #endif
1377 
1378 #ifdef MODE_sballs
1379 extern ModeHook init_sballs;
1380 extern ModeHook draw_sballs;
1381 extern ModeHook release_sballs;
1382 extern ModeHook refresh_sballs;
1383 extern ModeHook change_sballs;
1384 extern ModeSpecOpt sballs_opts;
1385 #endif
1386 
1387 #ifdef MODE_scooter
1388 extern ModeHook init_scooter;
1389 extern ModeHook draw_scooter;
1390 extern ModeHook release_scooter;
1391 extern ModeHook refresh_scooter;
1392 extern ModeHook change_scooter;
1393 extern ModeSpecOpt scooter_opts;
1394 #endif
1395 
1396 #ifdef MODE_shape
1397 extern ModeHook init_shape;
1398 extern ModeHook draw_shape;
1399 extern ModeHook release_shape;
1400 extern ModeHook refresh_shape;
1401 extern ModeSpecOpt shape_opts;
1402 #endif
1403 
1404 #ifdef MODE_sierpinski
1405 extern ModeHook init_sierpinski;
1406 extern ModeHook draw_sierpinski;
1407 extern ModeHook release_sierpinski;
1408 extern ModeHook refresh_sierpinski;
1409 extern ModeSpecOpt sierpinski_opts;
1410 #endif
1411 
1412 #ifdef MODE_sierpinski3d
1413 extern ModeHook init_gasket;
1414 extern ModeHook draw_gasket;
1415 extern ModeHook release_gasket;
1416 extern ModeSpecOpt gasket_opts;
1417 #endif
1418 
1419 #ifdef MODE_skewb
1420 extern ModeHook init_skewb;
1421 extern ModeHook draw_skewb;
1422 extern ModeHook release_skewb;
1423 extern ModeHook change_skewb;
1424 extern ModeSpecOpt skewb_opts;
1425 #endif
1426 
1427 #ifdef MODE_slip
1428 extern ModeHook init_slip;
1429 extern ModeHook draw_slip;
1430 extern ModeHook release_slip;
1431 
1432 #if 0
1433 extern ModeHook refresh_slip;	/* Probably not practical */
1434 #endif
1435 extern ModeSpecOpt slip_opts;
1436 #endif
1437 
1438 #ifdef MODE_solitaire
1439 extern ModeHook init_solitaire;
1440 extern ModeHook draw_solitaire;
1441 extern ModeHook release_solitaire;
1442 extern ModeHook refresh_solitaire;
1443 extern ModeSpecOpt solitaire_opts;
1444 #endif
1445 
1446 #ifdef MODE_space
1447 extern ModeHook init_space;
1448 extern ModeHook draw_space;
1449 extern ModeHook release_space;
1450 extern ModeSpecOpt space_opts;
1451 #endif
1452 
1453 #ifdef MODE_sphere
1454 extern ModeHook init_sphere;
1455 extern ModeHook draw_sphere;
1456 extern ModeHook release_sphere;
1457 extern ModeHook refresh_sphere;
1458 extern ModeSpecOpt sphere_opts;
1459 #endif
1460 
1461 #ifdef MODE_spiral
1462 extern ModeHook init_spiral;
1463 extern ModeHook draw_spiral;
1464 extern ModeHook release_spiral;
1465 extern ModeHook refresh_spiral;
1466 extern ModeSpecOpt spiral_opts;
1467 #endif
1468 
1469 #ifdef MODE_spline
1470 extern ModeHook init_spline;
1471 extern ModeHook draw_spline;
1472 extern ModeHook release_spline;
1473 extern ModeHook refresh_spline;
1474 extern ModeSpecOpt spline_opts;
1475 #endif
1476 
1477 #ifdef MODE_sproingies
1478 extern ModeHook init_sproingies;
1479 extern ModeHook draw_sproingies;
1480 extern ModeHook release_sproingies;
1481 extern ModeSpecOpt sproingies_opts;
1482 #endif
1483 
1484 #ifdef MODE_stairs
1485 extern ModeHook init_stairs;
1486 extern ModeHook draw_stairs;
1487 extern ModeHook release_stairs;
1488 extern ModeHook refresh_stairs;
1489 extern ModeHook change_stairs;
1490 extern ModeSpecOpt stairs_opts;
1491 #endif
1492 
1493 #ifdef MODE_star
1494 extern ModeHook init_star;
1495 extern ModeHook draw_star;
1496 extern ModeHook release_star;
1497 extern ModeHook refresh_star;
1498 extern ModeSpecOpt star_opts;
1499 #endif
1500 
1501 #ifdef MODE_starfish
1502 extern ModeHook init_starfish;
1503 extern ModeHook draw_starfish;
1504 extern ModeHook release_starfish;
1505 extern ModeSpecOpt starfish_opts;
1506 #endif
1507 
1508 #ifdef MODE_strange
1509 extern ModeHook init_strange;
1510 extern ModeHook draw_strange;
1511 extern ModeHook release_strange;
1512 extern ModeSpecOpt strange_opts;
1513 #endif
1514 
1515 #ifdef MODE_superquadrics
1516 extern ModeHook init_superquadrics;
1517 extern ModeHook draw_superquadrics;
1518 extern ModeHook release_superquadrics;
1519 extern ModeSpecOpt superquadrics_opts;
1520 #endif
1521 
1522 #ifdef MODE_swarm
1523 extern ModeHook init_swarm;
1524 extern ModeHook draw_swarm;
1525 extern ModeHook release_swarm;
1526 extern ModeHook refresh_swarm;
1527 extern ModeSpecOpt swarm_opts;
1528 #endif
1529 
1530 #ifdef MODE_swirl
1531 extern ModeHook init_swirl;
1532 extern ModeHook draw_swirl;
1533 extern ModeHook release_swirl;
1534 extern ModeHook refresh_swirl;
1535 extern ModeSpecOpt swirl_opts;
1536 #endif
1537 
1538 #ifdef MODE_t3d
1539 extern ModeHook init_t3d;
1540 extern ModeHook draw_t3d;
1541 extern ModeHook release_t3d;
1542 extern ModeHook refresh_t3d;
1543 extern ModeSpecOpt t3d_opts;
1544 #endif
1545 
1546 #ifdef MODE_tetris
1547 extern ModeHook init_tetris;
1548 extern ModeHook draw_tetris;
1549 extern ModeHook release_tetris;
1550 extern ModeHook refresh_tetris;
1551 extern ModeHook change_tetris;
1552 extern ModeSpecOpt tetris_opts;
1553 #endif
1554 
1555 #ifdef MODE_text3d
1556 extern ModeHook init_text3d;
1557 extern ModeHook draw_text3d;
1558 extern ModeHook release_text3d;
1559 extern ModeHook refresh_text3d;
1560 extern ModeHook change_text3d;
1561 extern ModeSpecOpt text3d_opts;
1562 #endif
1563 
1564 #ifdef MODE_text3d2
1565 extern ModeHook init_text3d2;
1566 extern ModeHook draw_text3d2;
1567 extern ModeHook release_text3d2;
1568 extern ModeHook refresh_text3d2;
1569 extern ModeHook change_text3d2;
1570 extern ModeSpecOpt text3d2_opts;
1571 #endif
1572 
1573 #ifdef MODE_thornbird
1574 extern ModeHook init_thornbird;
1575 extern ModeHook draw_thornbird;
1576 extern ModeHook release_thornbird;
1577 extern ModeHook refresh_thornbird;
1578 extern ModeHook change_thornbird;
1579 extern ModeSpecOpt thornbird_opts;
1580 #endif
1581 
1582 #ifdef MODE_tik_tak
1583 extern ModeHook init_tik_tak;
1584 extern ModeHook draw_tik_tak;
1585 extern ModeHook release_tik_tak;
1586 extern ModeHook refresh_tik_tak;
1587 extern ModeSpecOpt tik_tak_opts;
1588 #endif
1589 
1590 #ifdef MODE_toneclock
1591 extern ModeHook init_toneclock;
1592 extern ModeHook draw_toneclock;
1593 extern ModeHook release_toneclock;
1594 extern ModeHook refresh_toneclock;
1595 extern ModeSpecOpt toneclock_opts;
1596 #endif
1597 
1598 #ifdef MODE_triangle
1599 extern ModeHook init_triangle;
1600 extern ModeHook draw_triangle;
1601 extern ModeHook release_triangle;
1602 extern ModeHook refresh_triangle;
1603 extern ModeSpecOpt triangle_opts;
1604 #endif
1605 
1606 #ifdef MODE_tube
1607 extern ModeHook init_tube;
1608 extern ModeHook draw_tube;
1609 extern ModeHook release_tube;
1610 extern ModeHook refresh_tube;
1611 extern ModeSpecOpt tube_opts;
1612 #endif
1613 
1614 #ifdef MODE_turtle
1615 extern ModeHook init_turtle;
1616 extern ModeHook draw_turtle;
1617 extern ModeHook release_turtle;
1618 extern ModeHook refresh_turtle;
1619 extern ModeSpecOpt turtle_opts;
1620 #endif
1621 
1622 #ifdef MODE_vines
1623 extern ModeHook init_vines;
1624 extern ModeHook draw_vines;
1625 extern ModeHook release_vines;
1626 extern ModeHook refresh_vines;
1627 extern ModeSpecOpt vines_opts;
1628 #endif
1629 
1630 #ifdef MODE_voters
1631 extern ModeHook init_voters;
1632 extern ModeHook draw_voters;
1633 extern ModeHook release_voters;
1634 extern ModeHook refresh_voters;
1635 extern ModeSpecOpt voters_opts;
1636 #endif
1637 
1638 #ifdef MODE_wator
1639 extern ModeHook init_wator;
1640 extern ModeHook draw_wator;
1641 extern ModeHook release_wator;
1642 extern ModeHook refresh_wator;
1643 extern ModeSpecOpt wator_opts;
1644 #endif
1645 
1646 #ifdef MODE_wire
1647 extern ModeHook init_wire;
1648 extern ModeHook draw_wire;
1649 extern ModeHook release_wire;
1650 extern ModeHook refresh_wire;
1651 extern ModeSpecOpt wire_opts;
1652 #endif
1653 
1654 #ifdef MODE_world
1655 extern ModeHook init_world;
1656 extern ModeHook draw_world;
1657 extern ModeHook release_world;
1658 extern ModeHook refresh_world;
1659 extern ModeSpecOpt world_opts;
1660 #endif
1661 
1662 #ifdef MODE_worm
1663 extern ModeHook init_worm;
1664 extern ModeHook draw_worm;
1665 extern ModeHook release_worm;
1666 extern ModeHook refresh_worm;
1667 extern ModeSpecOpt worm_opts;
1668 #endif
1669 
1670 #ifdef MODE_xcl
1671 extern ModeHook init_xcl;
1672 extern ModeHook draw_xcl;
1673 extern ModeHook release_xcl;
1674 extern ModeSpecOpt xcl_opts;
1675 #endif
1676 
1677 #ifdef MODE_xjack
1678 extern ModeHook init_xjack;
1679 extern ModeHook draw_xjack;
1680 extern ModeHook release_xjack;
1681 extern ModeSpecOpt xjack_opts;
1682 #endif
1683 
1684 extern ModeHook init_blank;
1685 extern ModeSpecOpt blank_opts;
1686 
1687 #ifdef MODE_run
1688 extern ModeHook init_run;
1689 extern ModeHook release_run;
1690 extern ModeHook free_run;
1691 extern ModeSpecOpt run_opts;
1692 #endif
1693 
1694 #ifdef MODE_bomb
1695 extern ModeHook init_bomb;
1696 extern ModeHook draw_bomb;
1697 extern ModeHook release_bomb;
1698 extern ModeHook refresh_bomb;
1699 extern ModeHook change_bomb;
1700 extern ModeSpecOpt bomb_opts;
1701 #endif
1702 
1703 extern ModeHook init_random;
1704 extern ModeHook draw_random;
1705 extern ModeHook release_random;
1706 extern ModeHook refresh_random;
1707 extern ModeHook change_random;
1708 extern ModeSpecOpt random_opts;
1709 
1710 extern LockStruct LockProcs[];
1711 
1712 #else /* #ifndef USE_MODULES */
1713 
1714 extern void LoadModules(char *);
1715 extern void UnloadModules();
1716 
1717 extern LockStruct *LockProcs;
1718 extern void **LoadedModules;	/* save handles on loaded modules for closing */
1719 
1720 #endif
1721 
1722 extern int  numprocs;
1723 
1724 #ifdef __cplusplus
1725   }
1726 #endif
1727 
1728 #define MI_INIT(mi, state_array) \
1729   { \
1730     mi_init ((mi), sizeof(*(state_array)), (void **)&(state_array)); \
1731     if (!state_array) \
1732       return; \
1733   }
1734 extern void mi_init (ModeInfo *, size_t, void **);
1735 
1736 #define XSCREENSAVER_MODULE(CLASS,PREFIX)
1737 
1738 #endif /* __XLOCK_MODE_H__ */
1739