/*- * @(#)mode.h 4.00 97/01/01 xlockmore * * mode.h - mode management for xlock, the X Window System lockscreen. * * Copyright (c) 1991 by Patrick J. Naughton. * * See xlock.c for copying information. * * Revision History: * * Changes maintained by David Bagley * 18-Mar-96: Ron Hitchens * Extensive revision to define new data types for * the new mode calling scheme. * 02-Jun-95: Extracted out of resource.c. * */ /*- * Declare external interface routines for supported screen savers. */ /* -------------------------------------------------------------------- */ /* Force inclusion of all modes ! */ #define HAVE_CXX #define HAVE_XPM #define USE_GL #define USE_UNSTABLE #define USE_BOMB #define HAVE_TTF #define HAVE_GLTT #define HAVE_FREETYPE #define HAVE_FTGL typedef struct { int dummy; } ModeSpecOpt; struct LockStruct_s; struct ModeInfo_s; typedef void (ModeHook) (struct ModeInfo_s *); typedef void (HookProc) (struct LockStruct_s *, struct ModeInfo_s *); typedef struct LockStruct_s { char *cmdline_arg; /* mode name */ #if 0 char *init_hook; /* func to init a mode */ char *callback_hook; /* func to run (tick) a mode */ char *release_hook; /* func to shutdown a mode */ char *refresh_hook; /* tells mode to repaint */ char *change_hook; /* user wants mode to change */ char *unused_hook; /* for future expansion */ ModeSpecOpt *msopt; /* this mode's def resources */ #endif int def_delay; /* default delay for mode */ int def_count; int def_cycles; int def_size; int def_ncolors; float def_saturation; char *def_bitmap; char *desc; /* text description of mode */ unsigned int flags; /* state flags for this mode */ void *userdata; /* for use by the mode */ char *define; } LockStruct; LockStruct LockProcs[] = { {"anemone", 50000, 1, 1, 1, 64, 1.0, "", "Shows wiggling tentacles", 0, NULL, NULL}, {"ant", 1000, -3, 40000, -7, 64, 1.0, "", "Shows Langton's and Turk's generalized ants", 0, NULL, NULL}, {"ant3d", 5000, -3, 100000, 1, 64, 1.0, "", "Shows 3D ants", 0, NULL, NULL}, {"apollonian", 1000000, 64, 20, 1, 64, 1.0, "", "Shows Apollonian Circles", 0, NULL, NULL}, #ifdef USE_GL {"atlantis", 25000, 4, 100, 6000, 64, 1.0, "", "Shows moving sharks/whales/dolphin", 0, NULL, "#ifdef USE_GL"}, {"atunnels", 25000, 1, 1, 0, 64, 1.0, "", "Shows an OpenGL advanced tunnel screensaver", 0, NULL, "#ifdef USE_GL"}, #endif {"ball", 10000, 10, 20, -100, 64, 1.0, "", "Shows bouncing balls", 0, NULL, NULL}, {"bat", 100000, -8, 1, 0, 64, 1.0, "", "Shows bouncing flying bats", 0, NULL, NULL}, #ifdef USE_GL {"biof", 10000, 800, 1, 0, 64, 1.0, "", "Shows 3D bioform", 0, NULL, "#ifdef USE_GL"}, #endif {"blot", 200000, 6, 30, 1, 64, 0.3, "", "Shows Rorschach's ink blot test", 0, NULL, NULL}, {"bouboule", 10000, 100, 1, 15, 64, 1.0, "", "Shows Mimi's bouboule of moving stars", 0, NULL, NULL}, {"bounce", 5000, -10, 1, 0, 64, 1.0, "", "Shows bouncing footballs", 0, NULL, NULL}, {"braid", 1000, 15, 100, -7, 64, 1.0, "", "Shows random braids and knots", 0, NULL, NULL}, {"bubble", 100000, 25, 1, 100, 64, 0.6, "", "Shows popping bubbles", 0, NULL, NULL}, #if defined( USE_GL ) && defined( HAVE_CXX ) {"bubble3d", 20000, 1, 2, 1, 64, 1.0, "", "Richard Jones's GL bubbles", 0, NULL, "#if defined( USE_GL ) && defined( HAVE_CXX )"}, #endif {"bug", 75000, 10, 32767, -4, 64, 1.0, "", "Shows Palmiter's bug evolution and garden of Eden", 0, NULL, NULL}, #ifdef USE_GL {"cage", 80000, 1, 1, 1, 64, 1.0, "", "Shows the Impossible Cage, an Escher-like GL scene", 0, NULL, "#ifdef USE_GL"}, #endif {"clock", 100000, -16, 200, -200, 64, 1.0, "", "Shows Packard's clock", 0, NULL, NULL}, {"coral", 60000, -3, 1, 35, 64, 0.6, "", "Shows a coral reef", 0, NULL, NULL}, {"crystal", 60000, -500, 200, -15, 64, 1.0, "", "Shows polygons in 2D plane groups", 0, NULL, NULL}, {"daisy", 100000, 300, 350, 1, 64, 1.0, "", "Shows a meadow of daisies", 0, NULL, NULL}, {"dclock", 10000, 1, 10000, 1, 64, 0.3, "", "Shows a floating digital clock or message", 0, NULL, NULL}, {"decay", 200000, 6, 30, 1, 64, 0.3, "", "Shows a decaying screen", 0, NULL, NULL}, {"deco", 1000000, -30, 2, -10, 64, 0.6, "", "Shows art as ugly as sin", 0, NULL, NULL}, {"demon", 50000, 0, 1000, -7, 64, 1.0, "", "Shows Griffeath's cellular automata", 0, NULL, NULL}, {"dilemma", 200000, -2, 1000, 0, 64, 1.0, "", "Shows Lloyd's Prisoner's Dilemma simulation", 0, NULL, NULL}, {"discrete", 1000, 4096, 2500, 1, 64, 1.0, "", "Shows various discrete maps", 0, NULL, NULL}, {"dragon", 2000000, 1, 16, -24, 64, 1.0, "", "Shows Deventer's Hexagonal Dragons Maze", 0, NULL, NULL}, {"drift", 10000, 30, 1, 1, 64, 1.0, "", "Shows cosmic drifting flame fractals", 0, NULL, NULL}, {"euler2d", 1000, 1024, 3000, 1, 64, 1.0, "", "Shows a simulation of 2D incompressible inviscid fluid", 0, NULL, NULL}, {"eyes", 20000, -8, 5, 1, 64, 1.0, "", "Shows eyes following a bouncing grelb", 0, NULL, NULL}, {"fadeplot", 30000, 10, 1500, 1, 64, 0.6, "", "Shows a fading plot of sine squared", 0, NULL, NULL}, {"fiberlamp", 10000, 500, 10000, 0, 64, 1.0, "", "Shows a Fiber Optic Lamp", 0, NULL, NULL}, #ifdef USE_GL {"fire", 10000, 800, 1, 0, 64, 1.0, "", "Shows a 3D fire-like image", 0, NULL, "#ifdef USE_GL"}, #endif {"flag", 50000, 1, 1000, -7, 64, 1.0, "", "Shows a waving flag image", 0, NULL, NULL}, {"flame", 750000, 20, 10000, 1, 64, 1.0, "", "Shows cosmic flame fractals", 0, NULL, NULL}, {"flow", 1000, 1024, 3000, -10, 64, 1.0, "", "Shows dynamic strange attractors", 0, NULL, NULL}, {"forest", 400000, 100, 200, 1, 64, 1.0, "", "Shows binary trees of a fractal forest", 0, NULL, NULL}, {"fzort", 10000, 1, 1, 1, 64, 1.0, "", "Shows a metalic-looking fzort", 0, NULL, NULL}, {"galaxy", 100, -5, 250, -3, 64, 1.0, "", "Shows crashing spiral galaxies", 0, NULL, NULL}, #ifdef USE_GL {"gears", 50000, 1, 2, 1, 64, 1.0, "", "Shows GL's gears", 0, NULL, "#ifdef USE_GL"}, {"glplanet", 15000, 1, 2, 1, 64, 1.0, "", "Animates texture mapped sphere (planet)", 0, NULL, "#ifdef USE_GL"}, #endif {"goop", 10000, -12, 1, 1, 64, 1.0, "", "Shows goop from a lava lamp", 0, NULL, NULL}, {"grav", 10000, -12, 1, 1, 64, 1.0, "", "Shows orbiting planets", 0, NULL, NULL}, {"helix", 25000, 1, 100, 1, 64, 1.0, "", "Shows string art", 0, NULL, NULL}, {"hop", 10000, 1000, 2500, 1, 64, 1.0, "", "Shows real plane iterated fractals", 0, NULL, NULL}, {"hyper", 100000, -6, 300, 1, 64, 1.0, "", "Shows spinning n-dimensional hypercubes", 0, NULL, NULL}, {"ico", 100000, 0, 400, 0, 64, 1.0, "", "Shows a bouncing polyhedron", 0, NULL, NULL}, {"ifs", 1000, 1, 1, 1, 64, 1.0, "", "Shows a modified iterated function system", 0, NULL, NULL}, {"image", 3000000, -20, 1, 1, 64, 1.0, "", "Shows randomly appearing logos", 0, NULL, NULL}, #if defined( USE_GL ) && defined( HAVE_CXX ) {"invert", 80000, 1, 1, 1, 64, 1.0, "", "Shows a sphere inverted without wrinkles", 0, NULL, "#if defined( USE_GL ) && defined( HAVE_CXX )"}, #endif {"juggle", 10000, 200, 1000, 1, 64, 1.0, "", "Shows a Juggler, juggling", 0, NULL, NULL}, {"julia", 10000, 1000, 20, 1, 64, 1.0, "", "Shows the Julia set", 0, NULL, NULL}, {"kaleid", 80000, 4, 40, -9, 64, 0.6, "", "Shows a kaleidoscope", 0, NULL, NULL}, {"kumppa", 10000, 1, 1, 1, 64, 1.0, "", "Shows kumppa", 0, NULL, NULL}, #ifdef USE_GL {"lament", 10000, 1, 1, 1, 64, 1.0, "", "Shows Lemarchand's Box", 0, NULL, "#ifdef USE_GL"}, #endif {"laser", 20000, -10, 200, 1, 64, 1.0, "", "Shows spinning lasers", 0, NULL, NULL}, {"life", 750000, 40, 140, 0, 64, 1.0, "", "Shows Conway's game of Life", 0, NULL, NULL}, {"life1d", 10000, 1, 10, 0, 64, 1.0, "", "Shows Wolfram's game of 1D Life", 0, NULL, NULL}, {"life3d", 1000000, 35, 85, 1, 64, 1.0, "", "Shows Bays' game of 3D Life", 0, NULL, NULL}, {"lightning", 10000, 1, 1, 1, 64, 0.6, "", "Shows Keith's fractal lightning bolts", 0, NULL, NULL}, {"lisa", 25000, 1, 256, -1, 64, 1.0, "", "Shows animated lisajous loops", 0, NULL, NULL}, {"lissie", 10000, 1, 2000, -200, 64, 0.6, "", "Shows lissajous worms", 0, NULL, NULL}, {"loop", 100000, -5, 1600, -12, 64, 1.0, "", "Shows Langton's self-producing loops", 0, NULL, NULL}, {"lyapunov", 25000, 600, 1, 1, 64, 1.0, "", "Shows lyapunov space", 0, NULL, NULL}, {"mandelbrot", 25000, -8, 20000, 1, 64, 1.0, "", "Shows mandelbrot sets", 0, NULL, NULL}, {"marquee", 100000, 1, 1, 1, 64, 1.0, "", "Shows messages", 0, NULL, NULL}, {"matrix", 100, 1, 1, 1, 64, 1.0, "", "Shows the matrix", 0, NULL, NULL}, {"maze", 1000, 1, 3000, -40, 64, 1.0, "", "Shows a random maze and a depth first search solution", 0, NULL, NULL}, #ifdef USE_GL {"moebius", 30000, 1, 1, 1, 64, 1.0, "", "Shows Moebius Strip II, an Escher-like GL scene with ants", 0, NULL, "#ifdef USE_GL"}, {(char *) "molecule", 50000, 1, 20, 1, 64, 1.0, "", "Draws molecules", 0, NULL, "#ifdef USE_GL"}, {"morph3d", 40000, 0, 1, 1, 64, 1.0, "", "Shows GL morphing polyhedra", 0, NULL, "#ifdef USE_GL"}, #endif {"mountain", 1000, 30, 4000, 1, 64, 1.0, "", "Shows Papo's mountain range", 0, NULL, NULL}, {"munch", 5000, 1, 7, 1, 64, 1.0, "", "Shows munching squares", 0, NULL, NULL}, #ifdef USE_GL {"noof", 1000, 1, 1, 1, 64, 1.0, "", "Shows SGI Diatoms", 0, NULL, "#ifdef USE_GL"}, #endif {"nose", 100000, 1, 1, 1, 64, 1.0, "", "Shows a man with a big nose runs around spewing out messages", 0, NULL, NULL}, {"pacman", 10000, 10, 1, 0, 64, 1.0, "", "Shows Pacman(tm)", 0, NULL, NULL}, {"penrose", 10000, 1, 1, -40, 64, 1.0, "", "Shows Penrose's quasiperiodic tilings", 0, NULL, NULL}, {"petal", 10000, -500, 400, 1, 64, 1.0, "", "Shows various GCD Flowers", 0, NULL, NULL}, {"petri", 10000, 1, 1, 4, 8, 1.0, "", "Shows a mold simulation in a petri dish", 0, NULL, NULL}, #ifdef USE_GL {"pipes", 1000, 2, 5, 500, 64, 1.0, "", "Shows a selfbuilding pipe system", 0, NULL, "#ifdef USE_GL"}, #endif {"polyominoes", 6000, 1, 8192, 1, 64, 1.0, "", "Shows attempts to place polyominoes into a rectangle", 0, NULL, NULL}, {"puzzle", 10000, 250, 1, 1, 64, 1.0, "", "Shows a puzzle being scrambled and then solved", 0, NULL, NULL}, {"pyro", 15000, 100, 1, -3, 64, 1.0, "", "Shows fireworks", 0, NULL, NULL}, {"qix", 30000, -5, 32, 1, 64, 1.0, "", "Shows spinning lines a la Qix(tm)", 0, NULL, NULL}, {"roll", 100000, 25, 1, -64, 64, 0.6, "", "Shows a rolling ball", 0, NULL, NULL}, {"rotor", 100, 4, 100, -6, 64, 0.3, "", "Shows Tom's Roto-Rooter", 0, NULL, NULL}, #ifdef USE_GL {"rubik", 100000, -30, 5, -6, 64, 1.0, "", "Shows an auto-solving Rubik's Cube", 0, NULL, "#ifdef USE_GL"}, #endif #ifdef USE_GL {"sballs", 40000, 0, 10, 0, 64, 1.0, "", "Balls spinning like crazy in GL", 0, NULL, "#ifdef USE_GL"}, #endif {"scooter", 20000, 24, 3, 100, 64, 1.0, "", "Shows a journey through space tunnel and stars", 0, NULL, NULL}, {"shape", 10000, 100, 256, 1, 64, 1.0, "", "Shows stippled rectangles, ellipses, and triangles", 0, NULL, NULL}, {"sierpinski", 400000, 2000, 100, 1, 64, 1.0, "", "Shows Sierpinski's triangle", 0, NULL, NULL}, #ifdef USE_GL {"sierpinski3d", 15000, 1, 2, 1, 64, 1.0, "", "Shows GL's Sierpinski gasket", 0, NULL, "#ifdef USE_GL"}, #endif #if defined(USE_GL) && defined( USE_UNSTABLE ) {"skewb", 100000, -30, 5, 1, 64, 1.0, "", "Shows an auto-solving Skewb", 0, NULL, "#if defined(USE_GL) && defined( USE_UNSTABLE )"}, #endif {"slip", 50000, 35, 50, 1, 64, 1.0, "", "Shows slipping blits", 0, NULL, NULL}, #ifdef HAVE_CXX {"solitare", 2000000, 1, 1, 1, 64, 1.0, "", "Shows Klondike's game of solitare", 0, NULL, "#ifdef HAVE_CXX"}, #endif {"space", 10000, 100, 1, 15, 64, 1.0, "", "Shows a journey into deep space", 0, NULL, "#ifdef USE_UNSTABLE"}, {"sphere", 5000, 1, 20, 0, 64, 1.0, "", "Shows a bunch of shaded spheres", 0, NULL, NULL}, {"spiral", 5000, -40, 350, 1, 64, 1.0, "", "Shows a helical locus of points", 0, NULL, NULL}, {"spline", 30000, -6, 2048, 1, 64, 0.3, "", "Shows colorful moving splines", 0, NULL, NULL}, #ifdef USE_GL {"sproingies", 80000, 5, 0, 0, 64, 1.0, "", "Shows Sproingies! Nontoxic. Safe for pets and small children", 0, NULL, "#ifdef USE_GL"}, {"stairs", 200000, 0, 1, 1, 64, 1.0, "", "Shows some Infinite Stairs, an Escher-like scene", 0, NULL, "#ifdef USE_GL"}, #endif {"star", 75000, 100, 1, 100, 64, 0.3, "", "Shows a star field with a twist", 0, NULL, NULL}, {"starfish", 10000, 1, 1, 1, 64, 1.0, "", "Shows starfish", 0, NULL, NULL}, {"strange", 1000, 1, 1, 1, 64, 1.0, "", "Shows strange attractors", 0, NULL, NULL}, #ifdef USE_GL {"superquadrics", 40000, 25, 40, 1, 64, 1.0, "", "Shows 3D mathematical shapes", 0, NULL, "#ifdef USE_GL"}, #endif {"swarm", 15000, -100, 1, -10, 64, 1.0, "", "Shows a swarm of bees following a wasp", 0, NULL, NULL}, {"swirl", 5000, 5, 1, 1, 64, 1.0, "", "Shows animated swirling patterns", 0, NULL, NULL}, {"t3d", 250000, 1000, 60000, 0, 64, 1.0, "", "Shows a Flying Balls Clock Demo", 0, NULL, NULL}, {"tetris", 50000, 1, 1, -100, 64, 1.0, "", "Shows an autoplaying tetris game", 0, NULL, NULL}, #if defined(USE_GL) && defined(HAVE_CXX) && defined( HAVE_TTF ) && defined( HAVE_GLTT ) {"text3d", 100000, 1, 10, 1, 64, 1.0, "", "Shows 3D text", 0, NULL, "#if defined(USE_GL) && defined(HAVE_CXX) && defined( HAVE_TTF ) && defined( HAVE_GLTT )"}, #endif #if defined(USE_GL) && defined(HAVE_CXX) && defined( HAVE_FREETYPE ) && defined( HAVE_FTGL ) {"text3d2", 100000, 1, 10, 1, 64, 1.0, "", "Shows 3D text", 0, NULL, "#if defined(USE_GL) && defined(HAVE_CXX) && defined( HAVE_FREETYPE ) && defined( HAVE_FTGL )"}, #endif {"thornbird", 1000, 800, 16, 1, 64, 1.0, "", "Shows an animated bird in a thorn bush fractal map", 0, NULL, NULL}, {"tik_tak", 60000, -20, 200, -1000, 64, 1.0, "", "Shows rotating polygons", 0, NULL, NULL}, {"toneclock", 60000, -20, 200, -1000, 64, 1.0, "", "Shows Peter Schat's toneclock", 0, NULL, NULL}, {"triangle", 10000, 1, 1, 1, 64, 1.0, "", "Shows a triangle mountain range", 0, NULL, NULL}, {"tube", 25000, -9, 20000, -200, 64, 1.0, "", "Shows an animated tube", 0, NULL, NULL}, {"turtle", 1000000, 1, 20, 1, 64, 1.0, "", "Shows turtle fractals", 0, NULL, NULL}, {"vines", 200000, 0, 1, 1, 64, 1.0, "", "Shows fractals", 0, NULL, NULL}, {"voters", 1000, 0, 327670, 0, 64, 1.0, "", "Shows Dewdney's Voters", 0, NULL, NULL}, {"wator", 750000, 1, 32767, 0, 64, 1.0, "", "Shows Dewdney's Water-Torus planet of fish and sharks", 0, NULL, NULL}, {"wire", 500000, 1000, 150, -8, 64, 1.0, "", "Shows a random circuit with 2 electrons", 0, NULL, NULL}, {"world", 100000, -16, 1, 1, 64, 0.3, "", "Shows spinning Earths", 0, NULL, NULL}, {"worm", 17000, -20, 10, -3, 64, 1.0, "", "Shows wiggly worms", 0, NULL, NULL}, {"xcl", 20000, -3, 1, 1, 64, 1.0, "", "Shows a control line combat model race", 0, NULL, NULL}, {"xjack", 50000, 1, 1, 1, 64, 1.0, "", "Shows Jack having one of those days", 0, NULL, NULL}, /* SPECIAL MODES */ {"blank", 3000000, 1, 1, 1, 64, 1.0, "", "Shows nothing but a black screen", 0, NULL, NULL} };