From http://www.jwz.org/xscreensaver/xscreensaver-5.35.tar.gz
[xscreensaver] / hacks / glx / bubble3d.h
index 4cbdd7540f417496c2365e5ece00ad1ea376e786..92ccbbde064f8f797d39cb0f8935b855bf0af9b9 100644 (file)
@@ -3,7 +3,9 @@
 #ifndef __bubbles3d_h__
 #define __bubbles3d_h__
 
-#include <X11/Intrinsic.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif /* HAVE_CONFIG_H */
 
 #ifdef STANDALONE
 # include <math.h>
 # include "xlock.h"            /* from the xlockmore distribution */
 #endif /* !STANDALONE */
 
-#include <GL/gl.h>
-#include <GL/glu.h>
+#if !defined(HAVE_JWXYZ) && !defined(HAVE_JWZGLES)
+# include <GL/gl.h>
+# include <GL/glu.h>
+#endif
+
+#ifdef HAVE_JWZGLES
+# include "jwzgles.h"
+#endif /* HAVE_JWZGLES */
 
 /* Static configuration. */
-#define GLB_SLOW_GL          1 /* Set this if you have a slow GL
+#define GLB_SLOW_GL          0 /* Set this if you have a slow GL
                                   * implementation. If you have an accelerated
                                   * graphics card, set this to 0.
                                 */
-#define GLB_USE_BLENDING     0 /* Use alpha feature to create see-through
-                                  * bubbles.
-                                */
 #define GLB_VERTICES_EPSILON 0.0005    /* How close are identical vertices? */
 
 /* Configuration structure. */
 struct glb_config {
+       int         transparent_p;      /* Whether to use alpha blending */
+
        int         subdivision_depth;  /* Controls how many triangles are in
                                         * each bubble. 2 and 3 are good values.
                                         */
@@ -58,8 +65,9 @@ struct glb_config {
                                         */
        GLfloat     screen_bottom;      /* Bottom of screen. */
        GLfloat     screen_top; /* Top of screen. */
-       GLfloat     bg_colour[4];       /* Background colour. */
        GLfloat     bubble_colour[4];   /* Colour of the bubbles. */
+
+       int         polygon_count;
 };
 
 extern struct glb_config glb_config;
@@ -67,19 +75,21 @@ extern struct glb_config glb_config;
 #define glb_drand() ((double)LRAND() / (double)MAXRAND)
 
 /*-- From glb_sphere.c. --*/
+typedef struct glb_data glb_data;
 typedef GLfloat glb_vertex[3];
 typedef GLuint glb_triangle[3];
-extern void glb_sphere_init(void);
-extern glb_vertex *glb_sphere_get_vertices(int *nr_vertices);
-extern glb_triangle *glb_sphere_get_triangles(int *nr_triangles);
-extern void glb_sphere_end(void);
+extern glb_data * glb_sphere_init(void);
+extern glb_vertex *glb_sphere_get_vertices(glb_data *, int *nr_vertices);
+extern glb_triangle *glb_sphere_get_triangles(glb_data *, int *nr_triangles);
+extern void glb_sphere_end(glb_data *);
 
 /*-- From glb_bubble.c. --*/
-extern void *glb_bubble_new(GLfloat x, GLfloat y, GLfloat z, GLfloat scale,
+extern void *glb_bubble_new(glb_data *d, 
+                            GLfloat x, GLfloat y, GLfloat z, GLfloat scale,
                            GLfloat y_incr, GLfloat scale_incr);
 extern void glb_bubble_delete(void *);
 extern void glb_bubble_step(void *);
-extern void glb_bubble_draw(void *);
+extern void glb_bubble_draw(glb_data *d, void *);
 extern GLfloat glb_bubble_get_y(void *);
 
 /*-- From glb_draw.c. --*/