X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fglx%2Fsproingiewrap.c;h=d00197d77c4663d01bb3b658e10ffb7a327ef2ce;hb=4cecfc89e5e889c7232693897c06168fb378bd5c;hp=dff236b08cef160a6b87e0718d133d429b0e5246;hpb=df7adbee81405e2849728a24b498ad2117784b1f;p=xscreensaver diff --git a/hacks/glx/sproingiewrap.c b/hacks/glx/sproingiewrap.c index dff236b0..d00197d7 100644 --- a/hacks/glx/sproingiewrap.c +++ b/hacks/glx/sproingiewrap.c @@ -22,10 +22,15 @@ static const char sccsid[] = "@(#)sproingiewrap.c 4.07 97/11/24 xlockmore"; * other special, indirect and consequential damages. * * Programming: Ed Mackey, http://www.netaxs.com/~emackey/ + * Gordon Wrigley, gdw33@student.canterbury.ac.nz * Sproingie 3D objects modeled by: Al Mackey, al@iam.com * (using MetaNURBS in NewTek's Lightwave 3D v5). * * Revision History: + * 13-Dec-02: Changed triangle normals into vertex normals to give a smooth + apperance and moved the sproingies from Display Lists to + Vertex Arrays, still need to do this for the TopsSides. + (gordon) * 26-Apr-97: Added glPointSize() calls around explosions, plus other fixes. * 28-Mar-97: Added size support. * 22-Mar-97: Updated to use glX interface instead of xmesa one. @@ -57,11 +62,14 @@ static const char sccsid[] = "@(#)sproingiewrap.c 4.07 97/11/24 xlockmore"; # define PROGCLASS "Sproingies" # define HACK_INIT init_sproingies # define HACK_DRAW draw_sproingies +# define HACK_RESHAPE reshape_sproingies # define sproingies_opts xlockmore_opts -# define DEFAULTS "*delay: 100 \n" \ +# define DEFAULTS "*delay: 25000 \n" \ "*count: 5 \n" \ "*cycles: 0 \n" \ "*size: 0 \n" \ + "*showFPS: False \n" \ + "*fpsTop: True \n" \ "*wireframe: False \n" # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ @@ -88,13 +96,9 @@ ModStruct sproingies_description = #include void NextSproingie(int screen); -void NextSproingieDisplay(int screen); -void DisplaySproingies(int screen); - -#if 0 +void NextSproingieDisplay(int screen,int pause); +void DisplaySproingies(int screen,int pause); void ReshapeSproingies(int w, int h); - -#endif void CleanupSproingies(int screen); void InitSproingies(int wfmode, int grnd, int mspr, int screen, int numscreens, int mono); @@ -114,9 +118,13 @@ static sproingiesstruct *sproingies = NULL; static Display *swap_display; static Window swap_window; +static ModeInfo *global_mi_kludge; + void SproingieSwap(void) { + ModeInfo *mi = global_mi_kludge; + if (mi->fps_p) do_fps (mi); glFinish(); glXSwapBuffers(swap_display, swap_window); } @@ -136,6 +144,8 @@ init_sproingies(ModeInfo * mi) sproingiesstruct *sp; int wfmode = 0, grnd, mspr, w, h; + global_mi_kludge = mi; + if (sproingies == NULL) { if ((sproingies = (sproingiesstruct *) calloc(MI_NUM_SCREENS(mi), sizeof (sproingiesstruct))) == NULL) @@ -181,7 +191,7 @@ init_sproingies(ModeInfo * mi) swap_display = display; swap_window = window; - DisplaySproingies(MI_SCREEN(mi)); + DisplaySproingies(MI_SCREEN(mi),mi->pause); } else { MI_CLEARWINDOW(mi); } @@ -204,7 +214,7 @@ draw_sproingies(ModeInfo * mi) swap_display = display; swap_window = window; - NextSproingieDisplay(MI_SCREEN(mi)); /* It will swap. */ + NextSproingieDisplay(MI_SCREEN(mi),mi->pause); /* It will swap. */ } void @@ -217,6 +227,13 @@ refresh_sproingies(ModeInfo * mi) */ } +void +reshape_sproingies (ModeInfo *mi, int w, int h) +{ + ReshapeSproingies(w, h); +} + + void release_sproingies(ModeInfo * mi) {