+ if c == '\n':
+ glPushMatrix()
+ glTranslate(0, 18 * n, 0)
+ n += 1
+ glRasterPos2f(0, 0)
+ glPopMatrix()
+ else:
+ glutBitmapCharacter(OpenGL.GLUT.GLUT_BITMAP_HELVETICA_18, ord(c))
+
+def glDrawStringRight(s):
+ glRasterPos2f(0, 0)
+ glBitmap(0,0,0,0, -glGetStringSize(s)[0], 0, None)
+ for c in s:
+ glutBitmapCharacter(OpenGL.GLUT.GLUT_BITMAP_HELVETICA_18, ord(c))
+
+def glDrawQuad(x, y, w, h):
+ glPushMatrix()
+ glTranslatef(x, y, 0)
+ glDisable(GL_TEXTURE_2D)
+ glBegin(GL_QUADS)
+ glVertex2f(w, 0)
+ glVertex2f(0, 0)
+ glVertex2f(0, h)
+ glVertex2f(w, h)
+ glEnd()
+ glPopMatrix()
+
+def glDrawTexturedQuad(x, y, w, h, texID, mirror = 0):
+ tx = float(texID % 4) / 4
+ ty = float(int(texID / 4)) / 8
+ tsx = 0.25
+ tsy = 0.125
+ if mirror & 1:
+ tx += tsx
+ tsx = -tsx
+ if mirror & 2:
+ ty += tsy
+ tsy = -tsy
+ glPushMatrix()
+ glTranslatef(x, y, 0)
+ glEnable(GL_TEXTURE_2D)
+ glBegin(GL_QUADS)
+ glTexCoord2f(tx+tsx, ty)
+ glVertex2f(w, 0)
+ glTexCoord2f(tx, ty)
+ glVertex2f(0, 0)
+ glTexCoord2f(tx, ty+tsy)
+ glVertex2f(0, h)
+ glTexCoord2f(tx+tsx, ty+tsy)
+ glVertex2f(w, h)
+ glEnd()
+ glPopMatrix()
+
+def glDrawStretchedQuad(x, y, w, h, cornerSize, texID):
+ tx0 = float(texID % 4) / 4
+ ty0 = float(int(texID / 4)) / 8
+ tx1 = tx0 + 0.25 / 2.0
+ ty1 = ty0 + 0.125 / 2.0
+ tx2 = tx0 + 0.25
+ ty2 = ty0 + 0.125
+
+ glPushMatrix()
+ glTranslatef(x, y, 0)
+ glEnable(GL_TEXTURE_2D)
+ glBegin(GL_QUADS)
+ #TopLeft
+ glTexCoord2f(tx1, ty0)
+ glVertex2f( cornerSize, 0)
+ glTexCoord2f(tx0, ty0)
+ glVertex2f( 0, 0)
+ glTexCoord2f(tx0, ty1)
+ glVertex2f( 0, cornerSize)
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( cornerSize, cornerSize)
+ #TopRight
+ glTexCoord2f(tx2, ty0)
+ glVertex2f( w, 0)
+ glTexCoord2f(tx1, ty0)
+ glVertex2f( w - cornerSize, 0)
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( w - cornerSize, cornerSize)
+ glTexCoord2f(tx2, ty1)
+ glVertex2f( w, cornerSize)
+ #BottomLeft
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( cornerSize, h - cornerSize)
+ glTexCoord2f(tx0, ty1)
+ glVertex2f( 0, h - cornerSize)
+ glTexCoord2f(tx0, ty2)
+ glVertex2f( 0, h)
+ glTexCoord2f(tx1, ty2)
+ glVertex2f( cornerSize, h)
+ #BottomRight
+ glTexCoord2f(tx2, ty1)
+ glVertex2f( w, h - cornerSize)
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( w - cornerSize, h - cornerSize)
+ glTexCoord2f(tx1, ty2)
+ glVertex2f( w - cornerSize, h)
+ glTexCoord2f(tx2, ty2)
+ glVertex2f( w, h)
+
+ #Center
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( w-cornerSize, cornerSize)
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( cornerSize, cornerSize)
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( cornerSize, h-cornerSize)
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( w-cornerSize, h-cornerSize)
+
+ #Right
+ glTexCoord2f(tx2, ty1)
+ glVertex2f( w, cornerSize)
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( w-cornerSize, cornerSize)
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( w-cornerSize, h-cornerSize)
+ glTexCoord2f(tx2, ty1)
+ glVertex2f( w, h-cornerSize)
+
+ #Left
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( cornerSize, cornerSize)
+ glTexCoord2f(tx0, ty1)
+ glVertex2f( 0, cornerSize)
+ glTexCoord2f(tx0, ty1)
+ glVertex2f( 0, h-cornerSize)
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( cornerSize, h-cornerSize)
+
+ #Top
+ glTexCoord2f(tx1, ty0)
+ glVertex2f( w-cornerSize, 0)
+ glTexCoord2f(tx1, ty0)
+ glVertex2f( cornerSize, 0)
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( cornerSize, cornerSize)
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( w-cornerSize, cornerSize)
+
+ #Bottom
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( w-cornerSize, h-cornerSize)
+ glTexCoord2f(tx1, ty1)
+ glVertex2f( cornerSize, h-cornerSize)
+ glTexCoord2f(tx1, ty2)
+ glVertex2f( cornerSize, h)
+ glTexCoord2f(tx1, ty2)
+ glVertex2f( w-cornerSize, h)
+
+ glEnd()
+ glDisable(GL_TEXTURE_2D)
+ glPopMatrix()