mirror of
https://github.com/wxWidgets/Phoenix.git
synced 2025-07-21 12:41:10 +02:00
279 lines
6.9 KiB
Python
279 lines
6.9 KiB
Python
import unittest
|
|
from unittests import wtc
|
|
import wx
|
|
import random
|
|
try:
|
|
import numpy as np
|
|
haveNumpy = True
|
|
except ImportError:
|
|
haveNumpy = False
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
w = 600
|
|
h = 400
|
|
num = 500
|
|
|
|
colornames = ["BLACK",
|
|
"BLUE",
|
|
"BLUE VIOLET",
|
|
"BROWN",
|
|
"CYAN",
|
|
"DARK GREY",
|
|
"DARK GREEN",
|
|
"GOLD",
|
|
"GREY",
|
|
"GREEN",
|
|
"MAGENTA",
|
|
"NAVY",
|
|
"PINK",
|
|
"RED",
|
|
"SKY BLUE",
|
|
"VIOLET",
|
|
"YELLOW",
|
|
]
|
|
pencache = {}
|
|
brushcache = {}
|
|
|
|
def makeRandomPoints():
|
|
pnts = []
|
|
|
|
for i in range(num):
|
|
x = random.randint(0, w)
|
|
y = random.randint(0, h)
|
|
pnts.append( (x,y) )
|
|
|
|
return pnts
|
|
|
|
|
|
def makeRandomLines():
|
|
lines = []
|
|
|
|
for i in range(num):
|
|
x1 = random.randint(0, w)
|
|
y1 = random.randint(0, h)
|
|
x2 = random.randint(0, w)
|
|
y2 = random.randint(0, h)
|
|
lines.append( (x1,y1, x2,y2) )
|
|
|
|
return lines
|
|
|
|
|
|
def makeRandomRectangles():
|
|
rects = []
|
|
|
|
for i in range(num):
|
|
W = random.randint(10, w//2)
|
|
H = random.randint(10, h//2)
|
|
x = random.randint(0, w - W)
|
|
y = random.randint(0, h - H)
|
|
rects.append( (x, y, W, H) )
|
|
|
|
return rects
|
|
|
|
|
|
def makeRandomPolygons():
|
|
Np = 8 # number of points per polygon
|
|
polys = []
|
|
|
|
for i in range(num):
|
|
poly = []
|
|
|
|
for i in range(Np):
|
|
x = random.randint(0, w)
|
|
y = random.randint(0, h)
|
|
poly.append( (x,y) )
|
|
|
|
polys.append( poly )
|
|
|
|
return polys
|
|
|
|
|
|
def makeRandomText():
|
|
Np = 8 # number of characters in text
|
|
text = []
|
|
|
|
for i in range(num):
|
|
word = []
|
|
|
|
for i in range(Np):
|
|
c = chr( random.randint(48, 122) )
|
|
word.append( c )
|
|
|
|
text.append( "".join(word) )
|
|
|
|
return text
|
|
|
|
|
|
def makeRandomColors():
|
|
colors = []
|
|
for i in range(num):
|
|
c = random.choice(colornames)
|
|
colors.append(wx.Colour(c))
|
|
return colors
|
|
|
|
|
|
def makeRandomPens():
|
|
pens = []
|
|
for i in range(num):
|
|
c = random.choice(colornames)
|
|
t = random.randint(1, 4)
|
|
if (c,t) not in pencache:
|
|
pencache[(c, t)] = wx.Pen(c, t)
|
|
pens.append( pencache[(c, t)] )
|
|
return pens
|
|
|
|
|
|
def makeRandomBrushes():
|
|
brushes = []
|
|
for i in range(num):
|
|
c = random.choice(colornames)
|
|
if c not in brushcache:
|
|
brushcache[c] = wx.Brush(c)
|
|
brushes.append( brushcache[c] )
|
|
return brushes
|
|
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
|
|
class dcDrawLists_Tests(wtc.WidgetTestCase):
|
|
|
|
def test_dcDrawPointLists(self):
|
|
pnl = wx.Panel(self.frame)
|
|
self.frame.SetSize((w,h))
|
|
dc = wx.ClientDC(pnl)
|
|
dc.SetPen(wx.Pen("BLACK", 1))
|
|
|
|
pens = makeRandomPens()
|
|
|
|
dc.DrawPointList(makeRandomPoints())
|
|
dc.DrawPointList(makeRandomPoints(), wx.Pen("RED", 1))
|
|
dc.DrawPointList(makeRandomPoints(), pens)
|
|
del dc
|
|
|
|
|
|
@unittest.skipIf(not haveNumpy, "Numpy required for this test")
|
|
def test_dcDrawPointArray(self):
|
|
pnl = wx.Panel(self.frame)
|
|
self.frame.SetSize((w,h))
|
|
dc = wx.ClientDC(pnl)
|
|
dc.SetPen(wx.Pen("BLACK", 1))
|
|
|
|
pens = makeRandomPens()
|
|
|
|
dc.DrawPointList(np.array(makeRandomPoints()))
|
|
dc.DrawPointList(np.array(makeRandomPoints()), wx.Pen("RED", 1))
|
|
dc.DrawPointList(np.array(makeRandomPoints()), pens)
|
|
del dc
|
|
|
|
|
|
def test_dcDrawLineLists(self):
|
|
pnl = wx.Panel(self.frame)
|
|
self.frame.SetSize((w,h))
|
|
dc = wx.ClientDC(pnl)
|
|
dc.SetPen(wx.Pen("BLACK", 1))
|
|
|
|
pens = makeRandomPens()
|
|
|
|
dc.DrawLineList(makeRandomLines())
|
|
dc.DrawLineList(makeRandomLines(), wx.Pen("RED", 2))
|
|
dc.DrawLineList(makeRandomLines(), pens)
|
|
del dc
|
|
|
|
|
|
def test_dcDrawRectangleLists(self):
|
|
pnl = wx.Panel(self.frame)
|
|
self.frame.SetSize((w,h))
|
|
dc = wx.ClientDC(pnl)
|
|
dc.SetPen(wx.Pen("BLACK", 1))
|
|
dc.SetBrush( wx.Brush("RED") )
|
|
|
|
pens = makeRandomPens()
|
|
brushes = makeRandomBrushes()
|
|
|
|
dc.DrawRectangleList(makeRandomRectangles())
|
|
dc.DrawRectangleList(makeRandomRectangles(),pens)
|
|
dc.DrawRectangleList(makeRandomRectangles(),pens[0],brushes)
|
|
dc.DrawRectangleList(makeRandomRectangles(),pens,brushes[0])
|
|
dc.DrawRectangleList(makeRandomRectangles(),None,brushes)
|
|
del dc
|
|
|
|
|
|
@unittest.skipIf(not haveNumpy, "Numpy required for this test")
|
|
def test_dcDrawRectangleArray(self):
|
|
pnl = wx.Panel(self.frame)
|
|
self.frame.SetSize((w,h))
|
|
dc = wx.ClientDC(pnl)
|
|
dc.SetPen(wx.Pen("BLACK", 1))
|
|
dc.SetBrush( wx.Brush("RED") )
|
|
|
|
pens = makeRandomPens()
|
|
brushes = makeRandomBrushes()
|
|
|
|
dc.DrawRectangleList(np.array(makeRandomRectangles()))
|
|
dc.DrawRectangleList(np.array(makeRandomRectangles()),pens)
|
|
dc.DrawRectangleList(np.array(makeRandomRectangles()),pens[0],brushes)
|
|
dc.DrawRectangleList(np.array(makeRandomRectangles()),pens,brushes[0])
|
|
dc.DrawRectangleList(np.array(makeRandomRectangles()),None,brushes)
|
|
del dc
|
|
|
|
|
|
def test_dcDrawElipseLists(self):
|
|
pnl = wx.Panel(self.frame)
|
|
self.frame.SetSize((w,h))
|
|
dc = wx.ClientDC(pnl)
|
|
dc.SetPen(wx.Pen("BLACK", 1))
|
|
dc.SetBrush( wx.Brush("RED") )
|
|
|
|
pens = makeRandomPens()
|
|
brushes = makeRandomBrushes()
|
|
|
|
dc.DrawEllipseList(makeRandomRectangles())
|
|
dc.DrawEllipseList(makeRandomRectangles(),pens)
|
|
dc.DrawEllipseList(makeRandomRectangles(),pens[0],brushes)
|
|
dc.DrawEllipseList(makeRandomRectangles(),pens,brushes[0])
|
|
dc.DrawEllipseList(makeRandomRectangles(),None,brushes)
|
|
del dc
|
|
|
|
|
|
def test_dcDrawPloygonLists(self):
|
|
pnl = wx.Panel(self.frame)
|
|
self.frame.SetSize((w,h))
|
|
dc = wx.ClientDC(pnl)
|
|
dc.SetPen(wx.Pen("BLACK", 1))
|
|
dc.SetBrush( wx.Brush("RED") )
|
|
|
|
pens = makeRandomPens()
|
|
brushes = makeRandomBrushes()
|
|
polygons = makeRandomPolygons()
|
|
|
|
dc.DrawPolygonList(polygons)
|
|
dc.DrawPolygonList(polygons, pens)
|
|
dc.DrawPolygonList(polygons, pens[0],brushes)
|
|
dc.DrawPolygonList(polygons, pens,brushes[0])
|
|
dc.DrawPolygonList(polygons, None,brushes)
|
|
del dc
|
|
|
|
|
|
def test_dcDrawTextLists(self):
|
|
pnl = wx.Panel(self.frame)
|
|
self.frame.SetSize((w,h))
|
|
dc = wx.ClientDC(pnl)
|
|
dc.SetBackgroundMode(wx.SOLID)
|
|
|
|
points = makeRandomPoints()
|
|
fore = makeRandomColors()
|
|
back = makeRandomColors()
|
|
texts = makeRandomText()
|
|
|
|
dc.DrawTextList(texts, points, fore, back)
|
|
del dc
|
|
|
|
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|