64 lines
1.7 KiB
Python
64 lines
1.7 KiB
Python
from GUI import Window, View, application, rgb, Pixmap
|
|
from GUI.Geometry import offset_rect
|
|
from GUI.StdColors import black, white
|
|
from GUI.GL import GLPixmap
|
|
from OpenGL.GL import glClearColor, glClear, glBegin, glColor3f, glVertex2i, glEnd, \
|
|
GL_COLOR_BUFFER_BIT, GL_TRIANGLES
|
|
|
|
|
|
class PixmapTestView(View):
|
|
|
|
def __init__(self, pixmap, **kwds):
|
|
self.pixmap = pixmap
|
|
View.__init__(self, **kwds)
|
|
|
|
def draw(self, c, r):
|
|
#print "Draw" ###
|
|
c.forecolor = rgb(0.5, 0.75, 1.0)
|
|
c.fill_rect(self.viewed_rect())
|
|
c.forecolor = black
|
|
pm = self.pixmap
|
|
sr = pm.bounds
|
|
for i in range(3):
|
|
dr = offset_rect(sr, (10 + i * 50, 10 + i * 60))
|
|
pm.draw(c, sr, dr)
|
|
|
|
|
|
def draw_triangle():
|
|
#print "Draw Triangle"
|
|
glClearColor(0.0, 0.0, 0.0, 1.0)
|
|
glClear(GL_COLOR_BUFFER_BIT)
|
|
#return ###
|
|
glBegin(GL_TRIANGLES)
|
|
glColor3f(1.0, 0.0, 0.0)
|
|
glVertex2i(0, 1)
|
|
glColor3f(0.0, 1.0, 0.0)
|
|
glVertex2i(-1, -1)
|
|
glColor3f(0.0, 0.0, 1.0)
|
|
glVertex2i(1, -1)
|
|
glEnd()
|
|
|
|
def draw_circle(c):
|
|
c.forecolor = white
|
|
c.frame_oval((10, 10, 40, 40))
|
|
|
|
def test():
|
|
app = application()
|
|
pixmap = GLPixmap(50, 50, double_buffer = False, alpha = False)
|
|
pixmap.with_context(draw_triangle, flush = True)
|
|
#pixmap.with_canvas(draw_circle)
|
|
view = PixmapTestView(pixmap, size = (180, 200))
|
|
win = Window(title = "GLPixmap", resizable = False)
|
|
win.add(view)
|
|
win.shrink_wrap()
|
|
win.show()
|
|
app.run()
|
|
|
|
instructions = """
|
|
You should see a multicoloured triangle inside a black square,
|
|
repeated three times over a blue background.
|
|
"""
|
|
|
|
print instructions
|
|
test()
|