X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fgreynetic.c;h=586fdffb04a132753eef19814559d84c2987a034;hb=aa75c7476aeaa84cf3abc192b376a8b03c325213;hp=47f91a9f85b73c97217c571575b9039f90daf5f4;hpb=49f5b54f312fe4ac2e9bc47581a72451bd0e8439;p=xscreensaver diff --git a/hacks/greynetic.c b/hacks/greynetic.c index 47f91a9f..586fdffb 100644 --- a/hacks/greynetic.c +++ b/hacks/greynetic.c @@ -1,5 +1,4 @@ -/* xscreensaver, Copyright (c) 1992, 1995, 1996, 1997, 1998, 2003, 2006 - * Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2008 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -12,7 +11,7 @@ #include "screenhack.h" -#ifndef HAVE_COCOA +#ifndef HAVE_JWXYZ # define DO_STIPPLE #endif @@ -100,6 +99,7 @@ struct state { unsigned long fg, bg, pixels [512]; int npixels; int xlim, ylim; + Bool grey_p; Colormap cmap; }; @@ -121,6 +121,7 @@ greynetic_init (Display *dpy, Window window) st->ylim = xgwa.height; st->cmap = xgwa.colormap; st->npixels = 0; + st->grey_p = get_boolean_resource(st->dpy, "grey", "Boolean"); gcv.foreground= st->fg= get_pixel_resource(st->dpy, st->cmap, "foreground","Foreground"); gcv.background= st->bg= get_pixel_resource(st->dpy, st->cmap, "background","Background"); @@ -129,9 +130,9 @@ greynetic_init (Display *dpy, Window window) # ifndef DO_STIPPLE st->gc = XCreateGC (st->dpy, st->window, GCForeground, &gcv); -# ifdef HAVE_COCOA /* allow non-opaque alpha components in pixel values */ +# ifdef HAVE_JWXYZ /* allow non-opaque alpha components in pixel values */ jwxyz_XSetAlphaAllowed (st->dpy, st->gc, True); -# endif /* HAVE_COCOA */ +# endif /* HAVE_JWXYZ */ # else /* DO_STIPPLE */ gcv.fill_style= FillOpaqueStippled; st->gc = XCreateGC (st->dpy, st->window, GCForeground|GCBackground|GCFillStyle, &gcv); @@ -199,6 +200,12 @@ greynetic_draw (Display *dpy, Window window, void *closure) bgc.blue = random (); # endif /* DO_STIPPLE */ + if (st->grey_p) + { + fgc.green = fgc.blue = fgc.red; + bgc.green = bgc.blue = bgc.red; + } + if (! XAllocColor (st->dpy, st->cmap, &fgc)) goto REUSE; st->pixels [st->npixels++] = fgc.pixel; @@ -223,16 +230,16 @@ greynetic_draw (Display *dpy, Window window, void *closure) DONE: ; -# ifdef HAVE_COCOA +# ifdef HAVE_JWXYZ { /* give a non-opaque alpha to the color */ unsigned long pixel = gcv.foreground; - unsigned long amask = BlackPixelOfScreen (0); + unsigned long amask = BlackPixel (dpy,0); unsigned long a = (random() & amask); pixel = (pixel & (~amask)) | a; gcv.foreground = pixel; } -# endif /* !HAVE_COCOA */ +# endif /* !HAVE_JWXYZ */ } # ifndef DO_STIPPLE XChangeGC (st->dpy, st->gc, GCForeground, &gcv); @@ -247,12 +254,18 @@ greynetic_draw (Display *dpy, Window window, void *closure) static const char *greynetic_defaults [] = { ".background: black", ".foreground: white", + "*fpsSolid: true", "*delay: 10000", + "*grey: false", +#ifdef HAVE_MOBILE + "*ignoreRotation: True", +#endif 0 }; static XrmOptionDescRec greynetic_options [] = { { "-delay", ".delay", XrmoptionSepArg, 0 }, + { "-grey", ".grey", XrmoptionNoArg, "True" }, { 0, 0, 0, 0 } }; @@ -274,6 +287,9 @@ greynetic_event (Display *dpy, Window window, void *closure, XEvent *event) static void greynetic_free (Display *dpy, Window window, void *closure) { + struct state *st = (struct state *) closure; + XFreeGC (st->dpy, st->gc); + free (st); } XSCREENSAVER_MODULE ("Greynetic", greynetic)