summaryrefslogtreecommitdiffstats
path: root/hacks/glx/stonerview-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'hacks/glx/stonerview-view.c')
-rw-r--r--hacks/glx/stonerview-view.c119
1 files changed, 0 insertions, 119 deletions
diff --git a/hacks/glx/stonerview-view.c b/hacks/glx/stonerview-view.c
deleted file mode 100644
index bb060ef..0000000
--- a/hacks/glx/stonerview-view.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* StonerView: An eccentric visual toy.
- Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com)
- http://www.eblong.com/zarf/stonerview.html
-
- Permission to use, copy, modify, distribute, and sell this software and its
- documentation for any purpose is hereby granted without fee, provided that
- the above copyright notice appear in all copies and that both that
- copyright notice and this permission notice appear in supporting
- documentation. No representations are made about the suitability of this
- software for any purpose. It is provided "as is" without express or
- implied warranty.
-*/
-
-/* Ported away from GLUT (so that it can do `-root' and work with xscreensaver)
- by Jamie Zawinski <jwz@jwz.org>, 22-Jan-2001.
- */
-
-#include "screenhackI.h"
-#include "stonerview.h"
-
-#include <stdlib.h>
-
-static GLfloat view_rotx = -45.0, view_roty = 0.0, view_rotz = 15.0;
-static GLfloat view_scale = 4.0;
-
-
-stonerview_state *
-stonerview_init_view(int wireframe_p, int transparent_p)
-{
- stonerview_state *st = (stonerview_state *) calloc (1, sizeof(*st));
-
- st->wireframe = wireframe_p;
- st->transparent = transparent_p;
- st->num_els = NUM_ELS;
- st->elist = (stonerview_elem_t *) calloc (st->num_els, sizeof(*st->elist));
-
- st->osctail = &st->oscroot;
-
- /* for trackball, two-sided lighting and no face culling */
- glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
-
- glEnable(GL_CULL_FACE);
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
- glEnable(GL_DEPTH_TEST);
-
- glEnable(GL_NORMALIZE);
-
- glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
- glEnable(GL_LINE_SMOOTH);
- glEnable(GL_BLEND);
-
- if (st->transparent)
- glBlendFunc(GL_SRC_ALPHA,GL_ONE);
-
- return st;
-}
-
-/* callback: draw everything */
-void
-stonerview_win_draw(stonerview_state *st)
-{
- int ix;
- static const GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 };
- static const GLfloat gray[] = { 0.6, 0.6, 0.6, 1.0 };
-
- glDrawBuffer(GL_BACK);
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glPushMatrix();
- glScalef(view_scale, view_scale, view_scale);
- glRotatef(view_rotx, 1.0, 0.0, 0.0);
- glRotatef(view_roty, 0.0, 1.0, 0.0);
- glRotatef(view_rotz, 0.0, 0.0, 1.0);
-
- glShadeModel(GL_FLAT);
-
- for (ix=0; ix < st->num_els; ix++) {
- stonerview_elem_t *el = &st->elist[ix];
-
- glNormal3f(0.0, 0.0, 1.0);
-
- /* outline the square */
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, (st->wireframe ? white : gray));
- glBegin(GL_LINE_LOOP);
- glVertex3f(el->pos[0]-el->vervec[0], el->pos[1]-el->vervec[1], el->pos[2]);
- glVertex3f(el->pos[0]+el->vervec[1], el->pos[1]-el->vervec[0], el->pos[2]);
- glVertex3f(el->pos[0]+el->vervec[0], el->pos[1]+el->vervec[1], el->pos[2]);
- glVertex3f(el->pos[0]-el->vervec[1], el->pos[1]+el->vervec[0], el->pos[2]);
- glEnd();
-
- if (st->wireframe) continue;
-
- /* fill the square */
- {
- GLfloat col[4];
- col[0] = el->col[0]; col[1] = el->col[1];
- col[2] = el->col[2]; col[3] = el->col[3];
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, col);
- }
- glBegin(GL_QUADS);
- glVertex3f(el->pos[0]-el->vervec[0], el->pos[1]-el->vervec[1], el->pos[2]);
- glVertex3f(el->pos[0]+el->vervec[1], el->pos[1]-el->vervec[0], el->pos[2]);
- glVertex3f(el->pos[0]+el->vervec[0], el->pos[1]+el->vervec[1], el->pos[2]);
- glVertex3f(el->pos[0]-el->vervec[1], el->pos[1]+el->vervec[0], el->pos[2]);
- glEnd();
- }
-
- glPopMatrix();
-}
-
-void
-stonerview_win_release(stonerview_state *st)
-{
- free (st->elist);
- /*free (st->oscroot); -- #### how do we free this? */
- free (st);
-}