/* -*- Mode: C; tab-width: 4 -*- */
/* lightning --- fractal lightning bolds */
-#if !defined( lint ) && !defined( SABER )
+#if 0
static const char sccsid[] = "@(#)lightning.c 5.00 2000/11/01 xlockmore";
-
#endif
/*-
*/
#ifdef STANDALONE
-#define MODE_lightning
-#define PROGCLASS "Lightning"
-#define HACK_INIT init_lightning
-#define HACK_DRAW draw_lightning
-#define lightning_opts xlockmore_opts
-#define DEFAULTS "*delay: 10000 \n"
-#define BRIGHT_COLORS
-#include "xlockmore.h" /* in xscreensaver distribution */
+# define MODE_lightning
+# define DEFAULTS "*delay: 10000 \n" \
+ "*ncolors: 64 \n"
+
+# define BRIGHT_COLORS
+# define free_lightning 0
+# define release_lightning 0
+# define reshape_lightning 0
+# define lightning_handle_event 0
+# include "xlockmore.h" /* in xscreensaver distribution */
#else /* STANDALONE */
-#include "xlock.h" /* in xlockmore distribution */
+# include "xlock.h" /* in xlockmore distribution */
#endif /* STANDALONE */
#ifdef MODE_lightning
-ModeSpecOpt lightning_opts =
+ENTRYPOINT ModeSpecOpt lightning_opts =
{0, (XrmOptionDescRec *) NULL, 0, (argtype *) NULL, (OptionStruct *) NULL};
#ifdef USE_MODULES
ModStruct lightning_description =
-{"lightning", "init_lightning", "draw_lightning", "release_lightning",
+{"lightning", "init_lightning", "draw_lightning", (char *) NULL,
"refresh_lightning", "init_lightning", (char *) NULL, &lightning_opts,
10000, 1, 1, 1, 64, 0.6, "",
"Shows Keith's fractal lightning bolts", 0, NULL};
/*------------------------------------------------------------------------*/
-void
-init_lightning(ModeInfo * mi)
+ENTRYPOINT void
+init_lightning (ModeInfo * mi)
{
Storm *st;
- if (Helga == NULL) {
- if ((Helga = (Storm *) calloc(MI_NUM_SCREENS(mi),
- sizeof (Storm))) == NULL)
- return;
- }
+ MI_INIT (mi, Helga);
st = &Helga[MI_SCREEN(mi)];
st->scr_width = MI_WIDTH(mi);
/*------------------------------------------------------------------------*/
-void
-draw_lightning(ModeInfo * mi)
+ENTRYPOINT void
+draw_lightning (ModeInfo * mi)
{
int i;
Storm *st;
MI_IS_DRAWN(mi) = True;
switch (st->stage) {
case 0:
- MI_IS_DRAWN(mi) = False;
- MI_CLEARWINDOW(mi);
- MI_IS_DRAWN(mi) = True;
+ XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
st->color = NRAND(MI_NPIXELS(mi));
st->draw_time = 0;
}
break;
case 3:
- MI_IS_DRAWN(mi) = False;
- MI_CLEARWINDOW(mi);
- MI_IS_DRAWN(mi) = True;
+ XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi));
if (storm_active(st))
st->stage = 1;
}
}
-void
-release_lightning(ModeInfo * mi)
-{
- if (Helga != NULL) {
- (void) free((void *) Helga);
- Helga = (Storm *) NULL;
- }
-}
-
-void
+#ifndef STANDALONE
+ENTRYPOINT void
refresh_lightning(ModeInfo * mi)
{
/* Do nothing, it will refresh by itself */
}
+#endif
+
+XSCREENSAVER_MODULE ("Lightning", lightning)
+
#endif /* MODE_lightning */