static void draw(CompScreen* s, ScreenPaintAttrib *sAttrib, int output, GLint gear1, GLint gear2, GLint gear3, GLfloat angle) { glPushMatrix(); CompTransform sTransform; memcpy (sTransform.m, identity, sizeof (float) * 16); (*s->applyScreenTransform) (s, sAttrib, output, &sTransform); glLoadMatrixf (sTransform.m); prepareXCoords (s, output, -sAttrib->zTranslate); glTranslatef(s->width / 2, s->height / 2, 0.5f); glScalef (s->width, -s->height, 1.0f); glTranslatef (0.0f, 0.0f, -40.0f); glPushMatrix(); glTranslatef(-3.0, -2.0, 0.0); glRotatef(angle, 0.0, 0.0, 1.0); glCallList(gear1); glPopMatrix(); glPushMatrix(); glTranslatef(3.1, -2.0, 0.0); glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0); glCallList(gear2); glPopMatrix(); glPushMatrix(); glTranslatef(-3.1, 4.2, 0.0); glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0); glCallList(gear3); glPopMatrix(); glPopMatrix(); }