X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fant.c;h=bc697ca989313c40cfc81c55cdf426554d7147ed;hb=4361b69d3178d7fc98d0388f9a223af6c2651aba;hp=bc18bb29cfe357011a997cff4f0e00fe056c9f9f;hpb=49f5b54f312fe4ac2e9bc47581a72451bd0e8439;p=xscreensaver diff --git a/hacks/ant.c b/hacks/ant.c index bc18bb29..bc697ca9 100644 --- a/hacks/ant.c +++ b/hacks/ant.c @@ -52,17 +52,19 @@ static const char sccsid[] = "@(#)ant.c 5.00 2000/11/01 xlockmore"; Neighbors 6 and neighbors 3 produce the same Turk ants. */ -#ifndef HAVE_COCOA -# define DO_STIPPLE +#ifndef HAVE_JWXYZ +/*# define DO_STIPPLE*/ #endif #ifdef STANDALONE # define MODE_ant -# define DEFAULTS "*delay: 1000 \n" \ +# define DEFAULTS "*delay: 20000 \n" \ "*count: -3 \n" \ "*cycles: 40000 \n" \ "*size: -12 \n" \ - "*ncolors: 64 \n" + "*ncolors: 64 \n" \ + "*fpsSolid: true \n" \ + # define reshape_ant 0 # define ant_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ @@ -173,7 +175,9 @@ typedef struct { antstruct *ants; int init_bits; unsigned char colors[NUMSTIPPLES - 1]; +# ifdef DO_STIPPLE GC stippledGC; +# endif /* DO_STIPPLE */ Pixmap pixmaps[NUMSTIPPLES - 1]; union { XPoint hexagon[7]; /* Need more than 6 for truchet */ @@ -641,24 +645,20 @@ drawcell(ModeInfo * mi, int col, int row, unsigned char color) if (!color) { XSetForeground(MI_DISPLAY(mi), MI_GC(mi), MI_BLACK_PIXEL(mi)); gc = MI_GC(mi); - } else if (MI_NPIXELS(mi) > 2) { - XSetForeground(MI_DISPLAY(mi), MI_GC(mi), - MI_PIXEL(mi, ap->colors[color - 1])); - gc = MI_GC(mi); - } else { +# ifdef DO_STIPPLE + } else if (MI_NPIXELS(mi) <= 2) { XGCValues gcv; - -#ifdef DO_STIPPLE - gcv.stipple = ap->pixmaps[color - 1]; -#endif /* DO_STIPPLE */ gcv.foreground = MI_WHITE_PIXEL(mi); gcv.background = MI_BLACK_PIXEL(mi); + gcv.stipple = ap->pixmaps[color - 1]; XChangeGC(MI_DISPLAY(mi), ap->stippledGC, -#ifdef DO_STIPPLE - GCStipple | -#endif /* DO_STIPPLE */ - GCForeground | GCBackground, &gcv); + GCStipple | GCForeground | GCBackground, &gcv); gc = ap->stippledGC; +# endif /* !DO_STIPPLE */ + } else { + XSetForeground(MI_DISPLAY(mi), MI_GC(mi), + MI_PIXEL(mi, ap->colors[color - 1])); + gc = MI_GC(mi); } fillcell(mi, gc, col, row); } @@ -980,10 +980,12 @@ free_ant(Display *display, antfarmstruct *ap) { int shade; +#ifdef DO_STIPPLE if (ap->stippledGC != None) { XFreeGC(display, ap->stippledGC); ap->stippledGC = None; } +#endif /* DO_STIPPLE */ for (shade = 0; shade < ap->init_bits; shade++) { XFreePixmap(display, ap->pixmaps[shade]); } @@ -1011,11 +1013,7 @@ init_ant(ModeInfo * mi) int col, row, dir; int i; - if (antfarms == NULL) { - if ((antfarms = (antfarmstruct *) calloc(MI_NUM_SCREENS(mi), - sizeof (antfarmstruct))) == NULL) - return; - } + MI_INIT (mi, antfarms, 0); ap = &antfarms[MI_SCREEN(mi)]; ap->redrawing = 0;