- if (!rp->AreObjectsDefined[ObjCubit]) {
- glNewList(objects + ObjCubit, GL_COMPILE_AND_EXECUTE);
- glBegin(GL_QUADS);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray);
- glNormal3f(0.00, 0.00, 1.00);
- glVertex3f(-0.45, -0.45, 0.50);
- glVertex3f(0.45, -0.45, 0.50);
- glVertex3f(0.45, 0.45, 0.50);
- glVertex3f(-0.45, 0.45, 0.50);
- glNormal3f(0.00, 0.00, -1.00);
- glVertex3f(-0.45, 0.45, -0.50);
- glVertex3f(0.45, 0.45, -0.50);
- glVertex3f(0.45, -0.45, -0.50);
- glVertex3f(-0.45, -0.45, -0.50);
- glNormal3f(-1.00, 0.00, 0.00);
- glVertex3f(-0.50, -0.45, 0.45);
- glVertex3f(-0.50, 0.45, 0.45);
- glVertex3f(-0.50, 0.45, -0.45);
- glVertex3f(-0.50, -0.45, -0.45);
- glNormal3f(1.00, 0.00, 0.00);
- glVertex3f(0.50, -0.45, -0.45);
- glVertex3f(0.50, 0.45, -0.45);
- glVertex3f(0.50, 0.45, 0.45);
- glVertex3f(0.50, -0.45, 0.45);
- glNormal3f(0.00, -1.00, 0.00);
- glVertex3f(0.45, -0.50, -0.45);
- glVertex3f(0.45, -0.50, 0.45);
- glVertex3f(-0.45, -0.50, 0.45);
- glVertex3f(-0.45, -0.50, -0.45);
- glNormal3f(0.00, 1.00, 0.00);
- glVertex3f(-0.45, 0.50, -0.45);
- glVertex3f(-0.45, 0.50, 0.45);
- glVertex3f(0.45, 0.50, 0.45);
- glVertex3f(0.45, 0.50, -0.45);
- glNormal3f(-1.00, -1.00, 0.00);
- glVertex3f(-0.45, -0.50, -0.45);
- glVertex3f(-0.45, -0.50, 0.45);
- glVertex3f(-0.50, -0.45, 0.45);
- glVertex3f(-0.50, -0.45, -0.45);
- glNormal3f(1.00, 1.00, 0.00);
- glVertex3f(0.45, 0.50, -0.45);
- glVertex3f(0.45, 0.50, 0.45);
- glVertex3f(0.50, 0.45, 0.45);
- glVertex3f(0.50, 0.45, -0.45);
- glNormal3f(-1.00, 1.00, 0.00);
- glVertex3f(-0.50, 0.45, -0.45);
- glVertex3f(-0.50, 0.45, 0.45);
- glVertex3f(-0.45, 0.50, 0.45);
- glVertex3f(-0.45, 0.50, -0.45);
- glNormal3f(1.00, -1.00, 0.00);
- glVertex3f(0.50, -0.45, -0.45);
- glVertex3f(0.50, -0.45, 0.45);
- glVertex3f(0.45, -0.50, 0.45);
- glVertex3f(0.45, -0.50, -0.45);
- glNormal3f(0.00, -1.00, -1.00);
- glVertex3f(-0.45, -0.45, -0.50);
- glVertex3f(0.45, -0.45, -0.50);
- glVertex3f(0.45, -0.50, -0.45);
- glVertex3f(-0.45, -0.50, -0.45);
- glNormal3f(0.00, 1.00, 1.00);
- glVertex3f(-0.45, 0.45, 0.50);
- glVertex3f(0.45, 0.45, 0.50);
- glVertex3f(0.45, 0.50, 0.45);
- glVertex3f(-0.45, 0.50, 0.45);
- glNormal3f(0.00, -1.00, 1.00);
- glVertex3f(-0.45, -0.50, 0.45);
- glVertex3f(0.45, -0.50, 0.45);
- glVertex3f(0.45, -0.45, 0.50);
- glVertex3f(-0.45, -0.45, 0.50);
- glNormal3f(0.00, 1.00, -1.00);
- glVertex3f(-0.45, 0.50, -0.45);
- glVertex3f(0.45, 0.50, -0.45);
- glVertex3f(0.45, 0.45, -0.50);
- glVertex3f(-0.45, 0.45, -0.50);
- glNormal3f(-1.00, 0.00, -1.00);
- glVertex3f(-0.50, -0.45, -0.45);
- glVertex3f(-0.50, 0.45, -0.45);
- glVertex3f(-0.45, 0.45, -0.50);
- glVertex3f(-0.45, -0.45, -0.50);
- glNormal3f(1.00, 0.00, 1.00);
- glVertex3f(0.50, -0.45, 0.45);
- glVertex3f(0.50, 0.45, 0.45);
- glVertex3f(0.45, 0.45, 0.50);
- glVertex3f(0.45, -0.45, 0.50);
- glNormal3f(1.00, 0.00, -1.00);
- glVertex3f(0.45, -0.45, -0.50);
- glVertex3f(0.45, 0.45, -0.50);
- glVertex3f(0.50, 0.45, -0.45);
- glVertex3f(0.50, -0.45, -0.45);
- glNormal3f(-1.00, 0.00, 1.00);
- glVertex3f(-0.45, -0.45, 0.50);
- glVertex3f(-0.45, 0.45, 0.50);
- glVertex3f(-0.50, 0.45, 0.45);
- glVertex3f(-0.50, -0.45, 0.45);
- glEnd();
- glBegin(GL_TRIANGLES);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialGray);
- glNormal3f(1.00, 1.00, 1.00);
- glVertex3f(0.45, 0.45, 0.50);
- glVertex3f(0.50, 0.45, 0.45);
- glVertex3f(0.45, 0.50, 0.45);
- glNormal3f(-1.00, -1.00, -1.00);
- glVertex3f(-0.45, -0.50, -0.45);
- glVertex3f(-0.50, -0.45, -0.45);
- glVertex3f(-0.45, -0.45, -0.50);
- glNormal3f(-1.00, 1.00, 1.00);
- glVertex3f(-0.45, 0.45, 0.50);
- glVertex3f(-0.45, 0.50, 0.45);
- glVertex3f(-0.50, 0.45, 0.45);
- glNormal3f(1.00, -1.00, -1.00);
- glVertex3f(0.50, -0.45, -0.45);
- glVertex3f(0.45, -0.50, -0.45);
- glVertex3f(0.45, -0.45, -0.50);
- glNormal3f(1.00, -1.00, 1.00);
- glVertex3f(0.45, -0.45, 0.50);
- glVertex3f(0.45, -0.50, 0.45);
- glVertex3f(0.50, -0.45, 0.45);
- glNormal3f(-1.00, 1.00, -1.00);
- glVertex3f(-0.50, 0.45, -0.45);
- glVertex3f(-0.45, 0.50, -0.45);
- glVertex3f(-0.45, 0.45, -0.50);
- glNormal3f(-1.00, -1.00, 1.00);
- glVertex3f(-0.45, -0.45, 0.50);
- glVertex3f(-0.50, -0.45, 0.45);
- glVertex3f(-0.45, -0.50, 0.45);
- glNormal3f(1.00, 1.00, -1.00);
- glVertex3f(0.50, 0.45, -0.45);
- glVertex3f(0.45, 0.45, -0.50);
- glVertex3f(0.45, 0.50, -0.45);
- glEnd();
- glEndList();
- rp->AreObjectsDefined[ObjCubit] = 1;
-#ifdef DEBUG_LISTS
- (void) printf("Cubit drawn SLOWLY\n");
-#endif
- } else {
- glCallList(objects + ObjCubit);
-#ifdef DEBUG_LISTS
- (void) printf("Cubit drawn quickly\n");
-#endif
- }
+static int
+sizeFace(rubikstruct * rp, int face)
+{
+ int sizeOfRow, sizeOfColumn;
+
+ faceSizes(rp, face, &sizeOfRow, &sizeOfColumn);
+ return (sizeOfRow * sizeOfColumn);
+}
+
+static int
+sizeRow(rubikstruct * rp, int face)
+{
+ int sizeOfRow, sizeOfColumn; /* sizeOfColumn not used */
+
+ faceSizes(rp, face, &sizeOfRow, &sizeOfColumn);
+ return sizeOfRow;
+}
+
+static Bool
+draw_stickerless_cubit(rubikstruct *rp)
+{
+ 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);
+ glNormal3f(0.00, 0.00, -1.00);
+ glVertex3f(-CUBEROUND, CUBEROUND, -CUBELEN);
+ glVertex3f(CUBEROUND, CUBEROUND, -CUBELEN);
+ glVertex3f(CUBEROUND, -CUBEROUND, -CUBELEN);
+ glVertex3f(-CUBEROUND, -CUBEROUND, -CUBELEN);
+ glNormal3f(-1.00, 0.00, 0.00);
+ glVertex3f(-CUBELEN, -CUBEROUND, CUBEROUND);
+ glVertex3f(-CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(-CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(-CUBELEN, -CUBEROUND, -CUBEROUND);
+ glNormal3f(1.00, 0.00, 0.00);
+ glVertex3f(CUBELEN, -CUBEROUND, -CUBEROUND);
+ glVertex3f(CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(CUBELEN, -CUBEROUND, CUBEROUND);
+ glNormal3f(0.00, -1.00, 0.00);
+ glVertex3f(CUBEROUND, -CUBELEN, -CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(-CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(-CUBEROUND, -CUBELEN, -CUBEROUND);
+ glNormal3f(0.00, 1.00, 0.00);
+ glVertex3f(-CUBEROUND, CUBELEN, -CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBELEN, CUBEROUND);
+ glVertex3f(CUBEROUND, CUBELEN, CUBEROUND);
+ glVertex3f(CUBEROUND, CUBELEN, -CUBEROUND);
+
+ /* 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);
+ glNormal3f(1.00, 1.00, 0.00);
+ glVertex3f(CUBEROUND, CUBELEN, -CUBEROUND);
+ glVertex3f(CUBEROUND, CUBELEN, CUBEROUND);
+ glVertex3f(CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(CUBELEN, CUBEROUND, -CUBEROUND);
+ glNormal3f(-1.00, 1.00, 0.00);
+ glVertex3f(-CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(-CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBELEN, CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBELEN, -CUBEROUND);
+ glNormal3f(1.00, -1.00, 0.00);
+ glVertex3f(CUBELEN, -CUBEROUND, -CUBEROUND);
+ glVertex3f(CUBELEN, -CUBEROUND, CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBELEN, -CUBEROUND);
+ glNormal3f(0.00, -1.00, -1.00);
+ glVertex3f(-CUBEROUND, -CUBEROUND, -CUBELEN);
+ glVertex3f(CUBEROUND, -CUBEROUND, -CUBELEN);
+ glVertex3f(CUBEROUND, -CUBELEN, -CUBEROUND);
+ glVertex3f(-CUBEROUND, -CUBELEN, -CUBEROUND);
+ glNormal3f(0.00, 1.00, 1.00);
+ glVertex3f(-CUBEROUND, CUBEROUND, CUBELEN);
+ glVertex3f(CUBEROUND, CUBEROUND, CUBELEN);
+ glVertex3f(CUBEROUND, CUBELEN, CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBELEN, CUBEROUND);
+ glNormal3f(0.00, -1.00, 1.00);
+ glVertex3f(-CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBEROUND, CUBELEN);
+ glVertex3f(-CUBEROUND, -CUBEROUND, CUBELEN);
+ glNormal3f(0.00, 1.00, -1.00);
+ glVertex3f(-CUBEROUND, CUBELEN, -CUBEROUND);
+ glVertex3f(CUBEROUND, CUBELEN, -CUBEROUND);
+ glVertex3f(CUBEROUND, CUBEROUND, -CUBELEN);
+ glVertex3f(-CUBEROUND, CUBEROUND, -CUBELEN);
+ glNormal3f(-1.00, 0.00, -1.00);
+ glVertex3f(-CUBELEN, -CUBEROUND, -CUBEROUND);
+ glVertex3f(-CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBEROUND, -CUBELEN);
+ glVertex3f(-CUBEROUND, -CUBEROUND, -CUBELEN);
+ glNormal3f(1.00, 0.00, 1.00);
+ glVertex3f(CUBELEN, -CUBEROUND, CUBEROUND);
+ glVertex3f(CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(CUBEROUND, CUBEROUND, CUBELEN);
+ glVertex3f(CUBEROUND, -CUBEROUND, CUBELEN);
+ glNormal3f(1.00, 0.00, -1.00);
+ glVertex3f(CUBEROUND, -CUBEROUND, -CUBELEN);
+ glVertex3f(CUBEROUND, CUBEROUND, -CUBELEN);
+ glVertex3f(CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(CUBELEN, -CUBEROUND, -CUBEROUND);
+ glNormal3f(-1.00, 0.00, 1.00);
+ glVertex3f(-CUBEROUND, -CUBEROUND, CUBELEN);
+ glVertex3f(-CUBEROUND, CUBEROUND, CUBELEN);
+ glVertex3f(-CUBELEN, CUBEROUND, CUBEROUND);
+ glVertex3f(-CUBELEN, -CUBEROUND, CUBEROUND);
+ 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);
+ glNormal3f(-1.00, -1.00, -1.00);
+ glVertex3f(-CUBEROUND, -CUBELEN, -CUBEROUND);
+ glVertex3f(-CUBELEN, -CUBEROUND, -CUBEROUND);
+ glVertex3f(-CUBEROUND, -CUBEROUND, -CUBELEN);
+ glNormal3f(-1.00, 1.00, 1.00);
+ glVertex3f(-CUBEROUND, CUBEROUND, CUBELEN);
+ glVertex3f(-CUBEROUND, CUBELEN, CUBEROUND);
+ glVertex3f(-CUBELEN, CUBEROUND, CUBEROUND);
+ glNormal3f(1.00, -1.00, -1.00);
+ glVertex3f(CUBELEN, -CUBEROUND, -CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBELEN, -CUBEROUND);
+ glVertex3f(CUBEROUND, -CUBEROUND, -CUBELEN);
+ glNormal3f(1.00, -1.00, 1.00);
+ glVertex3f(CUBEROUND, -CUBEROUND, CUBELEN);
+ glVertex3f(CUBEROUND, -CUBELEN, CUBEROUND);
+ glVertex3f(CUBELEN, -CUBEROUND, CUBEROUND);
+ glNormal3f(-1.00, 1.00, -1.00);
+ glVertex3f(-CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBELEN, -CUBEROUND);
+ glVertex3f(-CUBEROUND, CUBEROUND, -CUBELEN);
+ glNormal3f(-1.00, -1.00, 1.00);
+ glVertex3f(-CUBEROUND, -CUBEROUND, CUBELEN);
+ glVertex3f(-CUBELEN, -CUBEROUND, CUBEROUND);
+ glVertex3f(-CUBEROUND, -CUBELEN, CUBEROUND);
+ glNormal3f(1.00, 1.00, -1.00);
+ glVertex3f(CUBELEN, CUBEROUND, -CUBEROUND);
+ glVertex3f(CUBEROUND, CUBEROUND, -CUBELEN);
+ glVertex3f(CUBEROUND, CUBELEN, -CUBEROUND);
+ glEnd();
+ return True;
+}
+
+static Bool
+draw_cubit(ModeInfo * mi,
+ int back, int front, int left, int right, int bottom, int top)
+{
+ rubikstruct *rp = &rubik[MI_SCREEN(mi)];
+ int mono = MI_IS_MONO(mi);