#ifndef __bubbles3d_h__
#define __bubbles3d_h__
-#include <X11/Intrinsic.h>
-
#ifdef STANDALONE
# include <math.h>
# include "xlockmoreI.h" /* from the xscreensaver distribution */
# include "xlock.h" /* from the xlockmore distribution */
#endif /* !STANDALONE */
-#include <GL/gl.h>
-#include <GL/glu.h>
+#ifdef HAVE_COCOA
+# include <OpenGL/gl.h>
+# include <OpenGL/glu.h>
+#else
+# include <GL/gl.h>
+# include <GL/glu.h>
+#endif
/* Static configuration. */
#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.
*/
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;
#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. --*/