mirror of
https://github.com/wxWidgets/Phoenix.git
synced 2026-01-06 20:10:08 +01:00
Port the add-on wx.DC.DrawXXXList methods from Classic
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@72363 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
278
unittests/test_dcDrawLists.py
Normal file
278
unittests/test_dcDrawLists.py
Normal file
@@ -0,0 +1,278 @@
|
||||
import imp_unittest, unittest
|
||||
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 not pencache.has_key( (c, t) ):
|
||||
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 not brushcache.has_key(c):
|
||||
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()
|
||||
Reference in New Issue
Block a user