diff options
| author | Simon Rettberg | 2024-09-06 14:42:37 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2024-09-06 14:42:37 +0200 |
| commit | badef32037f52f79abc1f1440b786cd71afdf270 (patch) | |
| tree | 412b792d4cab4a7a110db82fcf74fe8a1ac55ec1 /hacks/vines.c | |
| parent | Delete pre-6.00 files (diff) | |
| download | xscreensaver-badef32037f52f79abc1f1440b786cd71afdf270.tar.gz xscreensaver-badef32037f52f79abc1f1440b786cd71afdf270.tar.xz xscreensaver-badef32037f52f79abc1f1440b786cd71afdf270.zip | |
Diffstat (limited to 'hacks/vines.c')
| -rw-r--r-- | hacks/vines.c | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/hacks/vines.c b/hacks/vines.c deleted file mode 100644 index 7f519b4..0000000 --- a/hacks/vines.c +++ /dev/null @@ -1,179 +0,0 @@ -/* -*- Mode: C; tab-width: 4 -*- */ -/* vines --- vine fractals */ - -#if 0 -static const char sccsid[] = "@(#)vines.c 5.00 2000/11/01 xlockmore"; -#endif - -/*- - * Copyright (c) 1997 by Tracy Camp campt@hurrah.com - * - * 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. - * - * If you make a modification I would of course appreciate a copy. - * - * Revision History: - * 01-Nov-2000: Allocation checks - * 11-Jul-1997: David Hansen <dhansen@metapath.com> - * Changed names to vines and modified draw loop - * to honor batchcount so vines can be grown or plotted. - * 10-May-1997: Compatible with xscreensaver - * 21-Mar-1997: David Hansen <dhansen@metapath.com> - * Updated mode to draw complete patterns on every - * iteration instead of growing the vine. Also made - * adjustments to randomization and changed variable - * names to make logic easier to follow. - */ - -/*- - * This was modifed from a 'screen saver' that a friend and I - * wrote on our TI-8x calculators in high school physics one day - * Basically another geometric pattern generator, this ones claim - * to fame is a pseudo-fractal looking vine like pattern that creates - * nifty whorls and loops. - */ - -#ifdef STANDALONE -# define MODE_vines -# define DEFAULTS "*delay: 200000 \n" \ - "*count: 0 \n" \ - "*ncolors: 64 \n" \ - "*fpsSolid: true \n" \ - "*lowrez: True \n" \ - -# include "xlockmore.h" /* in xscreensaver distribution */ -# define free_vines 0 -# define release_vines 0 -# define reshape_vines 0 -# define vines_handle_event 0 -#else /* STANDALONE */ -# include "xlock.h" /* in xlockmore distribution */ -#endif /* STANDALONE */ - -#ifdef MODE_vines - -ENTRYPOINT ModeSpecOpt vines_opts = -{0, (XrmOptionDescRec *) NULL, 0, (argtype *) NULL, (OptionStruct *) NULL}; - -#ifdef USE_MODULES -ModStruct vines_description = -{"vines", "init_vines", "draw_vines", (char *) NULL, - "refresh_vines", "init_vines", (char *) NULL, &vines_opts, - 200000, 0, 1, 1, 64, 1.0, "", - "Shows fractals", 0, NULL}; - -#endif - -typedef struct { - int a; - int x1; - int y1; - int x2; - int y2; - int i; - int length; - int iterations; - int constant; - int ang; - int centerx; - int centery; -} vinestruct; - -static vinestruct *vines = (vinestruct *) NULL; - -#ifndef STANDALONE -ENTRYPOINT void -refresh_vines(ModeInfo * mi) -{ - MI_CLEARWINDOW(mi); -} /* refresh_vines */ -#endif - -ENTRYPOINT void -init_vines(ModeInfo * mi) -{ - vinestruct *fp; - - MI_INIT (mi, vines); - fp = &vines[MI_SCREEN(mi)]; - - fp->i = 0; - fp->length = 0; - fp->iterations = 30 + NRAND(100); - - MI_CLEARWINDOW(mi); -} /* init_vines */ - -ENTRYPOINT void -draw_vines(ModeInfo * mi) -{ - Display *display = MI_DISPLAY(mi); - GC gc = MI_GC(mi); - int count; - vinestruct *fp; - - if (vines == NULL) - return; - fp = &vines[MI_SCREEN(mi)]; - - MI_IS_DRAWN(mi) = True; - if (fp->i >= fp->length) { - if (--(fp->iterations) == 0) { - init_vines(mi); - return; - } - fp->centerx = NRAND(MI_WIDTH(mi)); - fp->centery = NRAND(MI_HEIGHT(mi)); - - fp->ang = 60 + NRAND(720); - fp->length = 100 + NRAND(3000); - fp->constant = fp->length * (10 + NRAND(10)); - - fp->i = 0; - fp->a = 0; - fp->x1 = 0; - fp->y1 = 0; - fp->x2 = 1; - fp->y2 = 0; - - if (MI_NPIXELS(mi) > 2) - XSetForeground(display, gc, MI_PIXEL(mi, NRAND(MI_NPIXELS(mi)))); - else - XSetForeground(display, gc, MI_WHITE_PIXEL(mi)); - } - count = fp->i + MI_COUNT(mi); - if ((count <= fp->i) || (count > fp->length)) - count = fp->length; - - while (fp->i < count) { - XDrawLine(display, MI_WINDOW(mi), gc, - fp->centerx + (fp->x1 / fp->constant), - fp->centery - (fp->y1 / fp->constant), - fp->centerx + (fp->x2 / fp->constant), - fp->centery - (fp->y2 / fp->constant)); - - fp->a += (fp->ang * fp->i); - - fp->x1 = fp->x2; - fp->y1 = fp->y2; - - fp->x2 += (int) (fp->i * (cos((double) fp->a) * 360.0) / (2.0 * M_PI)); - fp->y2 += (int) (fp->i * (sin((double) fp->a) * 360.0) / (2.0 * M_PI)); - fp->i++; - } -} /* draw_vines */ - - -XSCREENSAVER_MODULE ("Vines", vines) - -#endif /* MODE_vines */ |
