X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=hacks%2Ffiberlamp.c;h=e6cd3d8f2c97764be6e171e5948b18e4394508d0;hb=4361b69d3178d7fc98d0388f9a223af6c2651aba;hp=db894da6e40250aae6b90ea2f3774ca79d8b68e8;hpb=49f5b54f312fe4ac2e9bc47581a72451bd0e8439;p=xscreensaver diff --git a/hacks/fiberlamp.c b/hacks/fiberlamp.c index db894da6..e6cd3d8f 100644 --- a/hacks/fiberlamp.c +++ b/hacks/fiberlamp.c @@ -1,7 +1,7 @@ /* -*- Mode: C; tab-width: 4 -*- */ /* fiberlamp --- A Fiber Optic Lamp */ -#if !defined( lint ) && !defined( SABER ) +#if 0 static const char sccsid[] = "@(#)fiberlamp.c 5.00 2000/11/01 xlockmore"; #endif @@ -34,8 +34,11 @@ static const char sccsid[] = "@(#)fiberlamp.c 5.00 2000/11/01 xlockmore"; #define DEFAULTS "*delay: 10000 \n" \ "*count: 500 \n" \ "*cycles: 10000 \n" \ - "*ncolors: 64 \n" + "*ncolors: 64 \n" \ + "*fpsTop: true \n" \ + # define UNIFORM_COLORS +# define release_fiberlamp 0 # define fiberlamp_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ #else /* STANDALONE */ @@ -49,7 +52,7 @@ ENTRYPOINT ModeSpecOpt fiberlamp_opts = #ifdef USE_MODULES ModStruct fiberlamp_description = -{"fiberlamp", "init_fiberlamp", "draw_fiberlamp", "release_fiberlamp", +{"fiberlamp", "init_fiberlamp", "draw_fiberlamp", (char *) NULL, "draw_fiberlamp", "change_fiberlamp", (char *) NULL, &fiberlamp_opts, 1000, 500, 10000, 0, 64, 1.0, "", "Shows a Fiber Optic Lamp", 0, NULL}; @@ -57,7 +60,7 @@ ModStruct fiberlamp_description = #define SPREAD (30.0) /* Angular spread at the base */ #define SCALE (MI_WIDTH(mi)/2) /* Screen size */ -#define NODES (20) /* Number of nodes in a fiber. Variable with range +#define NODES (20L) /* Number of nodes in a fiber. Variable with range 10 .. 30, if desired. High values have stability problems unless you use small DT */ @@ -93,7 +96,7 @@ typedef struct { int init; double psi; double dpsi; - int count, nfibers; + long count, nfibers; double cx; double rx, ry; /* Coordinates relative to root */ fiberstruct *fiber; @@ -140,8 +143,9 @@ free_fiber(fiberlampstruct *fl) } static void -free_fiberlamp(ModeInfo *mi, fiberlampstruct *fl) +free_fiberlamp(ModeInfo *mi) { + fiberlampstruct *fl = &fiberlamps[MI_SCREEN(mi)]; if (fl->buffer != None && fl->dbufp) { XFreePixmap(MI_DISPLAY(mi), fl->buffer); fl->buffer = None; @@ -154,16 +158,11 @@ init_fiberlamp(ModeInfo * mi) { fiberlampstruct *fl; - if (fiberlamps == NULL) { - if ((fiberlamps = - (fiberlampstruct *) calloc(MI_NUM_SCREENS(mi), - sizeof (fiberlampstruct))) == NULL) - return; - } + MI_INIT (mi, fiberlamps, free_fiberlamp); fl = &fiberlamps[MI_SCREEN(mi)]; /* Create or Resize double buffer */ -#ifdef HAVE_COCOA /* Don't second-guess Quartz's double-buffering */ +#ifdef HAVE_JWXYZ /* Don't second-guess Quartz's double-buffering */ fl->dbufp = False; #else fl->dbufp = True; @@ -176,7 +175,7 @@ init_fiberlamp(ModeInfo * mi) fl->buffer = XCreatePixmap(MI_DISPLAY(mi), MI_WINDOW(mi), MI_WIDTH(mi), MI_HEIGHT(mi), MI_DEPTH(mi)); if (fl->buffer == None) { - free_fiberlamp(mi, fl); + free_fiberlamp(mi); return; } } else { @@ -195,7 +194,7 @@ init_fiberlamp(ModeInfo * mi) /* Allocate fibers */ if((fl->fiber = (fiberstruct*) calloc(fl->nfibers, sizeof (fiberstruct))) == NULL) { - free_fiberlamp(mi, fl); + free_fiberlamp(mi); return; } else { int f; @@ -205,7 +204,7 @@ init_fiberlamp(ModeInfo * mi) (nodestruct*) calloc(NODES, sizeof (nodestruct))) == NULL ||(fs->draw = (XPoint*) calloc(NODES, sizeof (XPoint))) == NULL) { - free_fiberlamp(mi, fl); + free_fiberlamp(mi); return; } } @@ -406,9 +405,9 @@ draw_fiberlamp (ModeInfo * mi) double x = fs->node[1].x - fl->cx + 0.025; double y = fs->node[1].z + 0.02; double angle = atan2(y, x) + fl->psi; - int tipcolor = (int)(MI_NPIXELS(mi)*angle/(2*M_PI)) % MI_NPIXELS(mi); - int fibercolor; - int tiplen; + long tipcolor = (int)(MI_NPIXELS(mi)*angle/(2*M_PI)) % MI_NPIXELS(mi); + long fibercolor; + long tiplen; if (tipcolor < 0) tipcolor += MI_NPIXELS(mi); tipcolor = MI_PIXEL(mi, tipcolor); @@ -447,19 +446,6 @@ draw_fiberlamp (ModeInfo * mi) } } -ENTRYPOINT void -release_fiberlamp(ModeInfo * mi) -{ - if (fiberlamps != NULL) { - int screen; - - for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) - free_fiberlamp(mi, &fiberlamps[screen]); - free(fiberlamps); - fiberlamps = (fiberlampstruct *) NULL; - } -} - ENTRYPOINT void refresh_fiberlamp(ModeInfo * mi) {