diff options
| author | Simon Rettberg | 2024-09-06 14:42:37 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2024-09-06 14:42:37 +0200 |
| commit | badef32037f52f79abc1f1440b786cd71afdf270 (patch) | |
| tree | 412b792d4cab4a7a110db82fcf74fe8a1ac55ec1 /hacks/glx/stonerview.c | |
| parent | Delete pre-6.00 files (diff) | |
| download | xscreensaver-master.tar.gz xscreensaver-master.tar.xz xscreensaver-master.zip | |
Diffstat (limited to 'hacks/glx/stonerview.c')
| -rw-r--r-- | hacks/glx/stonerview.c | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/hacks/glx/stonerview.c b/hacks/glx/stonerview.c deleted file mode 100644 index 8548385..0000000 --- a/hacks/glx/stonerview.c +++ /dev/null @@ -1,155 +0,0 @@ -/* StonerView: An eccentric visual toy. - Copyright 1998-2001 by Andrew Plotkin (erkyrath@eblong.com) - - For the latest version, source code, and links to more of my stuff, see: - 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. - - Revamped to work in the xlockmore framework so that it will also work - with the MacOS X port of xscreensaver by jwz, 21-Feb-2006. - */ - -#define DEFAULTS "*delay: 20000 \n" \ - "*showFPS: False \n" \ - "*wireframe: False \n" - -# define release_stonerview 0 - -#include "xlockmore.h" - -#ifdef USE_GL /* whole file */ - -#include "stonerview.h" -#include "gltrackball.h" - -#define DEF_TRANSPARENT "True" - -typedef struct { - GLXContext *glx_context; - stonerview_state *st; - trackball_state *trackball; - Bool button_down_p; -} stonerview_configuration; - -static stonerview_configuration *bps = NULL; - -static Bool transparent_p; - - -static XrmOptionDescRec opts[] = { - { "-transparent", ".transparent", XrmoptionNoArg, "True" }, - { "+transparent", ".transparent", XrmoptionNoArg, "False" }, -}; - -static argtype vars[] = { - {&transparent_p, "transparent", "Transparent", DEF_TRANSPARENT, t_Bool}, -}; - -ENTRYPOINT ModeSpecOpt stonerview_opts = {countof(opts), opts, countof(vars), vars, NULL}; - - -ENTRYPOINT void -reshape_stonerview (ModeInfo *mi, int width, int height) -{ - GLfloat h = (GLfloat) height / (GLfloat) width; - - glViewport(0, 0, (GLint) width, (GLint) height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum(-1.0, 1.0, -h, h, 5.0, 60.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glTranslatef(0.0, 0.0, -40.0); -} - - -ENTRYPOINT void -init_stonerview (ModeInfo *mi) -{ - stonerview_configuration *bp; - - MI_INIT (mi, bps); - - bp = &bps[MI_SCREEN(mi)]; - - bp->glx_context = init_GL(mi); - - bp->trackball = gltrackball_init (False); - bp->st = stonerview_init_view(MI_IS_WIREFRAME(mi), transparent_p); - stonerview_init_move(bp->st); - - reshape_stonerview (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); - clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ -} - - -ENTRYPOINT void -draw_stonerview (ModeInfo *mi) -{ - stonerview_configuration *bp = &bps[MI_SCREEN(mi)]; - - glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context); - - glPushMatrix (); - glRotatef( current_device_rotation(), 0, 0, 1); - gltrackball_rotate (bp->trackball); - -# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ - { - GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); - int o = (int) current_device_rotation(); - if (o != 0 && o != 180 && o != -180) - glScalef (h, h, h); - } -# endif - - stonerview_win_draw(bp->st); - if (! bp->button_down_p) - stonerview_move_increment(bp->st); - glPopMatrix (); - - mi->polygon_count = NUM_ELS; - if (mi->fps_p) do_fps (mi); - glFinish(); - - glXSwapBuffers(MI_DISPLAY (mi), MI_WINDOW(mi)); -} - -ENTRYPOINT void -free_stonerview (ModeInfo *mi) -{ - stonerview_configuration *bp = &bps[MI_SCREEN(mi)]; - if (!bp->glx_context) return; - glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context); - if (bp->trackball) gltrackball_free (bp->trackball); - if (bp->st) - stonerview_win_release (bp->st); -} - -ENTRYPOINT Bool -stonerview_handle_event (ModeInfo *mi, XEvent *event) -{ - stonerview_configuration *bp = &bps[MI_SCREEN(mi)]; - - if (gltrackball_event_handler (event, bp->trackball, - MI_WIDTH (mi), MI_HEIGHT (mi), - &bp->button_down_p)) - return True; - - return False; -} - -XSCREENSAVER_MODULE ("StonerView", stonerview) - -#endif /* USE_GL */ |
