/* -*- Mode: C; tab-width: 4 -*- */
/* vim: set ai ts=4 sw=4: */
-#if !defined( lint ) && !defined( SABER )
+#if 0
/*static const char sccsid[] = "@(#)gleidescope.c 1.0 03/06/27 xlockmore";*/
#endif
# define DEFAULTS \
"*delay: 20000 \n" \
"*showFPS: False \n" \
- "*size: -1 \n" \
+ "*size: 0 \n" \
"*useSHM: True \n"
# define refresh_gleidescope 0
#define ANGLE_120 (M_PI * 2 / 3)
#define ANGLE_240 (M_PI * 4 / 3)
+#define DEF_GRAB "False"
+#define DEF_MOVE "False"
+#define DEF_NOMOVE "False"
+#define DEF_ROTATE "False"
+#define DEF_NOROTATE "False"
+#define DEF_ZOOM "False"
+#define DEF_NOZOOM "False"
+#define DEF_IMAGE "DEFAULT"
+#define DEF_DURATION "30"
+
+
static XrmOptionDescRec opts[] =
{
#ifdef GRAB
{"-no-move", ".gleidescope.nomove", XrmoptionNoArg, "true"},
{"-rotate", ".gleidescope.rotate", XrmoptionNoArg, "true"},
{"-no-rotate", ".gleidescope.norotate", XrmoptionNoArg, "true"},
- /*{"-size", ".gleidescope.size", XrmoptionNoArg, "-1"},*/
{"-zoom", ".gleidescope.zoom", XrmoptionNoArg, "true"},
{"-no-zoom", ".gleidescope.nozoom", XrmoptionNoArg, "true"},
{"-image", ".gleidescope.image", XrmoptionSepArg, "DEFAULT"},
static argtype vars[] = {
#ifdef GRAB
- {&grab, "grab", "Grab", "False", t_Bool},
+ {&grab, "grab", "Grab", DEF_GRAB, t_Bool},
#endif
- {&move, "move", "Move", "False", t_Bool},
- {&nomove, "nomove", "noMove", "False", t_Bool},
- {&rotate, "rotate", "Rotate", "False", t_Bool},
- {&norotate, "norotate", "noRotate", "False", t_Bool},
- /*{&size, "size", "Size", "-1", t_Int},*/
- {&zoom, "zoom", "Zoom", "False", t_Bool},
- {&nozoom, "nozoom", "noZoom", "False", t_Bool},
- {&image, "image", "Image", "DEFAULT", t_String},
- {&duration, "duration", "Duration", "30", t_Int},
+ {&move, "move", "Move", DEF_MOVE, t_Bool},
+ {&nomove, "nomove", "noMove", DEF_NOMOVE, t_Bool},
+ {&rotate, "rotate", "Rotate", DEF_ROTATE, t_Bool},
+ {&norotate, "norotate", "noRotate", DEF_NOROTATE, t_Bool},
+ {&zoom, "zoom", "Zoom", DEF_ZOOM, t_Bool},
+ {&nozoom, "nozoom", "noZoom", DEF_NOZOOM, t_Bool},
+ {&image, "image", "Image", DEF_IMAGE, t_String},
+ {&duration, "duration", "Duration", DEF_DURATION, t_Int},
};
static OptionStruct desc[] = {
{"-no-move", "camera won't move"},
{"-rotate", "camera will rotate"},
{"-no-rotate", "camera won't rotate"},
- /*{"-size", "size of the hexagons (1-10)"},*/
{"-zoom", "camera will zoom"},
{"-no-zoom", "camera won't zoom"},
{"-image", "xpm / xbm image file to use for texture"},
printf("event:%d\n", event->xany.type);
printf("button:%d\n", event->xbutton.button);
*/
- switch(event->xany.type)
- {
- case ButtonPress:
-
+ if (event->xany.type == ButtonPress)
+ {
if (event->xbutton.button == Button1 ||
event->xbutton.button == Button3)
{
return True;
}
#endif
- break;
-
- case ButtonRelease:
-
+ } else if (event->xany.type == ButtonRelease)
+ {
if (event->xbutton.button == Button1 ||
event->xbutton.button == Button3)
{
gp->button_down_p = False;
return True;
}
- break;
-
- case MotionNotify:
-
+ } else if (event->xany.type == MotionNotify)
+ {
if (gp->button_down_p)
{
/* update mouse position */
return True;
}
- break;
- }
+ }
+ else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
+ {
+ gp->start_time = -1;
+ gp->fade = 0;
+ return True;
+ }
return False;
}
}
#endif
-static void
+static int
draw_hexagons(ModeInfo *mi, int translucency, texture *texture)
{
+ int polys = 0;
int i;
GLfloat col[4];
vector2f t[3];
glTranslatef(hex[i].x, hex[i].y, 0.0);
glCallList(gp->list);
+ polys += 6;
glPopMatrix();
}
glVertex3f(1.0, 1.0, -0.1);
glTexCoord2f(0.0, 1.0);
glVertex3f(0.0, 1.0, -0.1);
+ polys++;
glEnd();
/* acd debug - display texture triangle */
glColor4f(1.0, 0.5, 1.0, 1.0);
glVertex3f(t[0].x, t[0].y, -0.11);
glVertex3f(t[1].x, t[1].y, -0.11);
glVertex3f(t[2].x, t[2].y, -0.11);
+ polys++;
glEnd();
glPopMatrix();
#endif
glDisable(GL_TEXTURE_2D);
glDepthMask(GL_TRUE);
glDisable(GL_BLEND);
+ return polys;
}
/*
vectorf v1;
GLfloat pos[4];
- glClearColor(0.5, 0.5, 0.5, 1.0);
+ mi->polygon_count = 0;
+
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
if (gp->size > 10) {
gp->size = 10;
}
- if (gp->size < -1) {
- gp->size = -1;
+ if (gp->size <= 0) {
+ gp->size = 0;
}
- if (gp->size != -1) {
+ if (gp->size > 0) {
/* user defined size */
v1.z = gp->size;
} else if (zoom) {
if (gp->fade == 0)
{
/* not fading */
- draw_hexagons(mi, MAX_FADE, &gp->textures[gp->visible]);
+ mi->polygon_count +=
+ draw_hexagons(mi, MAX_FADE, &gp->textures[gp->visible]);
}
else
{
/* fading - show both textures with alpha
NB first is always max alpha */
- draw_hexagons(mi, MAX_FADE, &gp->textures[1 - gp->visible]);
- draw_hexagons(mi, MAX_FADE - gp->fade, &gp->textures[gp->visible]);
+ mi->polygon_count +=
+ draw_hexagons(mi, MAX_FADE, &gp->textures[1 - gp->visible]);
+ mi->polygon_count +=
+ draw_hexagons(mi, MAX_FADE - gp->fade, &gp->textures[gp->visible]);
/* fade some more */
gp->fade++;
if ((gp->glx_context = init_GL(mi)) != NULL) {
reshape_gleidescope(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */
glDrawBuffer(GL_BACK);