"*cycles: 100 \n" \
"*size: 6000 \n" \
"*wireframe: False \n"
+# define release_atlantis 0
# define atlantis_handle_event 0
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
#ifdef USE_MODULES
ModStruct atlantis_description =
-{"atlantis", "init_atlantis", "draw_atlantis", "release_atlantis",
+{"atlantis", "init_atlantis", "draw_atlantis", NULL,
"refresh_atlantis", "change_atlantis", NULL, &atlantis_opts,
1000, NUM_SHARKS, SHARKSPEED, SHARKSIZE, 64, 1.0, "",
"Shows moving sharks/whales/dolphin", 0, NULL};
}
else
{
- GLfloat s_plane[] = { 1, 0, 0, 0 };
- GLfloat t_plane[] = { 0, 0, 1, 0 };
GLfloat scale = 0.0005;
if (!ap->texture)
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
- glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
- glTexGenfv(GL_S, GL_EYE_PLANE, s_plane);
- glTexGenfv(GL_T, GL_EYE_PLANE, t_plane);
-
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
+# ifndef HAVE_JWZGLES
+ {
+ GLfloat s_plane[] = { 1, 0, 0, 0 };
+ GLfloat t_plane[] = { 0, 0, 1, 0 };
+ glTexGeni (GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
+ glTexGeni (GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
+ glTexGenfv(GL_S, GL_EYE_PLANE, s_plane);
+ glTexGenfv(GL_T, GL_EYE_PLANE, t_plane);
+ glEnable(GL_TEXTURE_GEN_S);
+ glEnable(GL_TEXTURE_GEN_T);
+ }
+# endif
glEnable(GL_TEXTURE_2D);
glMatrixMode(GL_TEXTURE);
if (do_gradient && !ap->wire)
{
- GLfloat top[3] = { 0.00, 0.40, 0.70 };
- GLfloat bot[3] = { 0.00, 0.05, 0.18 };
+ GLfloat top[4] = { 0.00, 0.40, 0.70, };
+ GLfloat bot[4] = { 0.00, 0.05, 0.18, };
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glPushMatrix();
{
glLoadIdentity();
-
- /* save GL_COLOR_MATERIAL, GL_COLOR_MATERIAL_FACE, etc.
- This stalls the pipeline, so it would be better to do this
- with explicit enable/disable calls, but I can't figure
- out how to undo the glEnable() and glColor() calls below!
- Simply calling glDisable(GL_COLOR_MATERIAL) is insufficient!
- */
- glPushAttrib (GL_LIGHTING_BIT);
- {
- glEnable (GL_COLOR_MATERIAL);
-
- glShadeModel(GL_SMOOTH);
- glBegin(GL_QUADS);
- glColor3f (bot[0], bot[1], bot[2]); glVertex3f (-1, -1, 1);
- glColor3f (bot[0], bot[1], bot[2]); glVertex3f ( 1, -1, 1);
- glColor3f (top[0], top[1], top[2]); glVertex3f ( 1, 1, 1);
- glColor3f (top[0], top[1], top[2]); glVertex3f (-1, 1, 1);
- glEnd();
- }
- glPopAttrib();
+ /* glRotatef(current_device_rotation(), 0, 0, 1); */
+
+# ifndef HAVE_JWZGLES
+ glShadeModel (GL_SMOOTH);
+# endif
+ glDisable (GL_LIGHTING);
+ glBegin (GL_QUADS);
+ glColor3fv (bot);
+ glVertex3f (-1, -1, 1); glVertex3f ( 1, -1, 1);
+ glColor3fv (top);
+ glVertex3f ( 1, 1, 1); glVertex3f (-1, 1, 1);
+ glEnd();
+ glEnable (GL_LIGHTING);
}
glPopMatrix();
}
*-----------------------------------------------------------------------------
*/
+static void free_atlantis(ModeInfo * mi);
+
/*
*-----------------------------------------------------------------------------
* Initialize atlantis. Called each time the window changes.
Display *display = MI_DISPLAY(mi);
Window window = MI_WINDOW(mi);
- if (atlantis == NULL) {
- if ((atlantis = (atlantisstruct *) calloc(MI_NUM_SCREENS(mi),
- sizeof (atlantisstruct))) == NULL)
- return;
- }
+ MI_INIT(mi, atlantis, free_atlantis);
ap = &atlantis[screen];
ap->num_sharks = MI_COUNT(mi);
if (ap->sharks == NULL) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glPushMatrix();
+ glRotatef(current_device_rotation(), 0, 0, 1);
AllDisplay(ap);
Animate(ap);
+ glPopMatrix();
if (mi->fps_p) do_fps (mi);
glXSwapBuffers(display, window);
/*
*-----------------------------------------------------------------------------
* The display is being taken away from us. Free up malloc'ed
- * memory and X resources that we've alloc'ed. Only called
- * once, we must zap everything for every screen.
+ * memory and X resources that we've alloc'ed.
*-----------------------------------------------------------------------------
*/
-ENTRYPOINT void
-release_atlantis(ModeInfo * mi)
+static void
+free_atlantis(ModeInfo * mi)
{
#if 0
- int screen;
-
- if (atlantis != NULL) {
- for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
- atlantisstruct *ap = &atlantis[screen];
+ atlantisstruct *ap = &atlantis[screen];
- if (ap->sharks)
- (void) free((void *) ap->sharks);
- }
- (void) free((void *) atlantis);
- atlantis = NULL;
- }
- FreeAllGL(mi);
+ if (ap->sharks)
+ (void) free((void *) ap->sharks);
#endif
}