+ faceSizes(rp, face, &sizeOfRow, &sizeOfColumn);
+ return sizeOfRow;
+}
+
+static Bool
+draw_stickerless_cubit(rubikstruct *rp, unsigned long *polysP)
+{
+ glBegin(GL_QUADS);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray);
+ /* Put sticker here */
+ glNormal3f(0.00, 0.00, 1.00);
+ glVertex3f(-CUBEROUND, -CUBEROUND, CUBELEN);
+ glVertex3f(CUBEROUND, -CUBEROUND, CUBELEN);
+ glVertex3f(CUBEROUND, CUBEROUND, CUBELEN);
+ glVertex3f(-CUBEROUND, CUBEROUND, CUBELEN);
+ (*polysP)++;
+ glNormal3f(0.00, 0.00, -1.00);
+ glVertex3f(-CUBEROUND, CUBEROUND, -CUBELEN);
+ glVertex3f(CUBEROUND, CUBEROUND, -CUBELEN);
+ glVertex3f(CUBEROUND, -CUBEROUND, -CUBELEN);
+ glVertex3f(-CUBEROUND, -CUBEROUND, -CUBELEN);
+ (*polysP)++;
+ glNormal3f(-1.00, 0.00, 0.00);
+ glVertex3f(-CUBELEN, -CUBEROUND, CUBEROUND);
+ glVertex3f(-CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(-CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(-CUBELEN, -CUBEROUND, -CUBEROUND);
+ (*polysP)++;
+ glNormal3f(1.00, 0.00, 0.00);
+ glVertex3f(CUBELEN, -CUBEROUND, -CUBEROUND);
+ glVertex3f(CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(CUBELEN, -CUBEROUND, CUBEROUND);
+ (*polysP)++;
+ glNormal3f(0.00, -1.00, 0.00);
+ glVertex3f(CUBEROUND, -CUBELEN, -CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(-CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(-CUBEROUND, -CUBELEN, -CUBEROUND);
+ (*polysP)++;
+ glNormal3f(0.00, 1.00, 0.00);
+ glVertex3f(-CUBEROUND, CUBELEN, -CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBELEN, CUBEROUND);
+ glVertex3f(CUBEROUND, CUBELEN, CUBEROUND);
+ glVertex3f(CUBEROUND, CUBELEN, -CUBEROUND);
+ (*polysP)++;
+
+ /* Edges of cubit */
+ glNormal3f(-1.00, -1.00, 0.00);
+ glVertex3f(-CUBEROUND, -CUBELEN, -CUBEROUND);
+ glVertex3f(-CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(-CUBELEN, -CUBEROUND, CUBEROUND);
+ glVertex3f(-CUBELEN, -CUBEROUND, -CUBEROUND);
+ (*polysP)++;
+ glNormal3f(1.00, 1.00, 0.00);
+ glVertex3f(CUBEROUND, CUBELEN, -CUBEROUND);
+ glVertex3f(CUBEROUND, CUBELEN, CUBEROUND);
+ glVertex3f(CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(CUBELEN, CUBEROUND, -CUBEROUND);
+ (*polysP)++;
+ glNormal3f(-1.00, 1.00, 0.00);
+ glVertex3f(-CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(-CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBELEN, CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBELEN, -CUBEROUND);
+ (*polysP)++;
+ glNormal3f(1.00, -1.00, 0.00);
+ glVertex3f(CUBELEN, -CUBEROUND, -CUBEROUND);
+ glVertex3f(CUBELEN, -CUBEROUND, CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBELEN, -CUBEROUND);
+ (*polysP)++;
+ glNormal3f(0.00, -1.00, -1.00);
+ glVertex3f(-CUBEROUND, -CUBEROUND, -CUBELEN);
+ glVertex3f(CUBEROUND, -CUBEROUND, -CUBELEN);
+ glVertex3f(CUBEROUND, -CUBELEN, -CUBEROUND);
+ glVertex3f(-CUBEROUND, -CUBELEN, -CUBEROUND);
+ (*polysP)++;
+ glNormal3f(0.00, 1.00, 1.00);
+ glVertex3f(-CUBEROUND, CUBEROUND, CUBELEN);
+ glVertex3f(CUBEROUND, CUBEROUND, CUBELEN);
+ glVertex3f(CUBEROUND, CUBELEN, CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBELEN, CUBEROUND);
+ (*polysP)++;
+ glNormal3f(0.00, -1.00, 1.00);
+ glVertex3f(-CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBEROUND, CUBELEN);
+ glVertex3f(-CUBEROUND, -CUBEROUND, CUBELEN);
+ (*polysP)++;
+ glNormal3f(0.00, 1.00, -1.00);
+ glVertex3f(-CUBEROUND, CUBELEN, -CUBEROUND);
+ glVertex3f(CUBEROUND, CUBELEN, -CUBEROUND);
+ glVertex3f(CUBEROUND, CUBEROUND, -CUBELEN);
+ glVertex3f(-CUBEROUND, CUBEROUND, -CUBELEN);
+ (*polysP)++;
+ glNormal3f(-1.00, 0.00, -1.00);
+ glVertex3f(-CUBELEN, -CUBEROUND, -CUBEROUND);
+ glVertex3f(-CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBEROUND, -CUBELEN);
+ glVertex3f(-CUBEROUND, -CUBEROUND, -CUBELEN);
+ (*polysP)++;
+ glNormal3f(1.00, 0.00, 1.00);
+ glVertex3f(CUBELEN, -CUBEROUND, CUBEROUND);
+ glVertex3f(CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(CUBEROUND, CUBEROUND, CUBELEN);
+ glVertex3f(CUBEROUND, -CUBEROUND, CUBELEN);
+ (*polysP)++;
+ glNormal3f(1.00, 0.00, -1.00);
+ glVertex3f(CUBEROUND, -CUBEROUND, -CUBELEN);
+ glVertex3f(CUBEROUND, CUBEROUND, -CUBELEN);
+ glVertex3f(CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(CUBELEN, -CUBEROUND, -CUBEROUND);
+ (*polysP)++;
+ glNormal3f(-1.00, 0.00, 1.00);
+ glVertex3f(-CUBEROUND, -CUBEROUND, CUBELEN);
+ glVertex3f(-CUBEROUND, CUBEROUND, CUBELEN);
+ glVertex3f(-CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(-CUBELEN, -CUBEROUND, CUBEROUND);
+ (*polysP)++;
+ glEnd();
+ glBegin(GL_TRIANGLES);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray);
+ /* Corners of cubit */
+ glNormal3f(1.00, 1.00, 1.00);
+ glVertex3f(CUBEROUND, CUBEROUND, CUBELEN);
+ glVertex3f(CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(CUBEROUND, CUBELEN, CUBEROUND);
+ (*polysP)++;
+ glNormal3f(-1.00, -1.00, -1.00);
+ glVertex3f(-CUBEROUND, -CUBELEN, -CUBEROUND);
+ glVertex3f(-CUBELEN, -CUBEROUND, -CUBEROUND);
+ glVertex3f(-CUBEROUND, -CUBEROUND, -CUBELEN);
+ (*polysP)++;
+ glNormal3f(-1.00, 1.00, 1.00);
+ glVertex3f(-CUBEROUND, CUBEROUND, CUBELEN);
+ glVertex3f(-CUBEROUND, CUBELEN, CUBEROUND);
+ (*polysP)++;
+ glVertex3f(-CUBELEN, CUBEROUND, CUBEROUND);
+ glNormal3f(1.00, -1.00, -1.00);
+ glVertex3f(CUBELEN, -CUBEROUND, -CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBELEN, -CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBEROUND, -CUBELEN);
+ (*polysP)++;
+ glNormal3f(1.00, -1.00, 1.00);
+ glVertex3f(CUBEROUND, -CUBEROUND, CUBELEN);
+ glVertex3f(CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(CUBELEN, -CUBEROUND, CUBEROUND);
+ (*polysP)++;
+ glNormal3f(-1.00, 1.00, -1.00);
+ glVertex3f(-CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBELEN, -CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBEROUND, -CUBELEN);
+ (*polysP)++;
+ glNormal3f(-1.00, -1.00, 1.00);
+ glVertex3f(-CUBEROUND, -CUBEROUND, CUBELEN);
+ glVertex3f(-CUBELEN, -CUBEROUND, CUBEROUND);
+ glVertex3f(-CUBEROUND, -CUBELEN, CUBEROUND);
+ (*polysP)++;
+ glNormal3f(1.00, 1.00, -1.00);
+ glVertex3f(CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(CUBEROUND, CUBEROUND, -CUBELEN);
+ glVertex3f(CUBEROUND, CUBELEN, -CUBEROUND);
+ (*polysP)++;
+ glEnd();
+ return True;
+}
+
+static Bool
+draw_cubit(ModeInfo * mi,
+ int back, int front, int left, int right, int bottom, int top,
+ unsigned long *polysP)
+{
+ rubikstruct *rp = &rubik[MI_SCREEN(mi)];
+ int mono = MI_IS_MONO(mi);
+
+ if (!draw_stickerless_cubit(rp, polysP))
+ return False;
+ if (back != NO_FACE) {