-/* voronoi, Copyright (c) 2007, 2008 Jamie Zawinski <jwz@jwz.org>
+/* voronoi, Copyright (c) 2007-2018 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: 20000 \n" \
"*showFPS: False \n" \
+ "*suppressRotationAnimation: True\n" \
-
-# define refresh_voronoi 0
+# define free_voronoi 0
# define release_voronoi 0
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
node *dragging;
int ncolors;
XColor *colors;
+ int point_size;
enum { MODE_WAITING, MODE_ADDING, MODE_ZOOMING } mode;
int adding;
glClear (GL_DEPTH_BUFFER_BIT);
- if (point_size <= 0)
+ if (vp->point_size <= 0)
;
- else if (point_size < 3)
+ else if (vp->point_size < 3)
{
- glPointSize (point_size);
+ glPointSize (vp->point_size);
for (nn = vp->nodes; nn; nn = nn->next)
{
glBegin (GL_POINTS);
{
int w = MI_WIDTH (mi);
int h = MI_HEIGHT (mi);
- int s = point_size;
+ int s = vp->point_size;
int i;
glColor4fv (nn->color2);
glTranslatef (nn->x, nn->y, 0);
glScalef (1.0 / w * s, 1.0 / h * s, 1);
- glLineWidth (point_size / 10);
+ glLineWidth (vp->point_size / 10);
nn->rot += (nn->rot < 0 ? -1 : 1);
glRotatef (nn->rot, 0, 0, 1);
glPopMatrix();
}
}
+
+#if 0
+ glPushMatrix();
+ glColor3f(1,1,1);
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(0,0,0);
+ glVertex3f(1,0,0);
+ glVertex3f(1,1,0);
+ glVertex3f(0,1,0);
+ glEnd();
+ glScalef(0.25, 0.25, 1);
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(0,0,0);
+ glVertex3f(1,0,0);
+ glVertex3f(1,1,0);
+ glVertex3f(0,1,0);
+ glEnd();
+ glPopMatrix();
+#endif
}
glLoadIdentity();
glOrtho (0, 1, 1, 0, -1, 1);
+# ifdef HAVE_MOBILE /* So much WTF */
+ {
+ int rot = current_device_rotation();
+
+ glTranslatef (0.5, 0.5, 0);
+ // glScalef(0.19, 0.19, 0.19);
+
+ if (rot == 180 || rot == -180) {
+ glTranslatef (1, 1, 0);
+ } else if (rot == 90 || rot == -270) {
+ glRotatef (180, 0, 0, 1);
+ glTranslatef (0, 1, 0);
+ } else if (rot == -90 || rot == 270) {
+ glRotatef (180, 0, 0, 1);
+ glTranslatef (1, 0, 0);
+ }
+
+ glTranslatef(-0.5, -0.5, 0);
+ }
+# endif
+
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
find_node (ModeInfo *mi, GLfloat x, GLfloat y)
{
voronoi_configuration *vp = &vps[MI_SCREEN(mi)];
- int ps = (point_size < 5 ? 5 : point_size);
+ int ps = (vp->point_size < 5 ? 5 : vp->point_size);
GLfloat hysteresis = (1.0 / MI_WIDTH (mi)) * ps;
node *nn;
for (nn = vp->nodes; nn; nn = nn->next)
{
voronoi_configuration *vp;
- if (!vps) {
- vps = (voronoi_configuration *)
- calloc (MI_NUM_SCREENS(mi), sizeof (voronoi_configuration));
- if (!vps) {
- fprintf(stderr, "%s: out of memory\n", progname);
- exit(1);
- }
-
- vp = &vps[MI_SCREEN(mi)];
- }
+ MI_INIT (mi, vps);
vp = &vps[MI_SCREEN(mi)];
vp->glx_context = init_GL(mi);
- if (point_size < 0) point_size = 10;
+ vp->point_size = point_size;
+ if (vp->point_size < 0) vp->point_size = 10;
+
+ if (MI_WIDTH(mi) > 2560) vp->point_size *= 2; /* Retina displays */
vp->ncolors = 128;
vp->colors = (XColor *) calloc (vp->ncolors, sizeof(XColor));