-/* xscreensaver, Copyright (c) 2002-2012 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2002-2014 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
#define DEFAULTS "*delay: 30000 \n" \
"*showFPS: False \n" \
"*wireframe: False \n" \
- "*labelfont: -*-helvetica-medium-r-normal-*-180-*\n"
+ "*suppressRotationAnimation: True\n" \
+ "*labelfont: -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n"
-# define refresh_spheremonics 0
+# define free_spheremonics 0
# define release_spheremonics 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
#include "xlockmore.h"
-#include "glxfonts.h"
+#include "texfont.h"
#include "normals.h"
#include "colors.h"
#include "rotator.h"
int mesher;
int polys1, polys2; /* polygon counts */
-# ifdef HAVE_GLBITMAP
- XFontStruct *font;
- GLuint font_list;
-# else
texture_font_data *font_data;
-# endif
int change_tick;
int done_once;
reshape_spheremonics (ModeInfo *mi, int width, int height)
{
GLfloat h = (GLfloat) height / (GLfloat) width;
+ int y = 0;
+
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width * 9/16;
+ y = -height/2;
+ h = height / (GLfloat) width;
+ }
- glViewport (0, 0, (GLint) width, (GLint) height);
+ glViewport (0, y, (GLint) width, (GLint) height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
0.0, 0.0, 0.0,
0.0, 1.0, 0.0);
+# ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */
+ {
+ int o = (int) current_device_rotation();
+ if (o != 0 && o != 180 && o != -180)
+ glScalef (1/h, 1/h, 1/h);
+ }
+
+# endif
glClear(GL_COLOR_BUFFER_BIT);
}
{
spheremonics_configuration *cc;
- if (!ccs) {
- ccs = (spheremonics_configuration *)
- calloc (MI_NUM_SCREENS(mi), sizeof (spheremonics_configuration));
- if (!ccs) {
- fprintf(stderr, "%s: out of memory\n", progname);
- exit(1);
- }
- }
+ MI_INIT (mi, ccs);
cc = &ccs[MI_SCREEN(mi)];
1.0,
do_wander ? wander_speed : 0,
(spinx && spiny && spinz));
- cc->trackball = gltrackball_init ();
+ cc->trackball = gltrackball_init (True);
}
cc->tracer = -1;
cc->resolution = res;
-# ifdef HAVE_GLBITMAP
- load_font (mi->dpy, "labelfont", &cc->font, &cc->font_list);
-# else /* !HAVE_GLBITMAP */
- cc->font_data = load_texture_font (mi->dpy, "labelFont");
-# endif /* !HAVE_GLBITMAP */
+ cc->font_data = load_texture_font (mi->dpy, "labelfont");
cc->dlist = glGenLists(1);
cc->dlist2 = glGenLists(1);
{
spheremonics_configuration *cc = &ccs[MI_SCREEN(mi)];
- if (event->xany.type == ButtonPress &&
- event->xbutton.button == Button1)
- {
- cc->button_down_p = True;
- gltrackball_start (cc->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)
- {
- cc->button_down_p = False;
- 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 (cc->trackball, event->xbutton.button, 10,
- !!event->xbutton.state);
- return True;
- }
- else if (event->xany.type == KeyPress)
- {
- KeySym keysym;
- char c = 0;
- XLookupString (&event->xkey, &c, 1, &keysym, 0);
-
- if (c == ' ' || c == '\t' || c == '\r' || c == '\n')
- {
- cc->change_tick = duration;
- return True;
- }
- }
- else if (event->xany.type == MotionNotify &&
- cc->button_down_p)
+ if (gltrackball_event_handler (event, cc->trackball,
+ MI_WIDTH (mi), MI_HEIGHT (mi),
+ &cc->button_down_p))
+ return True;
+ else if (screenhack_event_helper (MI_DISPLAY(mi), MI_WINDOW(mi), event))
{
- gltrackball_track (cc->trackball,
- event->xmotion.x, event->xmotion.y,
- MI_WIDTH (mi), MI_HEIGHT (mi));
+ cc->change_tick = duration;
return True;
}
cc->m[4], cc->m[5], cc->m[6], cc->m[7]);
glColor3f(1.0, 1.0, 0.0);
- print_gl_string (mi->dpy,
-# ifdef HAVE_GLBITMAP
- cc->font, cc->font_list,
-# else /* !HAVE_GLBITMAP */
- cc->font_data,
-# endif /* !HAVE_GLBITMAP */
- mi->xgwa.width, mi->xgwa.height,
- 10, mi->xgwa.height - 10,
- buf, False);
+ print_texture_label (mi->dpy, cc->font_data,
+ mi->xgwa.width, mi->xgwa.height,
+ 1, buf);
}
if (!static_parms)