static void ltgl_init(void) { glu_quadric_object = gluNewQuadric(); if (glu_quadric_object == NULL) { fprintf(stderr, "ltgl_init: gluNewQuadric() failed\n"); exit(EXIT_FAILURE); } gluQuadricCallback(glu_quadric_object, GLU_ERROR, glu_quadric_error); gluQuadricNormals(glu_quadric_object, GLU_FLAT); /* Ausgabefenster definieren */ glutInitWindowPosition(0, 0); glutInitWindowSize(640, 480); /* Renderkontext mit Z-Buffer, Doublebuffer fuer RGB-Modus anfordern. */ glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE); if (glutCreateWindow(prgname) == GL_FALSE) exit(1); /* Callback Funktionen vereinbaren */ glutReshapeFunc(ltgl_reshape); glutKeyboardFunc(ltgl_key); glutSpecialFunc(ltgl_special_key); glutDisplayFunc(ltgl_display); glutMouseFunc(ltgl_mouse); glutMotionFunc(ltgl_motion); /* enable z-buffer */ glEnable(GL_DEPTH_TEST); /* Vorder- u. Rueckseite der Polygone nur als Randlinien darstellen */ glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); }
inline void Key::makeQuadric() { _quadricObj = gluNewQuadric(); gluQuadricCallback(_quadricObj, GLU_ERROR, 0); gluQuadricDrawStyle(_quadricObj, GLU_FILL); gluQuadricOrientation(_quadricObj, GLU_OUTSIDE); gluQuadricNormals(_quadricObj, GLU_SMOOTH); gluQuadricTexture(_quadricObj, GL_FALSE); }
static void init(void) { GLUquadricObj *qobj; GLfloat mat_ambient[] = { 0.5, 0.5, 0.5, 1.0 }; GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; GLfloat model_ambient[] = { 0.5, 0.5, 0.5, 1.0 }; glClearColor(0.0, 0.0, 0.0, 0.0); glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, model_ambient); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_DEPTH_TEST); /* Create 4 display lists, each with a different quadric object. * Different drawing styles and surface normal specifications * are demonstrated. */ startList = glGenLists(4); qobj = gluNewQuadric(); gluQuadricCallback(qobj, GLU_ERROR, (GLvoid (CALLBACK*) ()) errorCallback); gluQuadricDrawStyle(qobj, GLU_FILL); /* smooth shaded */ gluQuadricNormals(qobj, GLU_SMOOTH); glNewList(startList, GL_COMPILE); gluSphere(qobj, 0.75, 15, 10); glEndList(); gluQuadricDrawStyle(qobj, GLU_FILL); /* flat shaded */ gluQuadricNormals(qobj, GLU_FLAT); glNewList(startList+1, GL_COMPILE); gluCylinder(qobj, 0.5, 0.3, 1.0, 15, 5); glEndList(); gluQuadricDrawStyle(qobj, GLU_LINE); /* all polygons wireframe */ gluQuadricNormals(qobj, GLU_NONE); glNewList(startList+2, GL_COMPILE); gluDisk(qobj, 0.25, 1.0, 20, 4); glEndList(); gluQuadricDrawStyle(qobj, GLU_SILHOUETTE); /* boundary only */ gluQuadricNormals(qobj, GLU_NONE); glNewList(startList+3, GL_COMPILE); gluPartialDisk(qobj, 0.0, 1.0, 20, 4, 0.0, 225.0); glEndList(); gluDeleteQuadric(qobj); }
/* Creates a new quadric. */ JNIEXPORT jlong JNICALL Java_OpenGL_GLUQuadric_newQuadric (JNIEnv *env, jobject obj) { GLUquadric *newQuadric = gluNewQuadric(); if (NULL != newQuadric) { gluQuadricCallback(newQuadric, GLU_ERROR, error); } return FROM_POINTER(newQuadric); }
void GLElbowFlexWidget::initializeGL() { glClearColor(0.0, 0.0, 0.0, 0.0); list = glGenLists(LIST_LENGTH); GLUquadricObj* qobj = gluNewQuadric(); gluQuadricCallback(qobj, GLU_ERROR, errorCallback); headSilhouette(qobj); headSolid(qobj); gluDeleteQuadric(qobj); }
/* Creates a new quadric. */ JNIEXPORT jlong JNICALL Java_OpenGL_GLUQuadric_newQuadric (JNIEnv *env, jobject obj) { GLUquadric *newQuadric = gluNewQuadric(); if (NULL != newQuadric) { /* The cast is required because the gluQuadricCallback * lies about it's type; _GLUfuncptr is declared not to take * any arguments, although gluQuadricCallback takes an * integer. */ gluQuadricCallback(newQuadric, GLU_ERROR, (_GLUfuncptr)error); } return FROM_POINTER(newQuadric); }
GLint makelampdlists(Bool ismono) { GLint mainlistindex; int iterator; GLint mono_on, mono_off, redon, redoff, yellowon, yellowoff; GLint fourbank1, fourbank2, fourbank3, fourbank4; GLint elevenbank1, elevenbank2, elevenbank3, elevenbank4; GLint elevenbank5, elevenbank6, elevenbank7, elevenbank8; GLint elevenbank9, elevenbank10, elevenbank11; GLUquadricObj * circlebank; GLfloat elevenbankoffset = 0.35; GLfloat fourbankverts[20][3] = { {-6.975000, 1.700000, 1.000000}, {-7.491623, 1.597237, 1.000000}, {-7.929594, 1.304594, 1.000000}, {-8.222237, 0.866623, 1.000000}, {-8.325000, 0.350000, 1.000000}, {-8.325000, -0.350000, 1.000000}, {-8.222237, -0.866623, 1.000000}, {-7.929594, -1.304594, 1.000000}, {-7.491623, -1.597237, 1.000000}, {-6.975000, -1.700000, 1.000000}, {6.975000, -1.700000, 1.000000}, {7.491623, -1.597237, 1.000000}, {7.929594, -1.304594, 1.000000}, {8.222237, -0.866623, 1.000000}, {8.325000, -0.350000, 1.000000}, {8.325000, 0.350000, 1.000000}, {8.222237, 0.866623, 1.000000}, {7.929594, 1.304594, 1.000000}, {7.491623, 1.597237, 1.000000}, {6.975000, 1.700000, 1.000000}}; GLfloat elevenbankverts[20][3] = { {-5.650000, 1.700000, 1.000000}, {-6.166623, 1.597237, 1.000000}, {-6.604594, 1.304594, 1.000000}, {-6.897237, 0.866623, 1.000000}, {-7.000000, 0.350000, 1.000000}, {-7.000000, -0.350000, 1.000000}, {-6.897237, -0.866623, 1.000000}, {-6.604594, -1.304594, 1.000000}, {-6.166623, -1.597237, 1.000000}, {-5.650000, -1.700000, 1.000000}, {5.650000, -1.700000, 1.000000}, {6.166623, -1.597237, 1.000000}, {6.604594, -1.304594, 1.000000}, {6.897237, -0.866623, 1.000000}, {7.000000, -0.350000, 1.000000}, {7.000000, 0.350000, 1.000000}, {6.897237, 0.866623, 1.000000}, {6.604594, 1.304594, 1.000000}, {6.166623, 1.597237, 1.000000}, {5.650000, 1.700000, 1.000000}}; GLfloat mono_on_ambient[] = {0.0, 0.0, 0.0, 1.0}; GLfloat mono_on_diffuse[] = {0.0, 0.0, 0.0, 1.0}; GLfloat mono_on_specular[] = {0., 0., 0., 1.}; GLfloat mono_on_emission[] = {1.0, 1.0, 1.0, 1.0}; GLfloat mono_on_shininess = 0.0; GLfloat mono_off_ambient[] = {0., 0., 0.0, 1.}; GLfloat mono_off_diffuse[] = {0., 0., 0.0, 1.}; GLfloat mono_off_specular[] = {0.6, 0.6, 0.6, 1.0}; GLfloat mono_off_emission[] = {0., 0., 0., 1.}; GLfloat mono_off_shininess = 0.7; GLfloat redon_ambient[] = {0.0, 0.0, 0., 1.0}; GLfloat redon_diffuse[] = {0.0, 0.0, 0.0, 1.0}; GLfloat redon_specular[] = {0.0, 0.0, 0.0, 1.0}; GLfloat redon_emission[] = {1.0, 0.0, 0., 1.0}; GLfloat redon_shininess = 0.0; GLfloat redoff_ambient[] = {0.15, 0.05, 0.05, 1.}; GLfloat redoff_diffuse[] = {0.15, 0.05, 0.05, 1.}; GLfloat redoff_specular[] = {0.7, 0.7, 0.7, 1.0}; GLfloat redoff_emission[] = {0., 0., 0., 1.}; GLfloat redoff_shininess = 0.7; GLfloat yellowon_ambient[] = {0.0, 0.0, 0.0, 1.0}; GLfloat yellowon_diffuse[] = {0.0, 0.0, 0.0, 1.0}; GLfloat yellowon_specular[] = {0., 0., 0., 1.}; GLfloat yellowon_emission[] = {1.0, 1.0, 0.0, 1.0}; GLfloat yellowon_shininess = 0.0; GLfloat yellowoff_ambient[] = {0.15, 0.15, 0.0, 1.}; GLfloat yellowoff_diffuse[] = {0.15, 0.15, 0.0, 1.}; GLfloat yellowoff_specular[] = {0.6, 0.6, 0.2, 1.0}; GLfloat yellowoff_emission[] = {0., 0., 0., 1.}; GLfloat yellowoff_shininess = 0.7; circlebank = gluNewQuadric(); gluQuadricCallback(circlebank, GLU_ERROR, (_GLUfuncptr)errorCallback); gluQuadricDrawStyle(circlebank, GLU_FILL); gluQuadricNormals(circlebank, GLU_SMOOTH); if (!ismono) { redon = glGenLists(1); glNewList(redon, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT, redon_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, redon_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, redon_specular); glMaterialfv(GL_FRONT, GL_EMISSION, redon_emission); glMaterialf(GL_FRONT, GL_SHININESS, redon_shininess * 128.0); glEndList(); redoff = glGenLists(1); glNewList(redoff, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT, redoff_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, redoff_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, redoff_specular); glMaterialfv(GL_FRONT, GL_EMISSION, redoff_emission); glMaterialf(GL_FRONT, GL_SHININESS, redoff_shininess * 128.0); glEndList(); yellowon = glGenLists(1); glNewList(yellowon, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT, yellowon_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, yellowon_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, yellowon_specular); glMaterialfv(GL_FRONT, GL_EMISSION, yellowon_emission); glMaterialf(GL_FRONT, GL_SHININESS, yellowon_shininess * 128.0); glEndList(); yellowoff = glGenLists(1); glNewList(yellowoff, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT, yellowoff_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, yellowoff_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, yellowoff_specular); glMaterialfv(GL_FRONT, GL_EMISSION, yellowoff_emission); glMaterialf(GL_FRONT, GL_SHININESS, yellowoff_shininess * 128.0); glEndList(); } else { mono_on = glGenLists(1); glNewList(mono_on, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT, mono_on_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mono_on_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mono_on_specular); glMaterialfv(GL_FRONT, GL_EMISSION, mono_on_emission); glMaterialf(GL_FRONT, GL_SHININESS, mono_on_shininess * 128.0); glEndList(); mono_off = glGenLists(1); glNewList(mono_off, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT, mono_off_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mono_off_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mono_off_specular); glMaterialfv(GL_FRONT, GL_EMISSION, mono_off_emission); glMaterialf(GL_FRONT, GL_SHININESS, mono_off_shininess * 128.0); glEndList(); redon = yellowon = mono_on; redoff = yellowoff = mono_off; } fourbank1 = glGenLists(1); glNewList(fourbank1, GL_COMPILE); glPushMatrix(); glTranslatef(-0.6, 0.0, 0.0); glBegin(GL_POLYGON); glVertex3f(-FOURBANKWIDTH + 0.2, LIGHTBANKHEIGHT, 1.); for (iterator = 0; iterator < 10; iterator ++) { glVertex3fv(fourbankverts[iterator]); } glVertex3f(-FOURBANKWIDTH + 0.2, -LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); fourbank2 = glGenLists(1); glNewList(fourbank2, GL_COMPILE); glPushMatrix(); glTranslatef(-0.2, 0.0, 0.0); glBegin(GL_QUADS); glVertex3f(-FOURBANKWIDTH + 0.2, LIGHTBANKHEIGHT, 1.); glVertex3f(-FOURBANKWIDTH + 0.2, -LIGHTBANKHEIGHT, 1.); glVertex3f(0., -LIGHTBANKHEIGHT, 1.); glVertex3f(0., LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); fourbank3 = glGenLists(1); glNewList(fourbank3, GL_COMPILE); glPushMatrix(); glTranslatef(0.2, 0.0, 0.0); glBegin(GL_QUADS); glVertex3f(0., LIGHTBANKHEIGHT, 1.); glVertex3f(0., -LIGHTBANKHEIGHT, 1.); glVertex3f(FOURBANKWIDTH - 0.2, -LIGHTBANKHEIGHT, 1.); glVertex3f(FOURBANKWIDTH - 0.2, LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); fourbank4 = glGenLists(1); glNewList(fourbank4, GL_COMPILE); glPushMatrix(); glTranslatef(0.6, 0.0, 0.0); glBegin(GL_POLYGON); glVertex3f(FOURBANKWIDTH - 0.2, -LIGHTBANKHEIGHT, 1.); for (iterator = 10; iterator < 20; iterator ++) { glVertex3fv(fourbankverts[iterator]); } glVertex3f(FOURBANKWIDTH - 0.2, LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); elevenbank1 = glGenLists(1); glNewList(elevenbank1, GL_COMPILE); glPushMatrix(); glTranslatef((-elevenbankoffset * 5) - 0.15, 0.0, 0.0); glBegin(GL_POLYGON); glVertex3f((-ELEVENBANKWIDTH * 9) + 0.1, LIGHTBANKHEIGHT, 1.); for (iterator = 0; iterator < 10; iterator ++) { glVertex3fv(elevenbankverts[iterator]); } glVertex3f((-ELEVENBANKWIDTH * 9) + 0.1, -LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); elevenbank2 = glGenLists(1); glNewList(elevenbank2, GL_COMPILE); glPushMatrix(); glTranslatef(-elevenbankoffset * 4, 0.0, 0.0); glBegin(GL_QUADS); glVertex3f(-ELEVENBANKWIDTH * 9, LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH * 9, -LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH * 7, -LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH * 7, LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); elevenbank3 = glGenLists(1); glNewList(elevenbank3, GL_COMPILE); glPushMatrix(); glTranslatef(-elevenbankoffset * 3, 0.0, 0.0); glBegin(GL_QUADS); glVertex3f(-ELEVENBANKWIDTH * 7, LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH * 7, -LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH * 5, -LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH * 5, LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); elevenbank4 = glGenLists(1); glNewList(elevenbank4, GL_COMPILE); glPushMatrix(); glTranslatef(-elevenbankoffset * 2, 0.0, 0.0); glBegin(GL_QUADS); glVertex3f(-ELEVENBANKWIDTH * 5, LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH * 5, -LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH * 3, -LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH * 3, LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); elevenbank5 = glGenLists(1); glNewList(elevenbank5, GL_COMPILE); glPushMatrix(); glTranslatef(-elevenbankoffset, 0.0, 0.0); glBegin(GL_QUADS); glVertex3f(-ELEVENBANKWIDTH * 3, LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH * 3, -LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH, -LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH, LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); elevenbank6 = glGenLists(1); glNewList(elevenbank6, GL_COMPILE); glPushMatrix(); glBegin(GL_QUADS); glVertex3f(-ELEVENBANKWIDTH, LIGHTBANKHEIGHT, 1.); glVertex3f(-ELEVENBANKWIDTH, -LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH, -LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH, LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); elevenbank7 = glGenLists(1); glNewList(elevenbank7, GL_COMPILE); glPushMatrix(); glTranslatef(elevenbankoffset, 0.0, 0.0); glBegin(GL_QUADS); glVertex3f(ELEVENBANKWIDTH, LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH, -LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH * 3, -LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH * 3, LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); elevenbank8 = glGenLists(1); glNewList(elevenbank8, GL_COMPILE); glPushMatrix(); glTranslatef(elevenbankoffset * 2, 0.0, 0.0); glBegin(GL_QUADS); glVertex3f(ELEVENBANKWIDTH * 3, LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH * 3, -LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH * 5, -LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH * 5, LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); elevenbank9 = glGenLists(1); glNewList(elevenbank9, GL_COMPILE); glPushMatrix(); glTranslatef(elevenbankoffset * 3, 0.0, 0.0); glBegin(GL_QUADS); glVertex3f(ELEVENBANKWIDTH * 5, LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH * 5, -LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH * 7, -LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH * 7, LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); elevenbank10 = glGenLists(1); glNewList(elevenbank10, GL_COMPILE); glPushMatrix(); glTranslatef(elevenbankoffset * 4, 0.0, 0.0); glBegin(GL_QUADS); glVertex3f(ELEVENBANKWIDTH * 7, LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH * 7, -LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH * 9, -LIGHTBANKHEIGHT, 1.); glVertex3f(ELEVENBANKWIDTH * 9, LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); elevenbank11 = glGenLists(1); glNewList(elevenbank11, GL_COMPILE); glPushMatrix(); glTranslatef((elevenbankoffset * 5) + 0.15, 0.0, 0.0); glBegin(GL_POLYGON); glVertex3f((ELEVENBANKWIDTH * 9) - 0.1, -LIGHTBANKHEIGHT, 1.); for (iterator = 10; iterator < 20; iterator ++) { glVertex3fv(elevenbankverts[iterator]); } glVertex3f((ELEVENBANKWIDTH * 9) - 0.1, LIGHTBANKHEIGHT, 1.); glEnd(); glPopMatrix(); glEndList(); /* ----- end setup lists, begin actual time-referenced banks to be used in display function */ mainlistindex = glGenLists(52); /* single hour banks (second row) */ glNewList (mainlistindex + HR1OFFSET + 0, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glCallList(redoff); glCallList(fourbank1); glCallList(fourbank2); glCallList(fourbank3); glCallList(fourbank4); glPopMatrix(); glEndList(); glNewList (mainlistindex + HR1OFFSET + 1, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glCallList(redon); glCallList(fourbank1); glCallList(redoff); glCallList(fourbank2); glCallList(fourbank3); glCallList(fourbank4); glPopMatrix(); glEndList(); glNewList (mainlistindex + HR1OFFSET + 2, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glCallList(redon); glCallList(fourbank1); glCallList(fourbank2); glCallList(redoff); glCallList(fourbank3); glCallList(fourbank4); glPopMatrix(); glEndList(); glNewList (mainlistindex + HR1OFFSET + 3, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glCallList(redon); glCallList(fourbank1); glCallList(fourbank2); glCallList(fourbank3); glCallList(redoff); glCallList(fourbank4); glPopMatrix(); glEndList(); glNewList (mainlistindex + HR1OFFSET + 4, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glCallList(redon); glCallList(fourbank1); glCallList(fourbank2); glCallList(fourbank3); glCallList(fourbank4); glPopMatrix(); glEndList(); /* ----- five hour banks (top row)---------------------- */ glNewList (mainlistindex + HR5OFFSET + 0, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., 5., 0.); glCallList(redoff); glCallList(fourbank1); glCallList(fourbank2); glCallList(fourbank3); glCallList(fourbank4); glPopMatrix(); glEndList(); glNewList (mainlistindex + HR5OFFSET + 1, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., 5., 0.); glCallList(redon); glCallList(fourbank1); glCallList(redoff); glCallList(fourbank2); glCallList(fourbank3); glCallList(fourbank4); glPopMatrix(); glEndList(); glNewList (mainlistindex + HR5OFFSET + 2, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., 5., 0.); glCallList(redon); glCallList(fourbank1); glCallList(fourbank2); glCallList(redoff); glCallList(fourbank3); glCallList(fourbank4); glPopMatrix(); glEndList(); glNewList (mainlistindex + HR5OFFSET + 3, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., 5., 0.); glCallList(redon); glCallList(fourbank1); glCallList(fourbank2); glCallList(fourbank3); glCallList(redoff); glCallList(fourbank4); glPopMatrix(); glEndList(); glNewList (mainlistindex + HR5OFFSET + 4, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., 5., 0.); glCallList(redon); glCallList(fourbank1); glCallList(fourbank2); glCallList(fourbank3); glCallList(fourbank4); glPopMatrix(); glEndList(); /* ------- single minute banks (bottom row)------------------------------ */ glNewList (mainlistindex + MIN1OFFSET + 0, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -10., 0.); glCallList(yellowoff); glCallList(fourbank1); glCallList(fourbank2); glCallList(fourbank3); glCallList(fourbank4); glPopMatrix(); glEndList(); glNewList (mainlistindex + MIN1OFFSET + 1, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -10., 0.); glCallList(yellowon); glCallList(fourbank1); glCallList(yellowoff); glCallList(fourbank2); glCallList(fourbank3); glCallList(fourbank4); glPopMatrix(); glEndList(); glNewList (mainlistindex + MIN1OFFSET + 2, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -10., 0.); glCallList(yellowon); glCallList(fourbank1); glCallList(fourbank2); glCallList(yellowoff); glCallList(fourbank3); glCallList(fourbank4); glPopMatrix(); glEndList(); glNewList (mainlistindex + MIN1OFFSET + 3, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -10., 0.); glCallList(yellowon); glCallList(fourbank1); glCallList(fourbank2); glCallList(fourbank3); glCallList(yellowoff); glCallList(fourbank4); glPopMatrix(); glEndList(); glNewList (mainlistindex + MIN1OFFSET + 4, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -10., 0.); glCallList(yellowon); glCallList(fourbank1); glCallList(fourbank2); glCallList(fourbank3); glCallList(fourbank4); glPopMatrix(); glEndList(); /* -----five minute banks (third row) ----------------------- */ glNewList(mainlistindex + MIN5OFFSET + 0, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -5., 0.); glCallList(yellowoff); glCallList(elevenbank1); glCallList(elevenbank2); glCallList(elevenbank4); glCallList(elevenbank5); glCallList(elevenbank7); glCallList(elevenbank8); glCallList(elevenbank10); glCallList(elevenbank11); glCallList(redoff); glCallList(elevenbank3); glCallList(elevenbank6); glCallList(elevenbank9); glPopMatrix(); glEndList(); glNewList(mainlistindex + MIN5OFFSET + 1, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -5., 0.); glCallList(yellowon); glCallList(elevenbank1); glCallList(yellowoff); glCallList(elevenbank2); glCallList(elevenbank4); glCallList(elevenbank5); glCallList(elevenbank7); glCallList(elevenbank8); glCallList(elevenbank10); glCallList(elevenbank11); glCallList(redoff); glCallList(elevenbank3); glCallList(elevenbank6); glCallList(elevenbank9); glPopMatrix(); glEndList(); glNewList(mainlistindex + MIN5OFFSET + 2, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -5., 0.); glCallList(yellowon); glCallList(elevenbank1); glCallList(elevenbank2); glCallList(yellowoff); glCallList(elevenbank4); glCallList(elevenbank5); glCallList(elevenbank7); glCallList(elevenbank8); glCallList(elevenbank10); glCallList(elevenbank11); glCallList(redoff); glCallList(elevenbank3); glCallList(elevenbank6); glCallList(elevenbank9); glPopMatrix(); glEndList(); glNewList(mainlistindex + MIN5OFFSET + 3, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -5., 0.); glCallList(yellowon); glCallList(elevenbank1); glCallList(elevenbank2); glCallList(yellowoff); glCallList(elevenbank4); glCallList(elevenbank5); glCallList(elevenbank7); glCallList(elevenbank8); glCallList(elevenbank10); glCallList(elevenbank11); glCallList(redon); glCallList(elevenbank3); glCallList(redoff); glCallList(elevenbank6); glCallList(elevenbank9); glPopMatrix(); glEndList(); glNewList(mainlistindex + MIN5OFFSET + 4, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -5., 0.); glCallList(yellowon); glCallList(elevenbank1); glCallList(elevenbank2); glCallList(elevenbank4); glCallList(yellowoff); glCallList(elevenbank5); glCallList(elevenbank7); glCallList(elevenbank8); glCallList(elevenbank10); glCallList(elevenbank11); glCallList(redon); glCallList(elevenbank3); glCallList(redoff); glCallList(elevenbank6); glCallList(elevenbank9); glPopMatrix(); glEndList(); glNewList(mainlistindex + MIN5OFFSET + 5, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -5., 0.); glCallList(yellowon); glCallList(elevenbank1); glCallList(elevenbank2); glCallList(elevenbank4); glCallList(elevenbank5); glCallList(yellowoff); glCallList(elevenbank7); glCallList(elevenbank8); glCallList(elevenbank10); glCallList(elevenbank11); glCallList(redon); glCallList(elevenbank3); glCallList(redoff); glCallList(elevenbank6); glCallList(elevenbank9); glPopMatrix(); glEndList(); glNewList(mainlistindex + MIN5OFFSET + 6, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -5., 0.); glCallList(yellowon); glCallList(elevenbank1); glCallList(elevenbank2); glCallList(elevenbank4); glCallList(elevenbank5); glCallList(yellowoff); glCallList(elevenbank7); glCallList(elevenbank8); glCallList(elevenbank10); glCallList(elevenbank11); glCallList(redon); glCallList(elevenbank3); glCallList(elevenbank6); glCallList(redoff); glCallList(elevenbank9); glPopMatrix(); glEndList(); glNewList(mainlistindex + MIN5OFFSET + 7, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -5., 0.); glCallList(yellowon); glCallList(elevenbank1); glCallList(elevenbank2); glCallList(elevenbank4); glCallList(elevenbank5); glCallList(elevenbank7); glCallList(yellowoff); glCallList(elevenbank8); glCallList(elevenbank10); glCallList(elevenbank11); glCallList(redon); glCallList(elevenbank3); glCallList(elevenbank6); glCallList(redoff); glCallList(elevenbank9); glPopMatrix(); glEndList(); glNewList(mainlistindex + MIN5OFFSET + 8, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -5., 0.); glCallList(yellowon); glCallList(elevenbank1); glCallList(elevenbank2); glCallList(elevenbank4); glCallList(elevenbank5); glCallList(elevenbank7); glCallList(elevenbank8); glCallList(yellowoff); glCallList(elevenbank10); glCallList(elevenbank11); glCallList(redon); glCallList(elevenbank3); glCallList(elevenbank6); glCallList(redoff); glCallList(elevenbank9); glPopMatrix(); glEndList(); glNewList(mainlistindex + MIN5OFFSET + 9, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -5., 0.); glCallList(yellowon); glCallList(elevenbank1); glCallList(elevenbank2); glCallList(elevenbank4); glCallList(elevenbank5); glCallList(elevenbank7); glCallList(elevenbank8); glCallList(yellowoff); glCallList(elevenbank10); glCallList(elevenbank11); glCallList(redon); glCallList(elevenbank3); glCallList(elevenbank6); glCallList(elevenbank9); glPopMatrix(); glEndList(); glNewList(mainlistindex + MIN5OFFSET + 10, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -5., 0.); glCallList(yellowon); glCallList(elevenbank1); glCallList(elevenbank2); glCallList(elevenbank4); glCallList(elevenbank5); glCallList(elevenbank7); glCallList(elevenbank8); glCallList(elevenbank10); glCallList(yellowoff); glCallList(elevenbank11); glCallList(redon); glCallList(elevenbank3); glCallList(elevenbank6); glCallList(elevenbank9); glPopMatrix(); glEndList(); glNewList(mainlistindex + MIN5OFFSET + 11, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., -5., 0.); glCallList(yellowon); glCallList(elevenbank1); glCallList(elevenbank2); glCallList(elevenbank4); glCallList(elevenbank5); glCallList(elevenbank7); glCallList(elevenbank8); glCallList(elevenbank10); glCallList(elevenbank11); glCallList(redon); glCallList(elevenbank3); glCallList(elevenbank6); glCallList(elevenbank9); glPopMatrix(); glEndList(); /* -----seconds banks (topknot) ------------------------------- */ glNewList(mainlistindex + SECOFFSET + 0, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., 10., 1.); glCallList(yellowoff); gluDisk(circlebank, 0, 2.2, 24, 16); glPopMatrix(); glEndList(); glNewList(mainlistindex + SECOFFSET + 1, GL_COMPILE); glNormal3f(0.0, 0.0, 1.0); glPushMatrix(); glTranslatef(0., 10., 1.); glCallList(yellowon); gluDisk(circlebank, 0, 2.2, 24, 16); glPopMatrix(); glEndList(); handleGLerrors("makelampdlists"); return (mainlistindex); }
GLint makebclockhousing(void){ GLuint dlistindex; GLUquadricObj * pole; int iterator; GLuint banklistindex; GLuint connectlistindex; GLuint secconnectlistindex; GLfloat steel_ambient[] = {0.19225, 0.19225, 0.19225, 1.0}; GLfloat steel_diffuse[] = {0.50754, 0.50754, 0.50754, 1.0}; GLfloat steel_specular[] = {0.508273, 0.508273, 0.508273, 1.0}; GLfloat steel_emission[] = {0.0, 0.0, 0.0, 1.0}; GLfloat steel_shininess = 0.4; banklistindex = makebankdlist(); connectlistindex = makeconnectdlist(); secconnectlistindex = makesecconnectdlist(); pole = gluNewQuadric(); gluQuadricCallback(pole, GLU_ERROR, (_GLUfuncptr)errorCallback); gluQuadricDrawStyle(pole, GLU_FILL); gluQuadricNormals(pole, GLU_SMOOTH); dlistindex = glGenLists(1); glNewList(dlistindex, GL_COMPILE); glMaterialfv(GL_FRONT, GL_AMBIENT, steel_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, steel_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, steel_specular); glMaterialfv(GL_FRONT, GL_EMISSION, steel_emission); glMaterialf(GL_FRONT, GL_SHININESS, steel_shininess * 128.0); /* draw banks, including seconds */ glPushMatrix(); glTranslatef(0.0, -10., 0.); for (iterator = 0; iterator < 4; iterator++) { glCallList(banklistindex); glTranslatef(0.0, 5.0, 0.); } glTranslatef(0.0, 0., -1.0); gluCylinder(pole, 2.5, 2.5, 2, 24, 16); glTranslatef( 0.0, 0.0, 2.0); gluDisk(pole, 0, 2.5, 24, 16); glPopMatrix(); /* draw connectors */ glPushMatrix(); glTranslatef(0., -7.5, 0.); for (iterator = 0; iterator < 3; iterator++) { glPushMatrix(); glTranslatef(-4.5, 0., 0.); glCallList(connectlistindex); glPopMatrix(); glPushMatrix(); glTranslatef(4.5, 0., 0.); glCallList(connectlistindex); glPopMatrix(); glTranslatef(0., 5.0, 0.); } glTranslatef(0., -0.15, 0.); glCallList(secconnectlistindex); glPopMatrix(); /* draw pole */ glPushMatrix(); glRotatef(90.0, 1.0, 0.0, 0.0); glTranslatef(0.0, 0.0, 12.0); gluCylinder(pole, 0.75, 0.75, 20, 16, 12); glPopMatrix(); glEndList(); handleGLerrors("makebclockhousing"); return dlistindex; }