X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fglx%2Ftronbit.c;h=261aca3c2f214263ea111e8c05ebc4af9bea97ec;hp=98cbf287127a4b8425a7619f93fc3ec9605cad6e;hb=f8cf5ac7b2f53510f80a0eaf286a25298be17bfe;hpb=ec8d2b32b63649e6d32bdfb306eda062769af823 diff --git a/hacks/glx/tronbit.c b/hacks/glx/tronbit.c index 98cbf287..261aca3c 100644 --- a/hacks/glx/tronbit.c +++ b/hacks/glx/tronbit.c @@ -1,4 +1,4 @@ -/* tronbit, Copyright (c) 2011 Jamie Zawinski +/* tronbit, Copyright (c) 2011-2012 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -236,6 +236,20 @@ animate_bits (ModeInfo *mi, bit_state omodel, bit_state nmodel, GLfloat ratio) int polys = 0; GLfloat scale = sin (ratio * M_PI / 2); GLfloat osize, nsize, small; + int wire = MI_IS_WIREFRAME(mi); + + glShadeModel(GL_SMOOTH); + + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + + if (!wire) + { + glEnable(GL_LIGHTING); + glEnable(GL_DEPTH_TEST); + glEnable(GL_CULL_FACE); + } if ((omodel == BIT_IDLE1 || omodel == BIT_IDLE2) && (nmodel == BIT_IDLE1 || nmodel == BIT_IDLE2)) @@ -273,11 +287,6 @@ draw_histogram (ModeInfo *mi, GLfloat ratio) int overlays = 5; int k; - glPushAttrib (GL_TRANSFORM_BIT | /* for matrix contents */ - GL_ENABLE_BIT | /* for various glDisable calls */ - GL_CURRENT_BIT | /* for glColor3f() */ - GL_LIST_BIT); /* for glListBase() */ - glDisable (GL_TEXTURE_2D); glDisable (GL_LIGHTING); glDisable (GL_BLEND); @@ -292,7 +301,8 @@ draw_histogram (ModeInfo *mi, GLfloat ratio) glPushMatrix(); glLoadIdentity(); - gluOrtho2D (0, mi->xgwa.width, 0, mi->xgwa.height); + glRotatef(current_device_rotation(), 0, 0, 1); + glOrtho (0, mi->xgwa.width, 0, mi->xgwa.height, -1, 1); for (k = 0; k < overlays; k++) { @@ -328,8 +338,6 @@ draw_histogram (ModeInfo *mi, GLfloat ratio) glMatrixMode(GL_PROJECTION); glPopMatrix(); - glPopAttrib(); - glMatrixMode(GL_MODELVIEW); return polys; @@ -418,7 +426,6 @@ ENTRYPOINT void init_bit (ModeInfo *mi) { bit_configuration *bp; - int wire = MI_IS_WIREFRAME(mi); int i; if (!bps) { @@ -436,24 +443,6 @@ init_bit (ModeInfo *mi) reshape_bit (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); - if (!wire) - { - GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; - GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; - GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; - GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - - glLightfv(GL_LIGHT0, GL_POSITION, pos); - glLightfv(GL_LIGHT0, GL_AMBIENT, amb); - glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); - glLightfv(GL_LIGHT0, GL_SPECULAR, spc); - } - { double spin_speed = 3.0; double wander_speed = 0.03 * speed; @@ -490,21 +479,32 @@ draw_bit (ModeInfo *mi) bit_configuration *bp = &bps[MI_SCREEN(mi)]; Display *dpy = MI_DISPLAY(mi); Window window = MI_WINDOW(mi); + int wire = MI_IS_WIREFRAME(mi); if (!bp->glx_context) return; glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); - glShadeModel(GL_SMOOTH); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glEnable(GL_DEPTH_TEST); - glEnable(GL_NORMALIZE); - glEnable(GL_CULL_FACE); + if (!wire) + { + GLfloat pos[4] = {1.0, 1.0, 1.0, 0.0}; + GLfloat amb[4] = {0.0, 0.0, 0.0, 1.0}; + GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat spc[4] = {0.0, 1.0, 1.0, 1.0}; - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_POSITION, pos); + glLightfv(GL_LIGHT0, GL_AMBIENT, amb); + glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); + glLightfv(GL_LIGHT0, GL_SPECULAR, spc); + } glPushMatrix (); + glRotatef(current_device_rotation(), 0, 0, 1); glScalef(1.1, 1.1, 1.1); @@ -515,7 +515,9 @@ draw_bit (ModeInfo *mi) (y - 0.5) * 5, (z - 0.5) * 3); + glRotatef(-current_device_rotation(), 0, 0, 1); gltrackball_rotate (bp->trackball); + glRotatef(current_device_rotation(), 0, 0, 1); get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); glRotatef (x * 360, 1.0, 0.0, 0.0); @@ -527,7 +529,6 @@ draw_bit (ModeInfo *mi) glScalef (6, 6, 6); - { int nmodel = bp->history [bp->history_fp]; int omodel = bp->history [bp->history_fp > 0