ftp://ftp.sunet.se/pub/vendor/sco/skunkware/osr5/x11/savers/xscreensaver/xscreensaver...
[xscreensaver] / hacks / hopalong.c
diff --git a/hacks/hopalong.c b/hacks/hopalong.c
deleted file mode 100644 (file)
index 2a91ece..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-/* xscreensaver, Copyright (c) 1992, 1995 Jamie Zawinski <jwz@netscape.com>
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation.  No representations are made about the suitability of this
- * software for any purpose.  It is provided "as is" without express or 
- * implied warranty.
- */
-
-/* This file was ported from xlock for use in xscreensaver (and standalone)
- * by jwz on 12-Aug-92.  Original copyright reads:
- *
- * hopalong.c - Real Plane Fractals for xlock, the X Window System lockscreen.
- *
- * Copyright (c) 1991 by Patrick J. Naughton.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * This file is provided AS IS with no warranties of any kind.  The author
- * shall have no liability with respect to the infringement of copyrights,
- * trade secrets or any patents by this file or any part thereof.  In no
- * event will the author be liable for any lost revenue or profits or
- * other special, indirect and consequential damages.
- *
- * Comments and additions should be sent to the author:
- *
- *                    naughton@eng.sun.com
- *
- *                    Patrick J. Naughton
- *                    MS 21-14
- *                    Sun Laboritories, Inc.
- *                    2550 Garcia Ave
- *                    Mountain View, CA  94043
- *
- * Revision History:
- * 29-Oct-90: fix bad (int) cast.
- * 29-Jul-90: support for multiple screens.
- * 08-Jul-90: new timing and colors and new algorithm for fractals.
- * 15-Dec-89: Fix for proper skipping of {White,Black}Pixel() in colors.
- * 08-Oct-89: Fixed long standing typo bug in RandomInitHop();
- *           Fixed bug in memory allocation in inithop();
- *           Moved seconds() to an extern.
- *           Got rid of the % mod since .mod is slow on a sparc.
- * 20-Sep-89: Lint.
- * 31-Aug-88: Forked from xlock.c for modularity.
- * 23-Mar-88: Coded HOPALONG routines from Scientific American Sept. 86 p. 14.
- */
-
-#include <math.h>
-#include "screenhack.h"
-
-static GC gc;
-static int batchcount = 1000;
-
-static unsigned int *pixels = 0, fg_pixel, bg_pixel;
-static int npixels;
-static unsigned int delay;
-static int timeout;
-
-typedef struct {
-    int         centerx;
-    int         centery;       /* center of the screen */
-    double      a;
-    double      b;
-    double      c;
-    double      i;
-    double      j;             /* hopalong parameters */
-    int         inc;
-    int         pix;
-    long        startTime;
-}           hopstruct;
-
-static hopstruct hop;
-static XPoint *pointBuffer = 0;        /* pointer for XDrawPoints */
-
-static void
-inithop(dsp,win)
-     Display *dsp;
-    Window      win;
-{
-    double      range;
-    XWindowAttributes xgwa;
-    hopstruct  *hp = &hop;
-    XGCValues gcv;
-    Colormap cmap;
-    XGetWindowAttributes (dsp, win, &xgwa);
-    cmap = xgwa.colormap;
-
-    if (! pixels)
-      {
-       XColor color;
-       int i = get_integer_resource ("ncolors", "Integer");
-       int shift;
-       if (i <= 2) i = 2, mono_p = True;
-       shift = 360 / i;
-       pixels = (unsigned int *) calloc (i, sizeof (unsigned int));
-       fg_pixel = get_pixel_resource ("foreground", "Foreground", dsp, cmap);
-       bg_pixel = get_pixel_resource ("background", "Background", dsp, cmap);
-       if (! mono_p)
-         {
-           hsv_to_rgb (random () % 360, 1.0, 1.0, 
-                       &color.red, &color.green, &color.blue);
-           for (npixels = 0; npixels < i; npixels++)
-             {
-               if (! XAllocColor (dsp, cmap, &color))
-                 break;
-               pixels[npixels] = color.pixel;
-               cycle_hue (&color, shift);
-             }
-         }
-       timeout = get_integer_resource ("timeout", "Seconds");
-       if (timeout <= 0) timeout = 30;
-       delay = get_integer_resource ("delay", "Usecs");
-
-       gcv.foreground = fg_pixel;
-       gc = XCreateGC (dsp, win, GCForeground, &gcv);
-      }
-
-    XClearWindow (dsp, win);
-
-    hp->centerx = xgwa.width / 2;
-    hp->centery = xgwa.height / 2;
-    range = sqrt((double) hp->centerx * hp->centerx +
-                (double) hp->centery * hp->centery) /
-       (10.0 + random() % 10);
-
-    hp->pix = 0;
-#define frand0() (((double) random()) / ((unsigned int) (~0)))
-    hp->inc = (int) (frand0() * 200) - 100;
-    hp->a = frand0() * range - range / 2.0;
-    hp->b = frand0() * range - range / 2.0;
-    hp->c = frand0() * range - range / 2.0;
-    if (!(random() % 2))
-       hp->c = 0.0;
-
-    hp->i = hp->j = 0.0;
-
-    if (!pointBuffer)
-       pointBuffer = (XPoint *) malloc(batchcount * sizeof(XPoint));
-
-    XSetForeground(dsp, gc, bg_pixel);
-    XFillRectangle(dsp, win, gc, 0, 0,
-                  hp->centerx * 2, hp->centery * 2);
-    XSetForeground(dsp, gc, fg_pixel);
-    hp->startTime = time ((time_t *) 0);
-}
-
-
-static void
-drawhop(dsp,win)
-     Display *dsp;
-    Window      win;
-{
-    double      oldj;
-    int         k = batchcount;
-    XPoint     *xp = pointBuffer;
-    hopstruct  *hp = &hop;
-
-    hp->inc++;
-    if (! mono_p) {
-       XSetForeground(dsp, gc, pixels[hp->pix]);
-       if (++hp->pix >= npixels)
-           hp->pix = 0;
-    }
-    while (k--) {
-       oldj = hp->j;
-       hp->j = hp->a - hp->i;
-       hp->i = oldj + (hp->i < 0
-                       ? sqrt(fabs(hp->b * (hp->i + hp->inc) - hp->c))
-                       : -sqrt(fabs(hp->b * (hp->i + hp->inc) - hp->c)));
-       xp->x = hp->centerx + (int) (hp->i + hp->j);
-       xp->y = hp->centery - (int) (hp->i - hp->j);
-       xp++;
-    }
-    XDrawPoints(dsp, win, gc,
-               pointBuffer, batchcount, CoordModeOrigin);
-    XSync (dsp, True);
-    if ((time ((time_t *) 0) - hp->startTime) > timeout)
-      {
-       int i;
-       XSetForeground(dsp, gc, bg_pixel);
-       for (i = 0; i < hp->centery; i++)
-         {
-           int y = (random () % (hp->centery << 1));
-           XDrawLine (dsp, win, gc, 0, y, hp->centerx << 1, y);
-           XFlush (dsp);
-           if ((i % 50) == 0)
-             usleep (10000);
-         }
-       XClearWindow (dsp, win);
-       XFlush (dsp);
-       sleep (1);
-       inithop(dsp,win);
-      }
-}
-
-\f
-char *progclass = "Hopalong";
-
-char *defaults [] = {
-  "Hopalong.background:        black",         /* to placate SGI */
-  "Hopalong.foreground:        white",
-  "*count:     1000",
-  "*ncolors:   100",
-  "*timeout:   20",
-  "*delay:     0",
-  0
-};
-
-XrmOptionDescRec options [] = {
-  { "-count",          ".count",       XrmoptionSepArg, 0 },
-  { "-ncolors",                ".ncolors",     XrmoptionSepArg, 0 },
-  { "-timeout",                ".timeout",     XrmoptionSepArg, 0 },
-  { "-delay",          ".delay",       XrmoptionSepArg, 0 },
-};
-int options_size = (sizeof (options) / sizeof (options[0]));
-
-void
-screenhack (dpy, window)
-     Display *dpy;
-     Window window;
-{
-  inithop (dpy, window);
-  while (1)
-    {
-      drawhop (dpy, window);
-      XSync (dpy, True);
-      if (delay) usleep (delay);
-    }
-}