X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fbouboule.c;h=82218fb45c61903c90e7c8ae255ff92c6efa4e85;hb=aa75c7476aeaa84cf3abc192b376a8b03c325213;hp=4f6e8ecbd2cc4fa839575ad9ee6fe6bab8616ccd;hpb=f3e0240915ed9f9b3a61781f5c7002d587563fe0;p=xscreensaver diff --git a/hacks/bouboule.c b/hacks/bouboule.c index 4f6e8ecb..82218fb4 100644 --- a/hacks/bouboule.c +++ b/hacks/bouboule.c @@ -1,6 +1,6 @@ /* -*- Mode: C; tab-width: 4 -*- Ported from xlockmore 4.03a12 to be a standalone program and thus usable - with xscreensaver by Jamie Zawinski on 15-May-97. + with xscreensaver by Jamie Zawinski on 15-May-97. Original copyright notice from xlock.c: @@ -19,9 +19,8 @@ * other special, indirect and consequential damages. */ -#if !defined( lint ) && !defined( SABER ) +#if 0 static const char sccsid[] = "@(#)bouboule.c 4.00 97/01/01 xlockmore"; - #endif /*- @@ -32,12 +31,12 @@ static const char sccsid[] = "@(#)bouboule.c 4.00 97/01/01 xlockmore"; * I only scale the sort of sphere you see to the whole sky and clip the stars * to the camera screen. * - * Code Copyright 1996 by Jeremie PETIT (petit@eurecom.fr, jpetit@essi.fr) + * Code Copyright 1996 by Jeremie PETIT (jeremie_petit@geocities.com) * * Use: batchcount is the number of stars. * cycles is the maximum size for a star * - * 15-May-97: jwz@netscape.com: turned into a standalone program. + * 15-May-97: jwz@jwz.org: turned into a standalone program. * 04-Sep-96: Added 3d support (Henrik Theiling, theiling@coli-uni-sb.de) * 20-Feb-96: Added tests so that already malloced objects are not * malloced twice, thanks to the report from @@ -75,28 +74,28 @@ static const char sccsid[] = "@(#)bouboule.c 4.00 97/01/01 xlockmore"; */ #ifdef STANDALONE -# define PROGCLASS "Bouboule" -# define HACK_INIT init_bouboule -# define HACK_DRAW draw_bouboule -# define bouboule_opts xlockmore_opts # define DEFAULTS "*count: 100 \n" \ "*size: 15 \n" \ - "*delay: 5000 \n" \ + "*delay: 20000 \n" \ "*ncolors: 64 \n" \ - "*use3d: False \n" \ + "*use3d: True \n" \ "*delta3d: 1.5 \n" \ "*right3d: red \n" \ "*left3d: blue \n" \ "*both3d: magenta \n" \ - "*none3d: black \n" + "*none3d: black \n" \ + "*fpsSolid: true \n" \ + "*ignoreRotation: True \n" # define SMOOTH_COLORS +# define bouboule_handle_event 0 # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ # include "xlock.h" /* from the xlockmore distribution */ +# define ENTRYPOINT /**/ #endif /* !STANDALONE */ -ModeSpecOpt bouboule_opts = { +ENTRYPOINT ModeSpecOpt bouboule_opts = { 0, NULL, 0, NULL, NULL }; #define USEOLDXARCS 1 /* If 1, we use old xarcs list for erasing. @@ -298,8 +297,9 @@ sinfree(SinVariable * point) } } + /***************/ -void +ENTRYPOINT void init_bouboule(ModeInfo * mi) /***************/ @@ -529,7 +529,7 @@ init_bouboule(ModeInfo * mi) } /****************/ -void +ENTRYPOINT void draw_bouboule(ModeInfo * mi) /****************/ @@ -543,6 +543,10 @@ draw_bouboule(ModeInfo * mi) Star *star; XArc *arc = NULL, *arcleft = NULL; +#ifdef HAVE_JWXYZ /* Don't second-guess Quartz's double-buffering */ + XClearWindow(MI_DISPLAY(mi), MI_WINDOW(mi)); +#endif + #if (ADAPT_ERASE == 1) struct timeval tv1; struct timeval tv2; @@ -799,7 +803,7 @@ draw_bouboule(ModeInfo * mi) } } -void +ENTRYPOINT void release_bouboule(ModeInfo * mi) { if (starfield != NULL) { @@ -834,8 +838,28 @@ release_bouboule(ModeInfo * mi) } } -void +ENTRYPOINT void +reshape_bouboule(ModeInfo * mi, int width, int height) +{ + StarField *sp = &starfield[MI_SCREEN(mi)]; + sp->width = width; + sp->height = height; + sininit(&sp->x, + sp->x.alpha, sp->x.step, + ((double) sp->width) / 4.0, + 3.0 * ((double) sp->width) / 4.0, + POSCANRAND); + sininit(&sp->y, + sp->y.alpha, sp->y.step, + ((double) sp->height) / 4.0, + 3.0 * ((double) sp->height) / 4.0, + POSCANRAND); +} + +ENTRYPOINT void refresh_bouboule(ModeInfo * mi) { /* Do nothing, it will refresh by itself */ } + +XSCREENSAVER_MODULE ("Bouboule", bouboule)