http://svn.poeml.de/viewvc/ppc/src-unpacked/xscreensaver/xscreensaver-4.12.tar.bz2...
[xscreensaver] / hacks / glx / glplanet.c
index a156e5abc9efcc2c214c645017832692b77a0735..316e6821205dc65c6fcb809febd8253cb3921434 100644 (file)
@@ -142,7 +142,13 @@ ModStruct   planet_description =
  "Animates texture mapped sphere (planet)", 0, NULL};
 #endif
 
+# ifdef __GNUC__
+  __extension__  /* don't warn about "string length is greater than the length
+                    ISO C89 compilers are required to support" when including
+                    the following XPM file... */
+# endif
 #include "../images/earth.xpm"
+
 #include "xpm-ximage.h"
 #include "rotator.h"
 #include "gltrackball.h"
@@ -213,7 +219,10 @@ setup_xpm_texture (ModeInfo *mi, char **xpm_data)
   clear_gl_error();
   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
                image->width, image->height, 0,
-               GL_RGBA, GL_UNSIGNED_BYTE, image->data);
+               GL_RGBA,
+               /* GL_UNSIGNED_BYTE, */
+               GL_UNSIGNED_INT_8_8_8_8_REV,
+               image->data);
   sprintf (buf, "builtin texture (%dx%d)", image->width, image->height);
   check_gl_error(buf);
 
@@ -240,7 +249,10 @@ setup_file_texture (ModeInfo *mi, char *filename)
   clear_gl_error();
   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
                image->width, image->height, 0,
-               GL_RGBA, GL_UNSIGNED_BYTE, image->data);
+               GL_RGBA,
+               /* GL_UNSIGNED_BYTE, */
+               GL_UNSIGNED_INT_8_8_8_8_REV,
+               image->data);
   sprintf (buf, "texture: %.100s (%dx%d)",
            filename, image->width, image->height);
   check_gl_error(buf);
@@ -439,31 +451,6 @@ init_sun (ModeInfo * mi)
 
 #define RANDSIGN() ((random() & 1) ? 1 : -1)
 
-static void
-pick_velocity (ModeInfo * mi)
-{
-#if 0
-  planetstruct *gp = &planets[MI_SCREEN(mi)];
-
-  gp->box_width =  15.0;
-  gp->box_height = 15.0;
-  gp->box_depth =  5.0;
-
-  gp->tx = 0.0;
-  gp->ty = 0.0;
-  gp->tz = frand(360);
-
-  gp->dtx = (frand(0.4) + frand(0.3)) * RANDSIGN();
-  gp->dty = (frand(0.4) + frand(0.3)) * RANDSIGN();
-  gp->dtz = (frand(5.0) + frand(5.0));  /* the sun sets in the west */
-
-  gp->dx = (frand(0.2) + frand(0.2)) * RANDSIGN();
-  gp->dy = (frand(0.2) + frand(0.2)) * RANDSIGN();
-  gp->dz = (frand(0.2) + frand(0.2)) * RANDSIGN();
-#endif
-}
-
-
 void
 reshape_planet (ModeInfo *mi, int width, int height)
 {
@@ -528,8 +515,6 @@ init_planet (ModeInfo * mi)
   }
   gp = &planets[screen];
 
-  pick_velocity (mi);
-
   if ((gp->glx_context = init_GL(mi)) != NULL) {
        reshape_planet(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
   }
@@ -672,8 +657,8 @@ draw_planet (ModeInfo * mi)
   glRotatef (gp->z * 360, 0.0, 0.0, 1.0);
   if (do_rotate && !gp->button_down_p)
     {
-      gp->z += 0.01;
-      if (gp->z > 1) gp->z -= 1;
+      gp->z -= 0.01;     /* the sun sets in the west */
+      if (gp->z < 0) gp->z += 1;
     }
 
   glCallList (gp->platelist);