X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Flaser.c;h=8ee02193e4043a1770af2b1579f8b05a1ab8873e;hb=39809ded547bdbb08207d3e514950425215b4410;hp=2b0622dd2813bc8c7fd791b7ebe07df7a3784d86;hpb=a94197e76a5dea5cb60542840809d6c20d0abbf3;p=xscreensaver diff --git a/hacks/laser.c b/hacks/laser.c index 2b0622dd..8ee02193 100644 --- a/hacks/laser.c +++ b/hacks/laser.c @@ -1,9 +1,8 @@ /* -*- Mode: C; tab-width: 4 -*- */ /* laser --- spinning lasers */ -#if !defined( lint ) && !defined( SABER ) +#if 0 static const char sccsid[] = "@(#)laser.c 5.00 2000/11/01 xlockmore"; - #endif /*- @@ -28,30 +27,31 @@ static const char sccsid[] = "@(#)laser.c 5.00 2000/11/01 xlockmore"; */ #ifdef STANDALONE -#define MODE_laser -#define PROGCLASS "Laser" -#define HACK_INIT init_laser -#define HACK_DRAW draw_laser -#define laser_opts xlockmore_opts -#define DEFAULTS "*delay: 40000 \n" \ - "*count: 10 \n" \ - "*cycles: 200 \n" \ - "*ncolors: 64 \n" -#define BRIGHT_COLORS -#include "xlockmore.h" /* in xscreensaver distribution */ +# define MODE_laser +# define DEFAULTS "*delay: 40000 \n" \ + "*count: 10 \n" \ + "*cycles: 200 \n" \ + "*ncolors: 64 \n" \ + "*fpsSolid: true \n" \ + +# define BRIGHT_COLORS +# define release_laser 0 +# define reshape_laser 0 +# define laser_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_laser -ModeSpecOpt laser_opts = +ENTRYPOINT ModeSpecOpt laser_opts = {0, (XrmOptionDescRec *) NULL, 0, (argtype *) NULL, (OptionStruct *) NULL}; #ifdef USE_MODULES ModStruct laser_description = -{"laser", "init_laser", "draw_laser", "release_laser", - "refresh_laser", "init_laser", (char *) NULL, &laser_opts, +{"laser", "init_laser", "draw_laser", (char *) NULL, + "refresh_laser", "init_laser", "free_laser", &laser_opts, 20000, -10, 200, 1, 64, 1.0, "", "Shows spinning lasers", 0, NULL}; @@ -107,9 +107,12 @@ typedef struct { static lasersstruct *lasers = (lasersstruct *) NULL; -static void -free_laser(Display *display, lasersstruct *lp) +ENTRYPOINT void +free_laser(ModeInfo * mi) { + Display *display = MI_DISPLAY(mi); + lasersstruct *lp = &lasers[MI_SCREEN(mi)]; + if (lp->laser != NULL) { (void) free((void *) lp->laser); lp->laser = (laserstruct *) NULL; @@ -120,18 +123,14 @@ free_laser(Display *display, lasersstruct *lp) } } -void +ENTRYPOINT void init_laser(ModeInfo * mi) { Display *display = MI_DISPLAY(mi); int i, c = 0; lasersstruct *lp; - if (lasers == NULL) { - if ((lasers = (lasersstruct *) calloc(MI_NUM_SCREENS(mi), - sizeof (lasersstruct))) == NULL) - return; - } + MI_INIT (mi, lasers); lp = &lasers[MI_SCREEN(mi)]; lp->width = MI_WIDTH(mi); @@ -152,7 +151,7 @@ init_laser(ModeInfo * mi) if (lp->laser == NULL) { if ((lp->laser = (laserstruct *) malloc(lp->ln * sizeof (laserstruct))) == NULL) { - free_laser(display, lp); + free_laser(mi); return; } } @@ -164,9 +163,12 @@ init_laser(ModeInfo * mi) lp->gcv_black.foreground = MI_BLACK_PIXEL(mi); if ((lp->stippledGC = XCreateGC(display, MI_WINDOW(mi), GCForeground | GCBackground, &gcv)) == None) { - free_laser(display, lp); + free_laser(mi); return; } +# ifdef HAVE_JWXYZ + jwxyz_XSetAntiAliasing (MI_DISPLAY(mi), lp->stippledGC, False); +# endif } MI_CLEARWINDOW(mi); @@ -320,7 +322,7 @@ draw_laser_once(ModeInfo * mi) lp->so = (lp->so + 1) % lp->lw; } -void +ENTRYPOINT void draw_laser(ModeInfo * mi) { int i; @@ -340,23 +342,14 @@ draw_laser(ModeInfo * mi) init_laser(mi); } -void -release_laser(ModeInfo * mi) -{ - if (lasers != NULL) { - int screen; - - for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) - free_laser(MI_DISPLAY(mi), &lasers[screen]); - (void) free((void *) lasers); - lasers = (lasersstruct *) NULL; - } -} - -void +#ifndef STANDALONE +ENTRYPOINT void refresh_laser(ModeInfo * mi) { MI_CLEARWINDOW(mi); } +#endif + +XSCREENSAVER_MODULE ("Laser", laser) #endif /* MODE_laser */