58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
from GUI import Window, View, Pixmap, application
|
|
from GUI.Geometry import offset_rect, rect_sized
|
|
from GUI.StdColors import red, yellow, green, blue, cyan, black
|
|
from testing import say
|
|
|
|
class PixmapTestView(View):
|
|
|
|
def draw(self, c, r):
|
|
c.erase_rect(r)
|
|
main_image_pos = (10, 10)
|
|
src_rect = pixmap.bounds
|
|
dst_rect = offset_rect(src_rect, main_image_pos)
|
|
pixmap.draw(c, src_rect, dst_rect)
|
|
src_rect = rect_sized((180, 160), (100, 100))
|
|
c.frame_rect(offset_rect(src_rect, main_image_pos))
|
|
dst_rect = rect_sized((10, 340), (150, 150))
|
|
pixmap.draw(c, src_rect, dst_rect)
|
|
dst_rect = rect_sized((200, 340), (100, 100))
|
|
pixmap.draw(c, src_rect, dst_rect)
|
|
dst_rect = rect_sized((340, 340), (50, 50))
|
|
pixmap.draw(c, src_rect, dst_rect)
|
|
|
|
|
|
def do_test_drawing(c):
|
|
b = pixmap.bounds
|
|
c.forecolor = cyan
|
|
c.fill_rect(b)
|
|
r = (20, 20, 200, 230)
|
|
c.forecolor = red
|
|
c.fill_rect(r)
|
|
r = (160, 90, 300, 180)
|
|
c.forecolor = yellow
|
|
c.fill_rect(r)
|
|
r = (250, 200, 350, 275)
|
|
c.forecolor = blue
|
|
c.fill_oval(r)
|
|
|
|
instructions = """
|
|
There should be a 400x300 image containing a filled red rectangle,
|
|
yellow rectangle and blue oval on a cyan background, with a black
|
|
frame around part of the image. The framed part should appear below
|
|
in three different sizes, 150x150, 100x100 and 50x50.
|
|
"""
|
|
|
|
say(instructions)
|
|
|
|
app = application()
|
|
|
|
pixmap = Pixmap(400, 300)
|
|
pixmap.with_canvas(do_test_drawing)
|
|
|
|
win = Window(title = "Pixmap", size = (500, 500))
|
|
view = PixmapTestView(size = win.size)
|
|
win.add(view)
|
|
win.show()
|
|
|
|
app.run()
|