"*size: -6 \n" \
"*suppressRotationAnimation: True\n" \
-# define refresh_rubik 0
# define release_rubik 0
# include "xlockmore.h" /* from the xscreensaver distribution */
#else /* !STANDALONE */
#ifdef USE_MODULES
ModStruct rubik_description =
{"rubik", "init_rubik", "draw_rubik", (char *) NULL,
- "draw_rubik", "change_rubik", (char *) NULL, &rubik_opts,
+ "draw_rubik", "change_rubik", "free_rubik", &rubik_opts,
10000, -30, 5, -6, 64, 1.0, "",
"Shows an auto-solving Rubik's Cube", 0, NULL};
reshape_rubik(ModeInfo * mi, int width, int height)
{
rubikstruct *rp = &rubik[MI_SCREEN(mi)];
+ int y = 0;
- glViewport(0, 0, rp->WindW = (GLint) width, rp->WindH = (GLint) height);
+ if (width > height * 5) { /* tiny window: show middle */
+ height = width;
+ y = -height/2;
+ }
+
+ glViewport(0, y, rp->WindW = (GLint) width, rp->WindH = (GLint) height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0);
return (shuffle(mi));
}
-static void
+ENTRYPOINT void
free_rubik(ModeInfo *mi)
{
rubikstruct *rp = &rubik[MI_SCREEN(mi)];
{
rubikstruct *rp;
- MI_INIT (mi, rubik, free_rubik);
+ MI_INIT (mi, rubik);
rp = &rubik[MI_SCREEN(mi)];
rp->step = NRAND(90);
rp->PX = ((float) LRAND() / (float) MAXRAND) * 2.0 - 1.0;