X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fglx%2Fantmaze.c;h=a66c4b5c0b6b3a1741a606beabc5d1d42394566a;hb=aa75c7476aeaa84cf3abc192b376a8b03c325213;hp=426be4311ea811fffd4294dbcfeab5eab0fffa96;hpb=5f9c47ca98dd43d8f59b7c27d3fde6edfde4fe21;p=xscreensaver diff --git a/hacks/glx/antmaze.c b/hacks/glx/antmaze.c index 426be431..a66c4b5c 100644 --- a/hacks/glx/antmaze.c +++ b/hacks/glx/antmaze.c @@ -15,25 +15,39 @@ * tennessy@cs.ubc.ca */ -#if !defined( lint ) && !defined( SABER ) +#if 0 static const char sccsid[] = "@(#)antmaze.c 5.01 2001/03/01 xlockmore"; #endif #ifdef STANDALONE # define MODE_antmaze # define DEFAULTS "*delay: 20000 \n" \ - "*showFPS: False \n" + "*showFPS: False \n" \ + "*fpsSolid: True \n" # define refresh_antmaze 0 # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ # include "xlock.h" /* from the xlockmore distribution */ - #endif /* !STANDALONE */ +#ifdef HAVE_JWXYZ +# include "jwxyz.h" +#else +# include +# include +# include +#endif + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#endif /* HAVE_JWZGLES */ + #ifdef MODE_antmaze +#include "sphere.h" +#include "tube.h" #include "rotator.h" #include "gltrackball.h" @@ -174,6 +188,7 @@ static const GLfloat position1[] = {-1.0, -5.0, 1.0, 1.0}; /* filled sphere */ static Bool mySphere(float radius) { +#if 0 GLUquadricObj *quadObj; if((quadObj = gluNewQuadric()) == 0) @@ -181,7 +196,13 @@ static Bool mySphere(float radius) gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL); gluSphere(quadObj, radius, 16, 16); gluDeleteQuadric(quadObj); - +#else + glPushMatrix(); + glScalef (radius, radius, radius); + glRotatef (90, 1, 0, 0); + unit_sphere (16, 16, False); + glPopMatrix(); +#endif return True; } @@ -204,6 +225,7 @@ static Bool mySphere2(float radius) /* textured sphere */ static Bool mySphereTex(float radius) { +#if 0 GLUquadricObj *quadObj; if((quadObj = gluNewQuadric()) == 0) @@ -213,6 +235,13 @@ static Bool mySphereTex(float radius) gluQuadricNormals(quadObj, GLU_SMOOTH); gluSphere(quadObj, radius, 32, 16); gluDeleteQuadric(quadObj); +#else + glPushMatrix(); + glScalef (radius, radius, radius); + glRotatef (90, 1, 0, 0); + unit_sphere (32, 16, False); + glPopMatrix(); +#endif return True; } @@ -220,6 +249,7 @@ static Bool mySphereTex(float radius) /* filled cone */ static Bool myCone(float radius) { +#if 0 GLUquadricObj *quadObj; if ((quadObj = gluNewQuadric()) == 0) @@ -227,6 +257,12 @@ static Bool myCone(float radius) gluQuadricDrawStyle(quadObj, (GLenum) GLU_FILL); gluCylinder(quadObj, radius, 0, radius * 2, 8, 1); gluDeleteQuadric(quadObj); +#else + cone (0, 0, 0, + 0, 0, radius * 2, + radius, 0, + 8, True, True, False); +#endif return True; } @@ -1268,55 +1304,30 @@ ENTRYPOINT Bool antmaze_handle_event (ModeInfo *mi, XEvent *event) { antmazestruct *mp = &antmaze[MI_SCREEN(mi)]; - switch(event->xany.type) { - case ButtonPress: + if (gltrackball_event_handler (event, mp->trackball, + MI_WIDTH (mi), MI_HEIGHT (mi), + &mp->button_down_p)) + return True; - switch(event->xbutton.button) { + if (event->xany.type == ButtonPress) + { + switch(event->xbutton.button) { - case Button1: - mp->button_down_p = True; - gltrackball_start(mp->trackball, - event->xbutton.x, event->xbutton.y, - MI_WIDTH (mi), MI_HEIGHT (mi)); - break; - - case Button3: - mp->focus = (mp->focus + 1) % ANTCOUNT; - break; + case Button3: + mp->focus = (mp->focus + 1) % ANTCOUNT; + return True; - case Button4: - mp->mag = max(mp->mag-1, 1); - break; - - case Button5: - mp->mag = min(mp->mag+1, MAX_MAGNIFICATION); - break; - } - - break; - - case ButtonRelease: + case Button4: + mp->mag = max(mp->mag-1, 1); + return True; - switch(event->xbutton.button) { - case Button1: - mp->button_down_p = False; - break; + case Button5: + mp->mag = min(mp->mag+1, MAX_MAGNIFICATION); + return True; + } } - break; - - case MotionNotify: - if(mp->button_down_p) - gltrackball_track(mp->trackball, - event->xmotion.x, event->xmotion.y, - MI_WIDTH (mi), MI_HEIGHT (mi)); - break; - - default: - return False; - } - - return True; + return False; } ENTRYPOINT void init_antmaze(ModeInfo * mi) @@ -1397,7 +1408,7 @@ ENTRYPOINT void init_antmaze(ModeInfo * mi) mp->mag = 4.0; mp->rot = make_rotator (rot_speed, rot_speed, rot_speed, 1, 0, True); - mp->trackball = gltrackball_init (); + mp->trackball = gltrackball_init (False); if ((mp->glx_context = init_GL(mi)) != NULL) { reshape_antmaze(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); @@ -1408,6 +1419,22 @@ ENTRYPOINT void init_antmaze(ModeInfo * mi) MI_CLEARWINDOW(mi); } +static void +device_rotate(ModeInfo *mi) +{ +#if 0 + GLfloat rot = current_device_rotation(); + glRotatef(rot, 0, 0, 1); + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); + glScalef (1/s, s, 1); + } +#endif +} + + ENTRYPOINT void draw_antmaze(ModeInfo * mi) { double h = (GLfloat) MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); @@ -1443,6 +1470,7 @@ ENTRYPOINT void draw_antmaze(ModeInfo * mi) glMatrixMode(GL_MODELVIEW); glLoadIdentity(); + device_rotate(mi); glPushMatrix(); @@ -1478,6 +1506,7 @@ ENTRYPOINT void draw_antmaze(ModeInfo * mi) glViewport((17*MI_WIDTH(mi))/32, MI_HEIGHT(mi)/2, MI_WIDTH(mi)/2, 3*MI_HEIGHT(mi)/8); glMatrixMode(GL_PROJECTION); glLoadIdentity(); + device_rotate(mi); gluPerspective(45, 1/h, 1, 25.0); glMatrixMode(GL_MODELVIEW); @@ -1500,6 +1529,7 @@ ENTRYPOINT void draw_antmaze(ModeInfo * mi) glViewport((5*MI_WIDTH(mi))/8, MI_HEIGHT(mi)/8, (11*MI_WIDTH(mi))/32, 3*MI_HEIGHT(mi)/8); glMatrixMode(GL_PROJECTION); glLoadIdentity(); + device_rotate(mi); gluPerspective(45, 1/h, 1, 25.0); glMatrixMode(GL_MODELVIEW); @@ -1564,7 +1594,10 @@ ENTRYPOINT void draw_antmaze(ModeInfo * mi) /* glPopMatrix(); */ /* glPopMatrix(); */ - if (MI_IS_FPS(mi)) do_fps (mi); + if (MI_IS_FPS(mi)) { + glViewport(0, 0, MI_WIDTH(mi), MI_HEIGHT(mi)); + do_fps (mi); + } glFlush(); glXSwapBuffers(display, window);