X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fglx%2Fgears.c;h=bd055982f237508dd386f6ac326d9af44fcfe1f9;hb=0d6b320def9180cf907ceaed56b23a972a11b757;hp=b9a8871ecdfff670609b2c1bba0a59a3a2ea82a9;hpb=ffd8c0873576a9e3065696a624dce6b766b77062;p=xscreensaver diff --git a/hacks/glx/gears.c b/hacks/glx/gears.c index b9a8871e..bd055982 100644 --- a/hacks/glx/gears.c +++ b/hacks/glx/gears.c @@ -45,7 +45,6 @@ static const char sccsid[] = "@(#)gears.c 4.07 97/11/24 xlockmore"; # define DEFAULTS "*count: 1 \n" \ "*cycles: 2 \n" \ "*delay: 20000 \n" \ - "*planetary: False \n" \ "*showFPS: False \n" \ "*wireframe: False \n" # include "xlockmore.h" /* from the xscreensaver distribution */ @@ -62,16 +61,21 @@ static const char sccsid[] = "@(#)gears.c 4.07 97/11/24 xlockmore"; #define countof(x) (sizeof((x))/sizeof((*x))) #define DEF_PLANETARY "False" +#define DEF_SPIN "True" static int planetary; +static int spin; static XrmOptionDescRec opts[] = { {"-planetary", ".gears.planetary", XrmoptionNoArg, "true" }, {"+planetary", ".gears.planetary", XrmoptionNoArg, "false" }, + {"-spin", ".gears.spin", XrmoptionNoArg, "true" }, + {"+spin", ".gears.spin", XrmoptionNoArg, "false" }, }; static argtype vars[] = { {&planetary, "planetary", "Planetary", DEF_PLANETARY, t_Bool}, + {&spin, "spin", "Spin", DEF_SPIN, t_Bool}, }; ModeSpecOpt gears_opts = {countof(opts), opts, countof(vars), vars, NULL}; @@ -536,13 +540,14 @@ draw(ModeInfo * mi) gltrackball_rotate (gp->trackball); - { - double x, y, z; - get_rotation (gp->rot, &x, &y, &z, !gp->button_down_p); - glRotatef (x * 360, 1.0, 0.0, 0.0); - glRotatef (y * 360, 0.0, 1.0, 0.0); - glRotatef (z * 360, 0.0, 0.0, 1.0); - } + if (spin) + { + double x, y, z; + get_rotation (gp->rot, &x, &y, &z, !gp->button_down_p); + glRotatef (x * 360, 1.0, 0.0, 0.0); + glRotatef (y * 360, 0.0, 1.0, 0.0); + glRotatef (z * 360, 0.0, 0.0, 1.0); + } if (!planetary) { glPushMatrix(); @@ -919,7 +924,7 @@ gears_handle_event (ModeInfo *mi, XEvent *event) gearsstruct *gp = &gears[MI_SCREEN(mi)]; if (event->xany.type == ButtonPress && - event->xbutton.button & Button1) + event->xbutton.button == Button1) { gp->button_down_p = True; gltrackball_start (gp->trackball, @@ -928,11 +933,19 @@ gears_handle_event (ModeInfo *mi, XEvent *event) return True; } else if (event->xany.type == ButtonRelease && - event->xbutton.button & Button1) + event->xbutton.button == Button1) { gp->button_down_p = False; return True; } + else if (event->xany.type == ButtonPress && + (event->xbutton.button == Button4 || + event->xbutton.button == Button5)) + { + gltrackball_mousewheel (gp->trackball, event->xbutton.button, 10, + !!event->xbutton.state); + return True; + } else if (event->xany.type == MotionNotify && gp->button_down_p) {