X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fglx%2Fcage.c;h=564a8139be5d8dc4f1a0b00df97bb6b0468f086d;hb=3f438031d610c7e15fd33876a879b97e290e05fb;hp=18c2bda5381be14e269b2d72c60ae0d262340710;hpb=6a1da724858673ac40aa13a9612340d8bed8c7b9;p=xscreensaver diff --git a/hacks/glx/cage.c b/hacks/glx/cage.c index 18c2bda5..564a8139 100644 --- a/hacks/glx/cage.c +++ b/hacks/glx/cage.c @@ -1,9 +1,8 @@ /* -*- Mode: C; tab-width: 4 -*- */ /* cage --- the Impossible Cage, an Escher like scene. */ -#if !defined( lint ) && !defined( SABER ) +#if 0 static const char sccsid[] = "@(#)cage.c 5.01 2001/03/01 xlockmore"; - #endif /*- @@ -76,14 +75,6 @@ static const char sccsid[] = "@(#)cage.c 5.01 2001/03/01 xlockmore"; * In real OpenGL, PseudoColor DO NOT support texture map (as far as I know). */ -#ifdef VMS -/*- - * due to a Bug/feature in VMS X11/Intrinsic.h has to be placed before xlock. - * otherwise caddr_t is not defined correctly - */ -#include -#endif - #ifdef STANDALONE # define MODE_cage # define PROGCLASS "Cage" @@ -165,9 +156,9 @@ static cagestruct *cage = (cagestruct *) NULL; #define PlankThickness 0.15 static Bool -draw_woodplank(cagestruct * cp) +draw_woodplank(cagestruct * cp, int wire) { - glBegin(GL_QUADS); + glBegin(wire ? GL_LINES : GL_QUADS); glNormal3f(0, 0, 1); glTexCoord2f(0, 0); glVertex3f(-PlankWidth, -PlankHeight, PlankThickness); @@ -228,74 +219,74 @@ draw_woodplank(cagestruct * cp) } static Bool -draw_impossiblecage(cagestruct * cp) +draw_impossiblecage(cagestruct * cp, int wire) { glPushMatrix(); glRotatef(90, 0, 1, 0); glTranslatef(0.0, PlankHeight - PlankWidth, -PlankThickness - PlankWidth); - if (!draw_woodplank(cp)) + if (!draw_woodplank(cp, wire)) return False; glPopMatrix(); glPushMatrix(); glRotatef(90, 0, 0, 1); glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth - PlankThickness); - if (!draw_woodplank(cp)) + if (!draw_woodplank(cp, wire)) return False; glPopMatrix(); glPushMatrix(); glRotatef(90, 0, 1, 0); glTranslatef(0.0, PlankWidth - PlankHeight, -PlankThickness - PlankWidth); - if (!draw_woodplank(cp)) + if (!draw_woodplank(cp, wire)) return False; glPopMatrix(); glPushMatrix(); glTranslatef(0.0, PlankWidth - PlankHeight, 3 * PlankThickness - PlankWidth); - if (!draw_woodplank(cp)) + if (!draw_woodplank(cp, wire)) return False; glPopMatrix(); glPushMatrix(); glRotatef(90, 0, 0, 1); glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth - PlankThickness); - if (!draw_woodplank(cp)) + if (!draw_woodplank(cp, wire)) return False; glPopMatrix(); glPushMatrix(); glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth - 3 * PlankThickness); - if (!draw_woodplank(cp)) + if (!draw_woodplank(cp, wire)) return False; glPopMatrix(); glPushMatrix(); glTranslatef(0.0, PlankHeight - PlankWidth, 3 * PlankThickness - PlankWidth); - if (!draw_woodplank(cp)) + if (!draw_woodplank(cp, wire)) return False; glPopMatrix(); glPushMatrix(); glRotatef(90, 0, 0, 1); glTranslatef(0.0, PlankHeight - PlankWidth, PlankThickness - PlankWidth); - if (!draw_woodplank(cp)) + if (!draw_woodplank(cp, wire)) return False; glPopMatrix(); glPushMatrix(); glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth - 3 * PlankThickness); - if (!draw_woodplank(cp)) + if (!draw_woodplank(cp, wire)) return False; glPopMatrix(); glPushMatrix(); glRotatef(90, 0, 1, 0); glTranslatef(0.0, PlankHeight - PlankWidth, PlankWidth + PlankThickness); - if (!draw_woodplank(cp)) + if (!draw_woodplank(cp, wire)) return False; glPopMatrix(); glPushMatrix(); glRotatef(90, 0, 0, 1); glTranslatef(0.0, PlankWidth - PlankHeight, PlankThickness - PlankWidth); - if (!draw_woodplank(cp)) + if (!draw_woodplank(cp, wire)) return False; glPopMatrix(); glPushMatrix(); glRotatef(90, 0, 1, 0); glTranslatef(0.0, PlankWidth - PlankHeight, PlankWidth + PlankThickness); - if (!draw_woodplank(cp)) + if (!draw_woodplank(cp, wire)) return False; glPopMatrix(); return True; @@ -321,9 +312,13 @@ static void pinit(ModeInfo *mi) { int status; + glClearDepth(1.0); glClearColor(0.0, 0.0, 0.0, 1.0); + if (MI_IS_WIREFRAME(mi)) + return; + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); glLightfv(GL_LIGHT0, GL_POSITION, position0); @@ -449,7 +444,7 @@ draw_cage(ModeInfo * mi) glRotatef(cp->step * 100, 0, 0, 1); glRotatef(25 + cos(cp->step * 5) * 6, 1, 0, 0); glRotatef(204.5 - sin(cp->step * 5) * 8, 0, 1, 0); - if (!draw_impossiblecage(cp)) { + if (!draw_impossiblecage(cp, MI_IS_WIREFRAME(mi))) { release_cage(mi); return; }