#define DEF_HOLD "800"
#define DEF_SPHERISM "75"
#define DEF_DAMPING "500"
+#define DEF_RANDOM "True"
+#define DEF_TETRA "False"
+#define DEF_SPOOKY "0"
#ifndef max
#define max(a,b) (((a)>(b))?(a):(b))
};
static argtype vars[] = {
- {&random_parms, "random", "Random", "True", t_Bool},
- {&do_tetrahedron, "tetra", "Tetra", "False", t_Bool},
- {&spooky, "spooky", "Spooky", "0", t_Int},
+ {&random_parms, "random", "Random", DEF_RANDOM, t_Bool},
+ {&do_tetrahedron, "tetra", "Tetra", DEF_TETRA, t_Bool},
+ {&spooky, "spooky", "Spooky", DEF_SPOOKY, t_Int},
{&color, "color", "Color", DEF_COLOR, t_String},
{&shininess, "shininess", "Shininess", DEF_SHININESS, t_Int},
{&complexity, "complexity", "Complexity", DEF_COMPLEXITY, t_Int},
v[2] *= s;
}
+/*
static inline coord dot(vector v1, vector v2)
{
return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2];
}
+*/
static inline void cross(vector v1, vector v2, vector v)
{
hedge *h2, *hn1, *hn2;
vertex *vtxn;
edge *en;
- face *f1, *f2;
+ face *f1;
f1 = h->f;
h2 = partner(h);
- f2 = h2->f;
vtxn = vertex_new(f1->s, v);
hn1 = hedge_new(h, vtxn);
* see what the cost is of calling glBegin/glEnd for each
* triangle.
*/
-static inline void face_render(face *f, jigglystruct *js)
+static inline int face_render(face *f, jigglystruct *js)
{
hedge *h1, *h2, *hend;
+ int polys = 0;
h1 = f->start;
hend = h1->prev;
vertex_render(hend->vtx, js);
h1 = h2;
h2 = h1->next;
+ polys++;
}
glEnd();
+ return polys;
}
-static void jigglypuff_render(jigglystruct *js)
+static int jigglypuff_render(jigglystruct *js)
{
+ int polys = 0;
face *f = js->shape->faces;
vertex *vtx = js->shape->vertices;
vtx = vtx->next;
}
while(f) {
- face_render(f, js);
+ polys += face_render(f, js);
f=f->next;
}
+ return polys;
}
/* This is the jiggling code */
const GLfloat scolor[4]= {0.9f, 0.9f, 0.9f, 0.5f};
glDrawBuffer(GL_BACK);
- glClearColor(0, 0, 0, 0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
js->color_style = COLOR_STYLE_FLOWERBOX;
return 1;
}
+# ifndef HAVE_JWZGLES /* SPHERE_MAP unimplemented */
else if(!strcmp(color, "chrome")) {
js->color_style = COLOR_STYLE_CHROME;
return 1;
}
+# endif
else if(!strcmp(color, "cycle")) {
js->color_style = COLOR_STYLE_CYCLE;
js->jiggly_color[0] = ((float)random()) / REAL_RAND_MAX * 0.7 + 0.3;
static void randomize_parameters(jigglystruct *js) {
do_tetrahedron = random() & 1;
+# ifndef HAVE_JWZGLES /* #### glPolygonMode other than GL_FILL unimplemented */
js->do_wireframe = !(random() & 3);
+# endif
js->color_style = random() % 5;
+# ifdef HAVE_JWZGLES /* #### SPHERE_MAP unimplemented */
+ while (js->color_style == COLOR_STYLE_CHROME)
+ js->color_style = random() % 5;;
+# endif
if(js->color_style == COLOR_STYLE_NORMAL
|| js->color_style == COLOR_STYLE_CYCLE) {
js->jiggly_color[0] = ((float)random()) / REAL_RAND_MAX * 0.5 + 0.5;
{
jigglystruct *js = &jss[MI_SCREEN(mi)];
- if(event->xany.type == ButtonPress &&
- event->xbutton.button == Button1) {
- js->button_down = 1;
- gltrackball_start(js->trackball, event->xbutton.x, event->xbutton.y,
- MI_WIDTH(mi), MI_HEIGHT(mi));
- return True;
- }
- else if(event->xany.type == ButtonRelease &&
- event->xbutton.button == Button1) {
- js->button_down = 0;
- return True;
- }
- else if (event->xany.type == ButtonPress &&
- (event->xbutton.button == Button4 ||
- event->xbutton.button == Button5 ||
- event->xbutton.button == Button6 ||
- event->xbutton.button == Button7))
- {
- gltrackball_mousewheel (js->trackball, event->xbutton.button, 10,
- !!event->xbutton.state);
- return True;
- }
- else if(event->xany.type == MotionNotify && js->button_down) {
- gltrackball_track(js->trackball, event->xmotion.x, event->xmotion.y,
- MI_WIDTH(mi), MI_HEIGHT(mi));
- return True;
- }
+ if (gltrackball_event_handler (event, js->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &js->button_down))
+ return True;
+
return False;
}
js->axis -= 2*M_PI;
}
}
+
gltrackball_rotate(js->trackball);
if(js->color_style == COLOR_STYLE_CYCLE) {
glColor4fv(js->jiggly_color);
}
- jigglypuff_render(js);
+ mi->polygon_count = jigglypuff_render(js);
if(MI_IS_FPS(mi))
do_fps(mi);
glFinish();
js = &jss[MI_SCREEN(mi)];
js->do_wireframe = MI_IS_WIREFRAME(mi);
+# ifdef HAVE_JWZGLES
+ js->do_wireframe = 0; /* GL_LINE unimplemented */
+# endif
js->shininess = shininess;
else {
MI_CLEARWINDOW(mi);
}
- js->trackball = gltrackball_init();
+ js->trackball = gltrackball_init(True);
/* _DEBUG("distance : %f\nhold : %f\nspherify : %f\ndamping : %f\ndfact : %f\n",
js->stable_distance, js->hold_strength, js->spherify_strength,
js->damping_velocity, js->damping_factor);
js->do_wireframe, js->spooky, js->color_style, js->shininess);*/
}
-XSCREENSAVER_MODULE ("Jigglypuff", jigglypuff)
+XSCREENSAVER_MODULE ("JigglyPuff", jigglypuff)
#endif /* USE_GL */