X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fglx%2Fklein.c;h=e37767e89c0205eafbf28a5604ba80455e99f86e;hp=17860043509f7de44daec1c39943f60a1cb651aa;hb=6b1c86cf395f59389e4ece4ea8f4bea2c332745b;hpb=447db08c956099b3b183886729108bf5b364c4b8 diff --git a/hacks/glx/klein.c b/hacks/glx/klein.c index 17860043..e37767e8 100644 --- a/hacks/glx/klein.c +++ b/hacks/glx/klein.c @@ -11,24 +11,10 @@ */ #ifdef STANDALONE -# define PROGCLASS "Klein" -# define HACK_INIT init_klein -# define HACK_DRAW draw_klein -# define HACK_RESHAPE reshape_klein -# define HACK_HANDLE_EVENT klein_handle_event -# define EVENT_MASK PointerMotionMask -# define klein_opts xlockmore_opts - - -#define DEF_SPIN "True" -#define DEF_WANDER "False" -#define DEF_RANDOM "False" -#define DEF_SPEED "150" - -# define DEFAULTS "*delay: 20000 \n" \ - "*showFPS: False \n" \ - "*wireframe: False \n" \ +# define DEFAULTS "*delay: 20000 \n" \ + "*showFPS: False \n" +# define refresh_klein 0 # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ # include "xlock.h" /* from the xlockmore distribution */ @@ -36,7 +22,11 @@ #ifdef USE_GL -#include +#define DEF_SPIN "True" +#define DEF_WANDER "False" +#define DEF_RANDOM "True" +#define DEF_SPEED "150" + #include "rotator.h" #include "gltrackball.h" @@ -95,7 +85,7 @@ static argtype vars[] = { }; -ModeSpecOpt klein_opts = {countof(opts), opts, countof(vars), vars, NULL}; +ENTRYPOINT ModeSpecOpt klein_opts = {countof(opts), opts, countof(vars), vars, NULL}; @@ -118,6 +108,8 @@ typedef struct { float du, dv; float a, b, c; + float draw_step; + } kleinstruct; static kleinstruct *klein = NULL; @@ -127,7 +119,6 @@ static void draw(ModeInfo *mi) { kleinstruct *kp = &klein[MI_SCREEN(mi)]; - static float step = 0.0; double u, v; float coord[3]; @@ -265,13 +256,13 @@ draw(ModeInfo *mi) glPopMatrix(); - kp->a = sin(step+=0.01); - kp->b = cos(step+=0.01); + kp->a = sin(kp->draw_step+=0.01); + kp->b = cos(kp->draw_step+=0.01); } /* new window size or exposure */ -void +ENTRYPOINT void reshape_klein(ModeInfo *mi, int width, int height) { GLfloat h = (GLfloat) height / (GLfloat) width; @@ -291,7 +282,7 @@ reshape_klein(ModeInfo *mi, int width, int height) } -Bool +ENTRYPOINT Bool klein_handle_event (ModeInfo *mi, XEvent *event) { kleinstruct *kp = &klein[MI_SCREEN(mi)]; @@ -305,7 +296,9 @@ klein_handle_event (ModeInfo *mi, XEvent *event) return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || - event->xbutton.button == Button5)) { + event->xbutton.button == Button5 || + event->xbutton.button == Button6 || + event->xbutton.button == Button7)) { gltrackball_mousewheel (kp->trackball, event->xbutton.button, 10, !!event->xbutton.state); return True; @@ -318,7 +311,7 @@ klein_handle_event (ModeInfo *mi, XEvent *event) } -void +ENTRYPOINT void init_klein(ModeInfo *mi) { int screen = MI_SCREEN(mi); @@ -375,7 +368,7 @@ init_klein(ModeInfo *mi) } } -void +ENTRYPOINT void draw_klein(ModeInfo * mi) { kleinstruct *kp = &klein[MI_SCREEN(mi)]; @@ -393,7 +386,7 @@ draw_klein(ModeInfo * mi) glXSwapBuffers(display, window); } -void +ENTRYPOINT void release_klein(ModeInfo * mi) { if (klein != NULL) { @@ -414,6 +407,8 @@ release_klein(ModeInfo * mi) } +XSCREENSAVER_MODULE ("Klein", klein) + /*********************************************************/ #endif