* does not, obviously.
*/
-#include <X11/Intrinsic.h>
+#define DEFAULTS "*delay: 30000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+
+# define refresh_boing 0
+# define release_boing 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "gltrackball.h"
+#include <ctype.h>
-extern XtAppContext app;
+#ifdef USE_GL /* whole file */
-#define PROGCLASS "Boing"
-#define HACK_INIT init_boing
-#define HACK_DRAW draw_boing
-#define HACK_RESHAPE reshape_boing
-#define HACK_HANDLE_EVENT boing_handle_event
-#define EVENT_MASK PointerMotionMask
-#define sws_opts xlockmore_opts
#define DEF_SPIN "True"
#define DEF_LIGHTING "False"
#define DEF_SMOOTH "False"
-#define DEF_SCANLINES "False"
+#define DEF_SCANLINES "True"
#define DEF_SPEED "1.0"
#define DEF_SIZE "0.5"
#define DEF_ANGLE "15"
#define DEF_SHADOW_COLOR "#303030"
#define DEF_BACKGROUND "#8C8C8C"
-#define DEFAULTS "*delay: 30000 \n" \
- "*showFPS: False \n" \
- "*wireframe: False \n" \
-
-#undef countof
-#define countof(x) (sizeof((x))/sizeof((*x)))
-
-#include "xlockmore.h"
-#include "gltrackball.h"
-#include <ctype.h>
-
-#ifdef USE_GL /* whole file */
-
-#include <GL/glu.h>
-
typedef struct { GLfloat x, y, z; } XYZ;
typedef struct {
{&bg_str, "boingBackground", "Background", DEF_BACKGROUND, t_String},
};
-ModeSpecOpt sws_opts = {countof(opts), opts, countof(vars), vars, NULL};
+ENTRYPOINT ModeSpecOpt boing_opts = {countof(opts), opts, countof(vars), vars, NULL};
static void
parse_color (ModeInfo *mi, const char *name, const char *s, GLfloat *a)
/* boing_configuration *bp = &bps[MI_SCREEN(mi)]; */
glPushMatrix();
glTranslatef (0, 0, -0.5);
- glFrontFace (GL_CCW);
+/* glFrontFace (GL_CCW);*/
draw_grid (mi);
glPopMatrix();
glPushMatrix();
glRotatef (90, 1, 0, 0);
glTranslatef (0, 0, 0.5);
- glFrontFace (GL_CW);
+/* glFrontFace (GL_CW);*/
draw_grid (mi);
glPopMatrix();
}
/* Window management, etc
*/
-void
+ENTRYPOINT void
reshape_boing (ModeInfo *mi, int width, int height)
{
GLfloat h = (GLfloat) height / (GLfloat) width;
}
-Bool
+ENTRYPOINT Bool
boing_handle_event (ModeInfo *mi, XEvent *event)
{
boing_configuration *bp = &bps[MI_SCREEN(mi)];
}
-void
+ENTRYPOINT void
init_boing (ModeInfo *mi)
{
boing_configuration *bp;
}
-void
+ENTRYPOINT void
draw_boing (ModeInfo *mi)
{
boing_configuration *bp = &bps[MI_SCREEN(mi)];
if (!bp->glx_context)
return;
+ glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+
mi->polygon_count = 0;
glShadeModel(GL_SMOOTH);
glEnable(GL_NORMALIZE);
- glEnable(GL_CULL_FACE);
- glEnable (GL_DEPTH_TEST);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLightfv (GL_LIGHT0, GL_POSITION, bp->lightpos);
+ glDisable (GL_CULL_FACE);
+ glDisable (GL_DEPTH_TEST);
+
+ glEnable (GL_LINE_SMOOTH);
+ glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable (GL_BLEND);
+
draw_box (mi);
draw_shadow (mi);
+
+ glEnable (GL_CULL_FACE);
+ glEnable (GL_DEPTH_TEST);
+
draw_ball (mi);
if (scanlines_p)
draw_scanlines (mi);
glXSwapBuffers(dpy, window);
}
+XSCREENSAVER_MODULE ("Boing", boing)
+
#endif /* USE_GL */