xenocara/app/xlockmore/xlock/mode.h

1864 lines
46 KiB
C
Raw Normal View History

2006-11-26 04:07:42 -07:00
#ifndef __XLOCK_MODE_H__
#define __XLOCK_MODE_H__
#if !defined( lint ) && !defined( SABER )
/* #ident "@(#)mode.h 4.14 99/06/17 xlockmore" */
#endif
/*-
* mode.h - mode management for xlock, the X Window System lockscreen.
*
* Copyright (c) 1991 by Patrick J. Naughton.
* xscreensaver code, Copyright (c) 1997 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation.
*
* This file is provided AS IS with no warranties of any kind. The author
* shall have no liability with respect to the infringement of copyrights,
* trade secrets or any patents by this file or any part thereof. In no
* event will the author be liable for any lost revenue or profits or
* other special, indirect and consequential damages.
*
* 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.
*/
/* -------------------------------------------------------------------- */
#ifdef STANDALONE
/* xscreensaver compatibility layer for xlockmore modules. */
/*-
* xscreensaver, Copyright (c) 1997, 1998 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation. No representations are made about the suitability of this
* software for any purpose. It is provided "as is" without express or
* implied warranty.
*
* The definitions in this file make it possible to compile an xlockmore
* module into a standalone program, and thus use it with xscreensaver.
* By Jamie Zawinski <jwz@jwz.org> on 10-May-97; based on the ideas
* in the older xlock.h by Charles Hannum <mycroft@ai.mit.edu>. (I had
* to redo it, since xlockmore has diverged so far from xlock...)
*/
/*-
* Accessor macros for the ModeInfo structure
*/
#define MI_DISPLAY(MI) ((MI)->dpy)
#define MI_WINDOW(MI) ((MI)->window)
#define MI_NUM_SCREENS(MI) (1) /* Only manage one screen at a time; */
#define MI_SCREEN(MI) (0) /* this might be fragile... */
#define MI_NPIXELS(MI) ((MI)->npixels)
#define MI_PIXEL(MI,N) ((MI)->pixels[(N)])
#define MI_VISUAL(MI) ((MI)->xgwa.visual)
#define MI_GC(MI) ((MI)->gc)
#define MI_PAUSE(MI) ((MI)->pause)
#define MI_LEFT_COLOR(MI) ((MI)->threed_left_color)
#define MI_RIGHT_COLOR(MI) ((MI)->threed_right_color)
#define MI_BOTH_COLOR(MI) ((MI)->threed_both_color)
#define MI_NONE_COLOR(MI) ((MI)->threed_none_color)
#define MI_DELTA3D(MI) ((MI)->threed_delta)
#define MI_CYCLES(MI) ((MI)->cycles)
#define MI_BATCHCOUNT(MI) ((MI)->count)
#define MI_SIZE(MI) ((MI)->size)
#define MI_BITMAP(MI) ((MI)->bitmap)
#define MI_WHITE_PIXEL(MI) ((MI)->white)
#define MI_BLACK_PIXEL(MI) ((MI)->black)
#define MI_WIDTH(MI) ((MI)->xgwa.width)
#define MI_HEIGHT(MI) ((MI)->xgwa.height)
#define MI_DEPTH(MI) ((MI)->xgwa.depth)
#define MI_COLORMAP(MI) ((MI)->xgwa.colormap)
#define MI_IS_FULLRANDOM(MI)((MI)->fullrandom)
#define MI_IS_DEBUG(MI) ((MI)->verbose)
#define MI_IS_VERBOSE(MI) ((MI)->verbose)
#define MI_IS_INSTALL(MI) (True)
#define MI_IS_MONO(MI) (mono_p)
#define MI_IS_INROOT(MI) ((MI)->root_p)
#define MI_IS_INWINDOW(MI) (!(MI)->root_p)
#define MI_IS_ICONIC(MI) (False)
#define MI_IS_WIREFRAME(MI) ((MI)->wireframe_p)
#define MI_IS_FPS(MI) ((MI)->fps_p)
#define MI_IS_USE3D(MI) ((MI)->threed)
#define MI_COUNT(MI) ((MI)->count)
#define MI_NCOLORS(MI) ((MI)->ncolors)
#define MI_IS_DRAWN(MI)((MI)->is_drawn)
#define MI_CLEARWINDOWCOLORMAP(mi, gc, pixel) \
{ \
XSetForeground(MI_DISPLAY(mi), gc, pixel); \
XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc, \
0, 0, (unsigned int) MI_WIDTH(mi), (unsigned int) MI_HEIGHT(mi)); \
}
#define MI_CLEARWINDOWCOLORMAPFAST(mi, gc, pixel) \
MI_CLEARWINDOWCOLORMAP(mi, gc, pixel)
#define MI_CLEARWINDOWCOLOR(mi, pixel) \
MI_CLEARWINDOWCOLORMAP(mi, MI_GC(mi), pixel)
/* #define MI_CLEARWINDOW(mi) XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi)) */
#define MI_CLEARWINDOW(mi) MI_CLEARWINDOWCOLOR(mi, MI_BLACK_PIXEL(mi))
#include "screenhack.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct ModeInfo {
Display *dpy;
Window window;
Bool root_p;
int npixels;
unsigned long *pixels;
XColor *colors;
Bool writable_p;
unsigned long white;
unsigned long black;
XWindowAttributes xgwa;
GC gc;
long pause;
Bool fullrandom;
Bool verbose;
int count;
int cycles;
int size;
int ncolors;
Bool threed;
long threed_left_color;
long threed_right_color;
long threed_both_color;
long threed_none_color;
long threed_delta;
Bool wireframe_p;
char *bitmap;
Bool is_drawn;
Bool fps_p;
} ModeInfo;
typedef enum {
t_String, t_Float, t_Int, t_Bool
} xlockmore_type;
typedef struct {
void *var;
char *name;
char *classname;
char *def;
xlockmore_type type;
} argtype;
typedef struct {
char *opt;
char *desc;
} OptionStruct;
typedef struct {
int numopts;
XrmOptionDescRec *opts;
int numvarsdesc;
argtype *vars;
OptionStruct *desc;
} ModeSpecOpt;
extern void xlockmore_screenhack(Display * dpy, Window window,
Bool want_writable_colors,
Bool want_uniform_colors,
Bool want_smooth_colors,
Bool want_bright_colors,
void (*hack_init) (ModeInfo *),
void (*hack_draw) (ModeInfo *),
void (*hack_free) (ModeInfo *));
#ifdef USE_GL
extern Visual *get_gl_visual(Screen * screen, char *name, char *class);
#endif
#ifdef __cplusplus
}
#endif
#else /* STANDALONE */
#ifdef __cplusplus
extern "C" {
#endif
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 */
ModeHook *init_hook; /* func to init a mode */
ModeHook *callback_hook; /* func to run (tick) a mode */
ModeHook *release_hook; /* func to shutdown a mode */
ModeHook *refresh_hook; /* tells mode to repaint */
ModeHook *change_hook; /* user wants mode to change */
ModeHook *unused_hook; /* for future expansion */
ModeSpecOpt *msopt; /* this mode's def resources */
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 */
} LockStruct;
#define LS_FLAG_INITED 1
typedef struct {
Pixmap pixmap;
#ifdef ORIGINAL_XPM_PATCH
/* Not recommended */
Pixmap bitmap;
#else
int width, height, graphics_format;
#endif
} mailboxInfo;
typedef struct {
mailboxInfo mail;
mailboxInfo nomail;
GC mbgc;
} mboxInfo;
typedef struct {
Visual *visual;
int visualclass; /* visual class name of current window */
unsigned int depth;
unsigned long red_mask, green_mask, blue_mask; /* masks of current window */
int colormap_size; /* colormap of current window */
Colormap colormap; /* current colormap */
Window window; /* window used to cover screen */
Window icon; /* window used during password typein */
Window root; /* convenience pointer to the root window */
#ifdef USE_BUTTON_LOGOUT
Window button;
#endif
GC gc; /* graphics context for animation */
GC textgc; /* graphics context used for text rendering */
GC plantextgc; /* graphics context for plan message rendering */
XPoint iconpos; /* location of top left edge of icon */
XPoint planpos; /* location of top left edge of message */
int npixels; /* number of valid entries in pixels */
unsigned long *pixels; /* pixel values in the colormap */
unsigned long black_pixel, white_pixel; /* black and white pixel values */
unsigned long bg_pixel, fg_pixel; /* background and foreground pixel values */
unsigned long right_pixel, left_pixel; /* 3D color pixel values */
unsigned long none_pixel, both_pixel;
XWindowChanges fullsizeconfigure;
mboxInfo mb;
Pixmap root_pixmap;
} ScreenInfo;
typedef struct {
Display *display; /* handle to X display */
Screen *screenptr; /* ptr to screen info */
int screen; /* number of current screen */
int real_screen; /* for debugging */
int num_screens; /* number screens locked */
int max_screens; /* max # active screens */
Window window; /* handle to current window */
int width; /* width of current window */
int height; /* height of current window */
unsigned int flags; /* xlock window flags */
float delta3d;
Bool is_drawn; /*Indicates that enough is drawn for special *
* erase */
} WindowInfo;
#ifdef __cplusplus
}
#endif
#define WI_FLAG_INFO_INITTED 0x001 /* private state flag */
#define WI_FLAG_ICONIC 0x002
#define WI_FLAG_MONO 0x004
#define WI_FLAG_INWINDOW 0x008
#define WI_FLAG_INROOT 0x010
#define WI_FLAG_NOLOCK 0x020
#define WI_FLAG_INSTALL 0x040
#define WI_FLAG_DEBUG 0x080
#define WI_FLAG_USE3D 0x100
#define WI_FLAG_VERBOSE 0x200
#define WI_FLAG_FULLRANDOM 0x400
#define WI_FLAG_WIREFRAME 0x800
#define WI_FLAG_FPS 0x1000
#define WI_FLAG_JUST_INITTED 0x2000 /* private state flag */
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
long pause; /* output, set by mode */
long delay; /* inputs, current settings */
int count;
int cycles;
int size;
int ncolors;
float saturation;
char *bitmap;
} RunInfo;
typedef struct ModeInfo_s {
WindowInfo windowinfo;
ScreenInfo *screeninfo;
RunInfo runinfo;
struct LockStruct_s *lockstruct;
} ModeInfo;
#ifdef __cplusplus
}
#endif
/* -------------------------------------------------------------------- */
/*-
* These are the public interfaces that a mode should use to obtain
* information about the display and other environmental parameters.
* Everything hangs off a ModeInfo pointer. A mode should NOT cache
* a ModeInfo pointer, the struct it points to is volatile. The mode
* can safely make a copy of the data it points to, however. But it
* is recommended the mode make use of the passed-in pointer and pass
* it along to functions it calls.
* Use these macros, don't look at the fields directly. The insides
* of the ModeInfo struct are certain to change in the future.
*/
#define MODE_IS_INITED(ls) ((ls)->flags & LS_FLAG_INITED)
#define MODE_NOT_INITED(ls) ( ! MODE_IS_INITED(ls))
#define MI_DISPLAY(mi) ((mi)->windowinfo.display)
#define MI_SCREEN(mi) ((mi)->windowinfo.screen)
#define MI_SCREENPTR(mi) ((mi)->windowinfo.screenptr)
#define MI_REAL_SCREEN(mi) ((mi)->windowinfo.real_screen)
#define MI_NUM_SCREENS(mi) ((mi)->windowinfo.num_screens)
#define MI_MAX_SCREENS(mi) ((mi)->windowinfo.max_screens)
#define MI_WINDOW(mi) ((mi)->windowinfo.window)
#define MI_WIDTH(mi) ((mi)->windowinfo.width)
#define MI_HEIGHT(mi) ((mi)->windowinfo.height)
#define MI_DELTA3D(mi) ((mi)->windowinfo.delta3d)
#define MI_FLAGS(mi) ((mi)->windowinfo.flags)
#define MI_IS_DRAWN(mi) ((mi)->windowinfo.is_drawn)
#define MI_SET_FLAG_STATE(mi,f,bool) ((mi)->windowinfo.flags = \
(bool) ? (mi)->windowinfo.flags | f \
: (mi)->windowinfo.flags & ~(f))
#define MI_FLAG_IS_SET(mi,f) ((mi)->windowinfo.flags & f)
#define MI_FLAG_NOT_SET(mi,f) ( ! MI_FLAG_IS_SET(mi,f))
#define MI_IS_ICONIC(mi) (MI_FLAG_IS_SET (mi, WI_FLAG_ICONIC))
#define MI_IS_MONO(mi) (MI_FLAG_IS_SET (mi, WI_FLAG_MONO))
#define MI_IS_INWINDOW(mi) (MI_FLAG_IS_SET (mi, WI_FLAG_INWINDOW))
#define MI_IS_INROOT(mi) (MI_FLAG_IS_SET (mi, WI_FLAG_INROOT))
#define MI_IS_NOLOCK(mi) (MI_FLAG_IS_SET (mi, WI_FLAG_NOLOCK))
#define MI_IS_INSTALL(mi) (MI_FLAG_IS_SET (mi, WI_FLAG_INSTALL))
#define MI_IS_DEBUG(mi) (MI_FLAG_IS_SET (mi, WI_FLAG_DEBUG))
#define MI_IS_USE3D(mi) (MI_FLAG_IS_SET (mi, WI_FLAG_USE3D))
#define MI_IS_VERBOSE(mi) (MI_FLAG_IS_SET (mi, WI_FLAG_VERBOSE))
#define MI_IS_FULLRANDOM(mi) (MI_FLAG_IS_SET (mi, WI_FLAG_FULLRANDOM))
#define MI_IS_WIREFRAME(mi) (MI_FLAG_IS_SET (mi, WI_FLAG_WIREFRAME))
#define MI_IS_FPS(mi) (MI_FLAG_IS_SET (mi, WI_FLAG_FPS))
#define MI_SCREENINFO(mi) ((mi)->screeninfo)
#define MI_DEPTH(mi) ((mi)->screeninfo->depth)
#define MI_VISUAL(mi) ((mi)->screeninfo->visual)
#define MI_VISUALCLASS(mi) ((mi)->screeninfo->visualclass)
#define MI_COLORMAP_SIZE(mi) ((mi)->screeninfo->colormap_size)
#define MI_RED_MASK(mi) ((mi)->screeninfo->red_mask)
#define MI_GREEN_MASK(mi) ((mi)->screeninfo->green_mask)
#define MI_BLUE_MASK(mi) ((mi)->screeninfo->blue_mask)
#define MI_COLORMAP(mi) ((mi)->screeninfo->colormap)
#define MI_GC(mi) ((mi)->screeninfo->gc)
#define MI_NPIXELS(mi) ((mi)->screeninfo->npixels)
#define MI_PIXELS(mi) ((mi)->screeninfo->pixels)
#define MI_PIXEL(mi,n) ((mi)->screeninfo->pixels[n])
#define MI_BLACK_PIXEL(mi) ((mi)->screeninfo->black_pixel)
#define MI_WHITE_PIXEL(mi) ((mi)->screeninfo->white_pixel)
#define MI_BG_PIXEL(mi) ((mi)->screeninfo->bg_pixel)
#define MI_FG_PIXEL(mi) ((mi)->screeninfo->fg_pixel)
#define MI_NONE_COLOR(mi) ((mi)->screeninfo->none_pixel) /* -install */
#define MI_RIGHT_COLOR(mi) ((mi)->screeninfo->right_pixel)
#define MI_LEFT_COLOR(mi) ((mi)->screeninfo->left_pixel)
#define MI_ROOT_PIXMAP(mi) ((mi)->screeninfo->root_pixmap)
#define MI_DELAY(mi) ((mi)->runinfo.delay)
#define MI_COUNT(mi) ((mi)->runinfo.count)
#define MI_CYCLES(mi) ((mi)->runinfo.cycles)
#define MI_SIZE(mi) ((mi)->runinfo.size)
#define MI_NCOLORS(mi) ((mi)->runinfo.ncolors)
#define MI_SATURATION(mi) ((mi)->runinfo.saturation)
#define MI_BITMAP(mi) ((mi)->runinfo.bitmap)
#define MI_PAUSE(MI) ((mi)->runinfo.pause)
#define MI_LOCKSTRUCT(mi) ((mi)->lockstruct)
#define MI_DEFDELAY(mi) ((mi)->lockstruct->def_delay)
#define MI_DEFCOUNT(mi) ((mi)->lockstruct->def_count)
#define MI_DEFCYCLES(mi) ((mi)->lockstruct->def_cycles)
#define MI_DEFSIZE(mi) ((mi)->lockstruct->def_size)
#define MI_DEFNCOLORS(mi) ((mi)->lockstruct->def_ncolors)
#define MI_DEFSATURATION(mi) ((mi)->lockstruct->def_saturation)
#define MI_DEFBITMAP(mi) ((mi)->lockstruct->def_bitmap)
#define MI_NAME(mi) ((mi)->lockstruct->cmdline_arg)
#define MI_DESC(mi) ((mi)->lockstruct->desc)
#define MI_USERDATA(mi) ((mi)->lockstruct->userdata)
#ifdef SOLARIS2
/*-
* It was acting weird with the first rectangle drawn
* on a Ultra2 with TrueColor Solaris2.x in deco mode.
* Not sure if other modes are affected... now handled in deco mode.
* If it does happen it is probably not as noticable to worry about.
*/
#endif
#ifdef __cplusplus
extern "C" {
#endif
extern void modeDescription(ModeInfo * mi);
extern void erase_full_window(ModeInfo * mi, GC erase_gc, unsigned long pixel);
#ifdef __cplusplus
}
#endif
#define MI_CLEARWINDOWCOLORMAP(mi, gc, pixel) \
{ \
erase_full_window( mi , gc , pixel ); \
}
#define MI_CLEARWINDOWCOLORMAPFAST(mi, gc, pixel) \
{ \
XSetForeground(MI_DISPLAY(mi), gc, pixel); \
if ((MI_WIDTH(mi) >= 2) || (MI_HEIGHT(mi) >= 2)) { \
XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc, 1, 1, \
(unsigned int) MI_WIDTH(mi) - 2, (unsigned int) MI_HEIGHT(mi) - 2); \
XDrawRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc, 0, 0, \
(unsigned int) MI_WIDTH(mi) - 1, (unsigned int) MI_HEIGHT(mi) - 1); \
} else \
XFillRectangle(MI_DISPLAY(mi), MI_WINDOW(mi), gc, 0, 0, \
(unsigned int) MI_WIDTH(mi), (unsigned int) MI_HEIGHT(mi)); \
}
#define MI_CLEARWINDOWCOLOR(mi, pixel) \
MI_CLEARWINDOWCOLORMAP(mi, MI_GC(mi), pixel)
#if 1
/*-
* XClearWindow with GL or MONO does not always work.
*/
#define MI_CLEARWINDOW(mi) MI_CLEARWINDOWCOLOR(mi, MI_BLACK_PIXEL(mi))
#else
#define MI_CLEARWINDOW(mi) XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi))
#endif
/* -------------------------------------------------------------------- */
#ifdef __cplusplus
extern "C" {
#endif
extern HookProc call_init_hook;
extern HookProc call_callback_hook;
extern HookProc call_release_hook;
extern HookProc call_refresh_hook;
extern HookProc call_change_hook;
extern void set_default_mode(LockStruct *);
extern void release_last_mode(ModeInfo *);
/* -------------------------------------------------------------------- */
/* if you just want the blank mode... how sad! */
#ifndef BLANK_ONLY
#ifndef NICE_ONLY
/* comment out following defines to remove modes */
#ifdef USE_GL
#define MODE_biof
#define MODE_cage
#define MODE_fire
#define MODE_gears
#define MODE_glplanet
#define MODE_lament
#define MODE_moebius
#define MODE_molecule
#define MODE_morph3d
#define MODE_noof
#define MODE_rubik
#define MODE_sierpinski3d
#define MODE_sballs
#define MODE_sproingies
#define MODE_stairs
#define MODE_superquadrics
#ifdef USE_UNSTABLE
#define MODE_skewb /* under development */
#endif
#ifdef USE_RETIRED
#define MODE_cartoon /* retired mode */
#define MODE_kaleid2 /* retired mode */
#endif
#define MODE_atlantis
#define MODE_atunnels
#define MODE_bubble3d
#define MODE_pipes
#define MODE_sproingies
#ifdef HAVE_CXX
#define MODE_invert
#if defined( HAVE_TTF ) && defined( HAVE_GLTT )
#define MODE_text3d
#endif
#if defined( HAVE_FREETYPE ) && defined( HAVE_FTGL )
#define MODE_text3d2
#endif
#endif /* HAVE_CXX */
#endif /* USE_GL */
#ifdef HAVE_CXX
#define MODE_solitare
#endif
#ifdef USE_UNSTABLE
#define MODE_run /* VMS problems as well as -debug problems */
#ifdef UNDER_DEVELOPMENT
#if 0
#ifdef HAVE_CXX
#define MODE_billiards
#endif
#endif
#endif /* UNDER_DEVELOPMENT */
#endif /* USE_UNSTABLE */
#ifndef WIN32
#define MODE_anemone
#endif
#define MODE_ant
#define MODE_ant3d
#define MODE_apollonian
#define MODE_ball
#define MODE_bat
#define MODE_blot
#define MODE_bouboule
#define MODE_bounce
#define MODE_braid
#ifndef WIN32
#define MODE_bubble
#endif /* !WIN32 */
#define MODE_bug
#define MODE_clock
#define MODE_coral
#define MODE_crystal
#define MODE_daisy
#ifndef WIN32
#define MODE_dclock
/*-
* Comment out dclock sub-modes to disable them from random selection.
* Useful for disabling y2k and millennium after those countdown dates
* have already gone by.
*/
/* #define MODE_dclock_y2k */
/* #define MODE_dclock_millennium */
#define MODE_decay
#endif /* !WIN32 */
#define MODE_deco
#ifndef WIN32
#define MODE_deluxe
#endif /* !WIN32 */
#define MODE_demon
#define MODE_dilemma
#define MODE_discrete
#define MODE_dragon
#define MODE_drift
#define MODE_euler2d
#define MODE_eyes
#define MODE_fadeplot
#define MODE_fiberlamp
#ifndef WIN32
#define MODE_flag
#endif /* !WIN32 */
#define MODE_flame
#define MODE_flow
#define MODE_forest
#ifndef WIN32
#define MODE_fzort
#endif /* !WIN32 */
#define MODE_galaxy
#ifndef WIN32
#define MODE_goop
#endif /* !WIN32 */
#define MODE_grav
#define MODE_helix
#define MODE_hop
#define MODE_hyper
#define MODE_ico
#ifndef WIN32
#define MODE_ifs
#endif /* !WIN32 */
#define MODE_image
#define MODE_juggle
#define MODE_julia
#define MODE_kaleid
#define MODE_kumppa
#define MODE_laser
#define MODE_life
#define MODE_life1d
#define MODE_life3d
#define MODE_lightning
#define MODE_lisa
#define MODE_lissie
#define MODE_loop
#define MODE_lyapunov
#define MODE_mandelbrot
#ifndef WIN32
#define MODE_marquee
#endif /* !WIN32 */
#define MODE_matrix
#define MODE_maze
#define MODE_mountain
#define MODE_munch
#define MODE_nose
#define MODE_pacman
#ifndef WIN32
#define MODE_penrose
#endif /* !WIN32 */
#define MODE_petal
#define MODE_petri
#define MODE_polyominoes
#ifndef WIN32
#define MODE_puzzle
#endif /* !WIN32 */
#define MODE_pyro
#define MODE_qix
#define MODE_roll
#define MODE_rotor
#define MODE_scooter /* should be combined with star some day */
#define MODE_shape
#define MODE_sierpinski
#define MODE_slip
#define MODE_space /* should be combined with star some day */
#define MODE_sphere
#define MODE_spiral
#define MODE_spline
#define MODE_star
#define MODE_starfish
#ifndef WIN32
#define MODE_strange
#endif /* !WIN32 */
#define MODE_swarm
#ifndef WIN32
#define MODE_swirl
#define MODE_t3d
#endif /* !WIN32 */
#define MODE_tetris
#define MODE_thornbird
#define MODE_tik_tak
#define MODE_toneclock
#define MODE_triangle
#define MODE_tube
#define MODE_turtle
#define MODE_vines
#define MODE_voters
#define MODE_wator
#define MODE_wire
#define MODE_world
#define MODE_worm
#ifndef WIN32
#define MODE_xcl
#endif /* !WIN32 */
#define MODE_xjack
#ifdef USE_BOMB
#define MODE_bomb
#endif
#else /* NICE_ONLY */
#ifdef HAVE_CXX
#define MODE_solitare
#endif
#define MODE_apollonian
#define MODE_blot
#define MODE_bouboule
#define MODE_bug
#define MODE_clock
#define MODE_daisy
#define MODE_dclock
#define MODE_decay
#define MODE_deco
#define MODE_deluxe
#define MODE_demon
#define MODE_dilemma
#define MODE_dragon
#define MODE_eyes
#define MODE_fadeplot
#define MODE_flame
#define MODE_forest
#define MODE_fzort
#define MODE_grav
#define MODE_hop
#define MODE_hyper
#define MODE_ico
#define MODE_image
#define MODE_kaleid
#define MODE_life
#define MODE_life1d
#define MODE_life3d
#define MODE_lightning
#define MODE_lisa
#define MODE_lissie
#define MODE_loop
#define MODE_marquee
#define MODE_munch
#define MODE_nose
#define MODE_pacman
#define MODE_penrose
#define MODE_petal
#define MODE_puzzle
#define MODE_pyro
#define MODE_qix
#define MODE_roll
#define MODE_space /* should be combined with star some day */
#define MODE_sphere
#define MODE_spiral
#define MODE_spline
#define MODE_star
#define MODE_swarm
#define MODE_tetris
#define MODE_triangle
#define MODE_tube
#define MODE_turtle
#define MODE_vines
#define MODE_wator
#define MODE_wire
#define MODE_world
#define MODE_worm
#define MODE_xcl
#define MODE_xjack
#ifdef USE_BOMB
#define MODE_bomb
#endif
#endif /* NICE_ONLY */
#endif /* BLANK_ONLY */
#ifndef USE_MODULES
#ifdef MODE_anemone
extern ModeHook init_anemone;
extern ModeHook draw_anemone;
extern ModeHook release_anemone;
extern ModeHook refresh_anemone;
extern ModeSpecOpt anemone_opts;
#endif
#ifdef MODE_ant
extern ModeHook init_ant;
extern ModeHook draw_ant;
extern ModeHook release_ant;
extern ModeHook refresh_ant;
extern ModeSpecOpt ant_opts;
#endif
#ifdef MODE_ant3d
extern ModeHook init_ant3d;
extern ModeHook draw_ant3d;
extern ModeHook release_ant3d;
extern ModeHook refresh_ant3d;
extern ModeSpecOpt ant3d_opts;
#endif
#ifdef MODE_apollonian
extern ModeHook init_apollonian;
extern ModeHook draw_apollonian;
extern ModeHook release_apollonian;
extern ModeHook refresh_apollonian;
extern ModeSpecOpt apollonian_opts;
#endif
#ifdef MODE_atlantis
extern ModeHook init_atlantis;
extern ModeHook draw_atlantis;
extern ModeHook release_atlantis;
extern ModeHook refresh_atlantis;
extern ModeHook change_atlantis;
extern ModeSpecOpt atlantis_opts;
#endif
#ifdef MODE_atunnels
extern ModeHook init_atunnels;
extern ModeHook draw_atunnels;
extern ModeHook release_atunnels;
extern ModeHook refresh_atunnels;
extern ModeHook change_atunnels;
extern ModeSpecOpt atunnels_opts;
#endif
#ifdef MODE_ball
extern ModeHook init_ball;
extern ModeHook draw_ball;
extern ModeHook release_ball;
extern ModeHook refresh_ball;
extern ModeSpecOpt ball_opts;
#endif
#ifdef MODE_bat
extern ModeHook init_bat;
extern ModeHook draw_bat;
extern ModeHook release_bat;
extern ModeHook refresh_bat;
extern ModeSpecOpt bat_opts;
#endif
#ifdef MODE_biof
extern ModeHook init_biof;
extern ModeHook draw_biof;
extern ModeHook release_biof;
extern ModeHook refresh_biof;
extern ModeHook change_fire;
extern ModeSpecOpt biof_opts;
#endif
#ifdef MODE_billiards
extern ModeHook init_billiards;
extern ModeHook draw_billiards;
extern ModeHook release_billiards;
extern ModeHook refresh_billiards;
extern ModeSpecOpt billiards_opts;
#endif
#ifdef MODE_blot
extern ModeHook init_blot;
extern ModeHook draw_blot;
extern ModeHook release_blot;
extern ModeHook refresh_blot;
extern ModeSpecOpt blot_opts;
#endif
#ifdef MODE_bouboule
extern ModeHook init_bouboule;
extern ModeHook draw_bouboule;
extern ModeHook release_bouboule;
extern ModeHook refresh_bouboule;
extern ModeSpecOpt bouboule_opts;
#endif
#ifdef MODE_bounce
extern ModeHook init_bounce;
extern ModeHook draw_bounce;
extern ModeHook release_bounce;
extern ModeHook refresh_bounce;
extern ModeSpecOpt bounce_opts;
#endif
#ifdef MODE_braid
extern ModeHook init_braid;
extern ModeHook draw_braid;
extern ModeHook release_braid;
extern ModeHook refresh_braid;
extern ModeSpecOpt braid_opts;
#endif
#ifdef MODE_bubble
extern ModeHook init_bubble;
extern ModeHook draw_bubble;
extern ModeHook release_bubble;
extern ModeHook refresh_bubble;
extern ModeSpecOpt bubble_opts;
#endif
#ifdef MODE_bubble3d
extern ModeHook init_bubble3d;
extern ModeHook draw_bubble3d;
extern ModeHook release_bubble3d;
extern ModeHook change_bubble3d;
extern ModeSpecOpt bubble3d_opts;
#endif
#ifdef MODE_bug
extern ModeHook init_bug;
extern ModeHook draw_bug;
extern ModeHook release_bug;
extern ModeHook refresh_bug;
extern ModeSpecOpt bug_opts;
#endif
#ifdef MODE_cage
extern ModeHook init_cage;
extern ModeHook draw_cage;
extern ModeHook release_cage;
extern ModeHook change_cage;
extern ModeSpecOpt cage_opts;
#endif
#ifdef MODE_cartoon
extern ModeHook init_cartoon;
extern ModeHook draw_cartoon;
extern ModeHook release_cartoon;
extern ModeHook refresh_cartoon;
extern ModeSpecOpt cartoon_opts;
#endif
#ifdef MODE_clock
extern ModeHook init_clock;
extern ModeHook draw_clock;
extern ModeHook release_clock;
extern ModeHook refresh_clock;
extern ModeSpecOpt clock_opts;
#endif
#ifdef MODE_coral
extern ModeHook init_coral;
extern ModeHook draw_coral;
extern ModeHook release_coral;
extern ModeHook refresh_coral;
extern ModeSpecOpt coral_opts;
#endif
#ifdef MODE_crystal
extern ModeHook init_crystal;
extern ModeHook draw_crystal;
extern ModeHook release_crystal;
extern ModeHook refresh_crystal;
extern ModeSpecOpt crystal_opts;
#endif
#ifdef MODE_daisy
extern ModeHook init_daisy;
extern ModeHook draw_daisy;
extern ModeHook release_daisy;
extern ModeHook refresh_daisy;
extern ModeSpecOpt daisy_opts;
#endif
#ifdef MODE_dclock
extern ModeHook init_dclock;
extern ModeHook draw_dclock;
extern ModeHook release_dclock;
extern ModeHook refresh_dclock;
extern ModeSpecOpt dclock_opts;
#endif
#ifdef MODE_decay
extern ModeHook init_decay;
extern ModeHook draw_decay;
extern ModeHook release_decay;
extern ModeHook refresh_decay;
extern ModeSpecOpt decay_opts;
#endif
#ifdef MODE_deco
extern ModeHook init_deco;
extern ModeHook draw_deco;
extern ModeHook release_deco;
extern ModeHook refresh_deco;
extern ModeSpecOpt deco_opts;
#endif
#ifdef MODE_deluxe
extern ModeHook init_deluxe;
extern ModeHook draw_deluxe;
extern ModeHook release_deluxe;
extern ModeHook refresh_deluxe;
extern ModeSpecOpt deluxe_opts;
#endif
#ifdef MODE_demon
extern ModeHook init_demon;
extern ModeHook draw_demon;
extern ModeHook release_demon;
extern ModeHook refresh_demon;
extern ModeSpecOpt demon_opts;
#endif
#ifdef MODE_dilemma
extern ModeHook init_dilemma;
extern ModeHook draw_dilemma;
extern ModeHook release_dilemma;
extern ModeHook refresh_dilemma;
extern ModeSpecOpt dilemma_opts;
#endif
#ifdef MODE_discrete
extern ModeHook init_discrete;
extern ModeHook draw_discrete;
extern ModeHook release_discrete;
extern ModeHook refresh_discrete;
extern ModeHook change_discrete;
extern ModeSpecOpt discrete_opts;
#endif
#ifdef MODE_dragon
extern ModeHook init_dragon;
extern ModeHook draw_dragon;
extern ModeHook release_dragon;
extern ModeHook refresh_dragon;
extern ModeSpecOpt dragon_opts;
#endif
#ifdef MODE_drift
extern ModeHook init_drift;
extern ModeHook draw_drift;
extern ModeHook release_drift;
extern ModeHook refresh_drift;
extern ModeSpecOpt drift_opts;
#endif
#ifdef MODE_euler2d
extern ModeHook init_euler2d;
extern ModeHook draw_euler2d;
extern ModeHook release_euler2d;
extern ModeHook refresh_euler2d;
extern ModeSpecOpt euler2d_opts;
#endif
#ifdef MODE_eyes
extern ModeHook init_eyes;
extern ModeHook draw_eyes;
extern ModeHook release_eyes;
extern ModeHook refresh_eyes;
extern ModeSpecOpt eyes_opts;
#endif
#ifdef MODE_fadeplot
extern ModeHook init_fadeplot;
extern ModeHook draw_fadeplot;
extern ModeHook release_fadeplot;
extern ModeHook refresh_fadeplot;
extern ModeSpecOpt fadeplot_opts;
#endif
#ifdef MODE_fire
extern ModeHook init_fire;
extern ModeHook draw_fire;
extern ModeHook release_fire;
extern ModeHook refresh_fire;
extern ModeHook change_fire;
extern ModeSpecOpt fire_opts;
#endif
#ifdef MODE_fiberlamp
extern ModeHook init_fiberlamp;
extern ModeHook draw_fiberlamp;
extern ModeHook release_fiberlamp;
extern ModeHook change_fiberlamp;
extern ModeSpecOpt fiberlamp_opts;
#endif
#ifdef MODE_flag
extern ModeHook init_flag;
extern ModeHook draw_flag;
extern ModeHook release_flag;
extern ModeHook refresh_flag;
extern ModeSpecOpt flag_opts;
#endif
#ifdef MODE_flame
extern ModeHook init_flame;
extern ModeHook draw_flame;
extern ModeHook release_flame;
extern ModeHook refresh_flame;
extern ModeSpecOpt flame_opts;
#endif
#ifdef MODE_flow
extern ModeHook init_flow;
extern ModeHook draw_flow;
extern ModeHook release_flow;
extern ModeHook refresh_flow;
extern ModeHook change_flow;
extern ModeSpecOpt flow_opts;
#endif
#ifdef MODE_forest
extern ModeHook init_forest;
extern ModeHook draw_forest;
extern ModeHook release_forest;
extern ModeHook refresh_forest;
extern ModeSpecOpt forest_opts;
#endif
#ifdef MODE_fzort
extern ModeHook init_fzort;
extern ModeHook draw_fzort;
extern ModeHook release_fzort;
extern ModeHook refresh_fzort;
extern ModeSpecOpt fzort_opts;
#endif
#ifdef MODE_galaxy
extern ModeHook init_galaxy;
extern ModeHook draw_galaxy;
extern ModeHook release_galaxy;
extern ModeHook refresh_galaxy;
extern ModeSpecOpt galaxy_opts;
#endif
#ifdef MODE_gears
extern ModeHook init_gears;
extern ModeHook draw_gears;
extern ModeHook release_gears;
extern ModeSpecOpt gears_opts;
#endif
#ifdef MODE_glplanet
extern ModeHook init_glplanet;
extern ModeHook draw_glplanet;
extern ModeHook release_glplanet;
extern ModeSpecOpt glplanet_opts;
#endif
#ifdef MODE_goop
extern ModeHook init_goop;
extern ModeHook draw_goop;
extern ModeHook release_goop;
extern ModeSpecOpt goop_opts;
#endif
#ifdef MODE_grav
extern ModeHook init_grav;
extern ModeHook draw_grav;
extern ModeHook release_grav;
extern ModeHook refresh_grav;
extern ModeSpecOpt grav_opts;
#endif
#ifdef MODE_helix
extern ModeHook init_helix;
extern ModeHook draw_helix;
extern ModeHook release_helix;
extern ModeHook refresh_helix;
extern ModeSpecOpt helix_opts;
#endif
#ifdef MODE_hop
extern ModeHook init_hop;
extern ModeHook draw_hop;
extern ModeHook release_hop;
extern ModeHook refresh_hop;
extern ModeSpecOpt hop_opts;
#endif
#ifdef MODE_hyper
extern ModeHook init_hyper;
extern ModeHook draw_hyper;
extern ModeHook release_hyper;
extern ModeHook refresh_hyper;
extern ModeHook change_hyper;
extern ModeSpecOpt hyper_opts;
#endif
#ifdef MODE_ico
extern ModeHook init_ico;
extern ModeHook draw_ico;
extern ModeHook release_ico;
extern ModeHook refresh_ico;
extern ModeHook change_ico;
extern ModeSpecOpt ico_opts;
#endif
#ifdef MODE_ifs
extern ModeHook init_ifs;
extern ModeHook draw_ifs;
extern ModeHook release_ifs;
extern ModeSpecOpt ifs_opts;
#endif
#ifdef MODE_image
extern ModeHook init_image;
extern ModeHook draw_image;
extern ModeHook release_image;
extern ModeHook refresh_image;
extern ModeSpecOpt image_opts;
#endif
#ifdef MODE_invert
extern ModeHook init_invert;
extern ModeHook draw_invert;
extern ModeHook release_invert;
extern ModeSpecOpt invert_opts;
#endif
#ifdef MODE_juggle
extern ModeHook init_juggle;
extern ModeHook draw_juggle;
extern ModeHook release_juggle;
extern ModeHook change_juggle;
extern ModeSpecOpt juggle_opts;
#endif
#ifdef MODE_julia
extern ModeHook init_julia;
extern ModeHook draw_julia;
extern ModeHook release_julia;
extern ModeHook refresh_julia;
extern ModeSpecOpt julia_opts;
#endif
#ifdef MODE_kaleid2
extern ModeHook init_kaleid2;
extern ModeHook draw_kaleid2;
extern ModeHook release_kaleid2;
extern ModeHook refresh_kaleid2;
extern ModeSpecOpt kaleid2_opts;
#endif
#ifdef MODE_kaleid
extern ModeHook init_kaleid;
extern ModeHook draw_kaleid;
extern ModeHook release_kaleid;
extern ModeHook refresh_kaleid;
extern ModeSpecOpt kaleid_opts;
#endif
#ifdef MODE_kumppa
extern ModeHook init_kumppa;
extern ModeHook draw_kumppa;
extern ModeHook release_kumppa;
extern ModeSpecOpt kumppa_opts;
#endif
#ifdef MODE_lament
extern ModeHook init_lament;
extern ModeHook draw_lament;
extern ModeHook release_lament;
extern ModeHook change_lament;
extern ModeSpecOpt lament_opts;
#endif
#ifdef MODE_laser
extern ModeHook init_laser;
extern ModeHook draw_laser;
extern ModeHook release_laser;
extern ModeHook refresh_laser;
extern ModeSpecOpt laser_opts;
#endif
#ifdef MODE_life
extern ModeHook init_life;
extern ModeHook draw_life;
extern ModeHook release_life;
extern ModeHook refresh_life;
extern ModeHook change_life;
extern ModeSpecOpt life_opts;
#endif
#ifdef MODE_life1d
extern ModeHook init_life1d;
extern ModeHook draw_life1d;
extern ModeHook release_life1d;
extern ModeHook refresh_life1d;
extern ModeSpecOpt life1d_opts;
#endif
#ifdef MODE_life3d
extern ModeHook init_life3d;
extern ModeHook draw_life3d;
extern ModeHook release_life3d;
extern ModeHook refresh_life3d;
extern ModeHook change_life3d;
extern ModeSpecOpt life3d_opts;
#endif
#ifdef MODE_lightning
extern ModeHook init_lightning;
extern ModeHook draw_lightning;
extern ModeHook release_lightning;
extern ModeHook refresh_lightning;
extern ModeSpecOpt lightning_opts;
#endif
#ifdef MODE_lisa
extern ModeHook init_lisa;
extern ModeHook draw_lisa;
extern ModeHook release_lisa;
extern ModeHook refresh_lisa;
extern ModeHook change_lisa;
extern ModeSpecOpt lisa_opts;
#endif
#ifdef MODE_lissie
extern ModeHook init_lissie;
extern ModeHook draw_lissie;
extern ModeHook release_lissie;
extern ModeHook refresh_lissie;
extern ModeSpecOpt lissie_opts;
#endif
#ifdef MODE_loop
extern ModeHook init_loop;
extern ModeHook draw_loop;
extern ModeHook release_loop;
extern ModeHook refresh_loop;
extern ModeSpecOpt loop_opts;
#endif
#ifdef MODE_lyapunov
extern ModeHook init_lyapunov;
extern ModeHook draw_lyapunov;
extern ModeHook release_lyapunov;
extern ModeHook refresh_lyapunov;
extern ModeSpecOpt lyapunov_opts;
#endif
#ifdef MODE_mandelbrot
extern ModeHook init_mandelbrot;
extern ModeHook draw_mandelbrot;
extern ModeHook release_mandelbrot;
extern ModeHook refresh_mandelbrot;
extern ModeSpecOpt mandelbrot_opts;
#endif
#ifdef MODE_marquee
extern ModeHook init_marquee;
extern ModeHook draw_marquee;
extern ModeHook release_marquee;
extern ModeSpecOpt marquee_opts;
#endif
#ifdef MODE_matrix
extern ModeHook init_matrix;
extern ModeHook draw_matrix;
extern ModeHook release_matrix;
extern ModeHook refresh_matrix;
extern ModeHook change_matrix;
extern ModeSpecOpt matrix_opts;
#endif
#ifdef MODE_maze
extern ModeHook init_maze;
extern ModeHook draw_maze;
extern ModeHook release_maze;
extern ModeHook refresh_maze;
extern ModeSpecOpt maze_opts;
#endif
#ifdef MODE_moebius
extern ModeHook init_moebius;
extern ModeHook draw_moebius;
extern ModeHook release_moebius;
extern ModeHook change_moebius;
extern ModeSpecOpt moebius_opts;
#endif
#ifdef MODE_molecule
extern ModeHook init_molecule;
extern ModeHook draw_molecule;
extern ModeHook release_molecule;
extern ModeSpecOpt molecule_opts;
#endif
#ifdef MODE_morph3d
extern ModeHook init_morph3d;
extern ModeHook draw_morph3d;
extern ModeHook release_morph3d;
extern ModeHook change_morph3d;
extern ModeSpecOpt morph3d_opts;
#endif
#ifdef MODE_mountain
extern ModeHook init_mountain;
extern ModeHook draw_mountain;
extern ModeHook release_mountain;
extern ModeHook refresh_mountain;
extern ModeSpecOpt mountain_opts;
#endif
#ifdef MODE_munch
extern ModeHook init_munch;
extern ModeHook draw_munch;
extern ModeHook release_munch;
extern ModeSpecOpt munch_opts;
#endif
#ifdef MODE_noof
extern ModeHook init_noof;
extern ModeHook draw_noof;
extern ModeHook release_noof;
extern ModeSpecOpt noof_opts;
#endif
#ifdef MODE_nose
extern ModeHook init_nose;
extern ModeHook draw_nose;
extern ModeHook release_nose;
extern ModeHook refresh_nose;
extern ModeSpecOpt nose_opts;
#endif
#ifdef MODE_pacman
extern ModeHook init_pacman;
extern ModeHook draw_pacman;
extern ModeHook release_pacman;
extern ModeHook refresh_pacman;
extern ModeHook change_pacman;
extern ModeSpecOpt pacman_opts;
#endif
#ifdef MODE_penrose
extern ModeHook init_penrose;
extern ModeHook draw_penrose;
extern ModeHook release_penrose;
#if 0
extern ModeHook refresh_penrose; /* Needed */
#endif
extern ModeSpecOpt penrose_opts;
#endif
#ifdef MODE_petal
extern ModeHook init_petal;
extern ModeHook draw_petal;
extern ModeHook release_petal;
extern ModeHook refresh_petal;
extern ModeSpecOpt petal_opts;
#endif
#ifdef MODE_petri
extern ModeHook init_petri;
extern ModeHook draw_petri;
extern ModeHook release_petri;
extern ModeHook refresh_petri;
extern ModeSpecOpt petri_opts;
#endif
#ifdef MODE_pipes
extern ModeHook init_pipes;
extern ModeHook draw_pipes;
extern ModeHook release_pipes;
extern ModeHook refresh_pipes;
extern ModeHook change_pipes;
extern ModeSpecOpt pipes_opts;
#endif
#ifdef MODE_polyominoes
extern ModeHook init_polyominoes;
extern ModeHook draw_polyominoes;
extern ModeHook release_polyominoes;
extern ModeHook refresh_polyominoes;
extern ModeSpecOpt polyominoes_opts;
#endif
#ifdef MODE_puzzle
extern ModeHook init_puzzle;
extern ModeHook draw_puzzle;
extern ModeHook release_puzzle;
#if 0
extern ModeHook refresh_puzzle; /* Needed */
#endif
extern ModeSpecOpt puzzle_opts;
#endif
#ifdef MODE_pyro
extern ModeHook init_pyro;
extern ModeHook draw_pyro;
extern ModeHook release_pyro;
extern ModeHook refresh_pyro;
extern ModeSpecOpt pyro_opts;
#endif
#ifdef MODE_qix
extern ModeHook init_qix;
extern ModeHook draw_qix;
extern ModeHook release_qix;
extern ModeHook refresh_qix;
extern ModeSpecOpt qix_opts;
#endif
#ifdef MODE_roll
extern ModeHook init_roll;
extern ModeHook draw_roll;
extern ModeHook release_roll;
extern ModeHook refresh_roll;
extern ModeSpecOpt roll_opts;
#endif
#ifdef MODE_rotor
extern ModeHook init_rotor;
extern ModeHook draw_rotor;
extern ModeHook release_rotor;
extern ModeHook refresh_rotor;
extern ModeSpecOpt rotor_opts;
#endif
#ifdef MODE_rubik
extern ModeHook init_rubik;
extern ModeHook draw_rubik;
extern ModeHook release_rubik;
extern ModeHook change_rubik;
extern ModeSpecOpt rubik_opts;
#endif
#ifdef MODE_sballs
extern ModeHook init_sballs;
extern ModeHook draw_sballs;
extern ModeHook release_sballs;
extern ModeHook refresh_sballs;
extern ModeHook change_sballs;
extern ModeSpecOpt sballs_opts;
#endif
#ifdef MODE_scooter
extern ModeHook init_scooter;
extern ModeHook draw_scooter;
extern ModeHook release_scooter;
extern ModeHook refresh_scooter;
extern ModeHook change_scooter;
extern ModeSpecOpt scooter_opts;
#endif
#ifdef MODE_shape
extern ModeHook init_shape;
extern ModeHook draw_shape;
extern ModeHook release_shape;
extern ModeHook refresh_shape;
extern ModeSpecOpt shape_opts;
#endif
#ifdef MODE_sierpinski
extern ModeHook init_sierpinski;
extern ModeHook draw_sierpinski;
extern ModeHook release_sierpinski;
extern ModeHook refresh_sierpinski;
extern ModeSpecOpt sierpinski_opts;
#endif
#ifdef MODE_sierpinski3d
extern ModeHook init_gasket;
extern ModeHook draw_gasket;
extern ModeHook release_gasket;
extern ModeSpecOpt gasket_opts;
#endif
#ifdef MODE_skewb
extern ModeHook init_skewb;
extern ModeHook draw_skewb;
extern ModeHook release_skewb;
extern ModeHook change_skewb;
extern ModeSpecOpt skewb_opts;
#endif
#ifdef MODE_slip
extern ModeHook init_slip;
extern ModeHook draw_slip;
extern ModeHook release_slip;
#if 0
extern ModeHook refresh_slip; /* Probably not practical */
#endif
extern ModeSpecOpt slip_opts;
#endif
#ifdef MODE_solitare
extern ModeHook init_solitare;
extern ModeHook draw_solitare;
extern ModeHook release_solitare;
extern ModeHook refresh_solitare;
extern ModeSpecOpt solitare_opts;
#endif
#ifdef MODE_space
extern ModeHook init_space;
extern ModeHook draw_space;
extern ModeHook release_space;
extern ModeHook refresh_space;
extern ModeSpecOpt space_opts;
#endif
#ifdef MODE_sphere
extern ModeHook init_sphere;
extern ModeHook draw_sphere;
extern ModeHook release_sphere;
extern ModeHook refresh_sphere;
extern ModeSpecOpt sphere_opts;
#endif
#ifdef MODE_spiral
extern ModeHook init_spiral;
extern ModeHook draw_spiral;
extern ModeHook release_spiral;
extern ModeHook refresh_spiral;
extern ModeSpecOpt spiral_opts;
#endif
#ifdef MODE_spline
extern ModeHook init_spline;
extern ModeHook draw_spline;
extern ModeHook release_spline;
extern ModeHook refresh_spline;
extern ModeSpecOpt spline_opts;
#endif
#ifdef MODE_sproingies
extern ModeHook init_sproingies;
extern ModeHook draw_sproingies;
extern ModeHook release_sproingies;
extern ModeHook refresh_sproingies;
extern ModeSpecOpt sproingies_opts;
#endif
#ifdef MODE_stairs
extern ModeHook init_stairs;
extern ModeHook draw_stairs;
extern ModeHook release_stairs;
extern ModeHook refresh_stairs;
extern ModeHook change_stairs;
extern ModeSpecOpt stairs_opts;
#endif
#ifdef MODE_star
extern ModeHook init_star;
extern ModeHook draw_star;
extern ModeHook release_star;
extern ModeHook refresh_star;
extern ModeSpecOpt star_opts;
#endif
#ifdef MODE_starfish
extern ModeHook init_starfish;
extern ModeHook draw_starfish;
extern ModeHook release_starfish;
extern ModeSpecOpt starfish_opts;
#endif
#ifdef MODE_strange
extern ModeHook init_strange;
extern ModeHook draw_strange;
extern ModeHook release_strange;
extern ModeSpecOpt strange_opts;
#endif
#ifdef MODE_superquadrics
extern ModeHook init_superquadrics;
extern ModeHook draw_superquadrics;
extern ModeHook release_superquadrics;
extern ModeHook refresh_superquadrics;
extern ModeSpecOpt superquadrics_opts;
#endif
#ifdef MODE_swarm
extern ModeHook init_swarm;
extern ModeHook draw_swarm;
extern ModeHook release_swarm;
extern ModeHook refresh_swarm;
extern ModeSpecOpt swarm_opts;
#endif
#ifdef MODE_swirl
extern ModeHook init_swirl;
extern ModeHook draw_swirl;
extern ModeHook release_swirl;
extern ModeHook refresh_swirl;
extern ModeSpecOpt swirl_opts;
#endif
#ifdef MODE_t3d
extern ModeHook init_t3d;
extern ModeHook draw_t3d;
extern ModeHook release_t3d;
extern ModeHook refresh_t3d;
extern ModeSpecOpt t3d_opts;
#endif
#ifdef MODE_tetris
extern ModeHook init_tetris;
extern ModeHook draw_tetris;
extern ModeHook release_tetris;
extern ModeHook refresh_tetris;
extern ModeHook change_tetris;
extern ModeSpecOpt tetris_opts;
#endif
#ifdef MODE_text3d
extern ModeHook init_text3d;
extern ModeHook draw_text3d;
extern ModeHook release_text3d;
extern ModeHook refresh_text3d;
extern ModeHook change_text3d;
extern ModeSpecOpt text3d_opts;
#endif
#ifdef MODE_text3d2
extern ModeHook init_text3d2;
extern ModeHook draw_text3d2;
extern ModeHook release_text3d2;
extern ModeHook refresh_text3d2;
extern ModeHook change_text3d2;
extern ModeSpecOpt text3d2_opts;
#endif
#ifdef MODE_thornbird
extern ModeHook init_thornbird;
extern ModeHook draw_thornbird;
extern ModeHook release_thornbird;
extern ModeHook refresh_thornbird;
extern ModeHook change_thornbird;
extern ModeSpecOpt thornbird_opts;
#endif
#ifdef MODE_tik_tak
extern ModeHook init_tik_tak;
extern ModeHook draw_tik_tak;
extern ModeHook release_tik_tak;
extern ModeHook refresh_tik_tak;
extern ModeSpecOpt tik_tak_opts;
#endif
#ifdef MODE_toneclock
extern ModeHook init_toneclock;
extern ModeHook draw_toneclock;
extern ModeHook release_toneclock;
extern ModeHook refresh_toneclock;
extern ModeSpecOpt toneclock_opts;
#endif
#ifdef MODE_triangle
extern ModeHook init_triangle;
extern ModeHook draw_triangle;
extern ModeHook release_triangle;
extern ModeHook refresh_triangle;
extern ModeSpecOpt triangle_opts;
#endif
#ifdef MODE_tube
extern ModeHook init_tube;
extern ModeHook draw_tube;
extern ModeHook release_tube;
extern ModeHook refresh_tube;
extern ModeSpecOpt tube_opts;
#endif
#ifdef MODE_turtle
extern ModeHook init_turtle;
extern ModeHook draw_turtle;
extern ModeHook release_turtle;
extern ModeHook refresh_turtle;
extern ModeSpecOpt turtle_opts;
#endif
#ifdef MODE_vines
extern ModeHook init_vines;
extern ModeHook draw_vines;
extern ModeHook release_vines;
extern ModeHook refresh_vines;
extern ModeSpecOpt vines_opts;
#endif
#ifdef MODE_voters
extern ModeHook init_voters;
extern ModeHook draw_voters;
extern ModeHook release_voters;
extern ModeHook refresh_voters;
extern ModeSpecOpt voters_opts;
#endif
#ifdef MODE_wator
extern ModeHook init_wator;
extern ModeHook draw_wator;
extern ModeHook release_wator;
extern ModeHook refresh_wator;
extern ModeSpecOpt wator_opts;
#endif
#ifdef MODE_wire
extern ModeHook init_wire;
extern ModeHook draw_wire;
extern ModeHook release_wire;
extern ModeHook refresh_wire;
extern ModeSpecOpt wire_opts;
#endif
#ifdef MODE_world
extern ModeHook init_world;
extern ModeHook draw_world;
extern ModeHook release_world;
extern ModeHook refresh_world;
extern ModeSpecOpt world_opts;
#endif
#ifdef MODE_worm
extern ModeHook init_worm;
extern ModeHook draw_worm;
extern ModeHook release_worm;
extern ModeHook refresh_worm;
extern ModeSpecOpt worm_opts;
#endif
#ifdef MODE_xcl
extern ModeHook init_xcl;
extern ModeHook draw_xcl;
extern ModeHook release_xcl;
extern ModeSpecOpt xcl_opts;
#endif
#ifdef MODE_xjack
extern ModeHook init_xjack;
extern ModeHook draw_xjack;
extern ModeHook release_xjack;
extern ModeSpecOpt xjack_opts;
#endif
extern ModeHook init_blank;
extern ModeHook draw_blank;
extern ModeHook release_blank;
extern ModeHook refresh_blank;
extern ModeSpecOpt blank_opts;
#ifdef MODE_run
extern ModeHook init_run;
extern ModeHook draw_run;
extern ModeHook release_run;
extern ModeHook refresh_run;
extern ModeSpecOpt run_opts;
#endif
#ifdef MODE_bomb
extern ModeHook init_bomb;
extern ModeHook draw_bomb;
extern ModeHook release_bomb;
extern ModeHook refresh_bomb;
extern ModeHook change_bomb;
extern ModeSpecOpt bomb_opts;
#endif
extern ModeHook init_random;
extern ModeHook draw_random;
extern ModeHook release_random;
extern ModeHook refresh_random;
extern ModeHook change_random;
extern ModeSpecOpt random_opts;
extern LockStruct LockProcs[];
#else /* #ifndef USE_MODULES */
extern void LoadModules(char *);
extern void UnloadModules();
extern LockStruct *LockProcs;
extern void **LoadedModules; /* save handles on loaded modules for closing */
#endif
extern int numprocs;
#ifdef __cplusplus
}
#endif
#endif /* STANDALONE */
/* -------------------------------------------------------------------- */
#endif /* __XLOCK_MODE_H__ */