455 lines
15 KiB
Python
455 lines
15 KiB
Python
|
|
from reportlab.test import unittest
|
|
from reportlab.test.utils import makeSuiteForClasses, outputfile, printLocation
|
|
|
|
from reportlab.lib import colors
|
|
from reportlab.graphics.shapes import Drawing, Group, Line, Rect
|
|
from reportlab.graphics.widgetbase import Widget
|
|
from reportlab.graphics.widgets.grids import *
|
|
from reportlab.graphics import renderPDF
|
|
from reportlab.graphics import renderSVG
|
|
|
|
|
|
class GridTestCase(unittest.TestCase):
|
|
"Testing diagrams containing grid widgets."
|
|
|
|
def _test0(self):
|
|
"Create color ranges."
|
|
|
|
c0, c1 = colors.Color(0, 0, 0), colors.Color(1, 1, 1)
|
|
for c in colorRange(c0, c1, 4):
|
|
print c
|
|
print
|
|
|
|
c0, c1 = colors.CMYKColor(0, 0, 0, 0), colors.CMYKColor(0, 0, 0, 1)
|
|
for c in colorRange(c0, c1, 4):
|
|
print c
|
|
print
|
|
|
|
c0, c1 = colors.PCMYKColor(0, 0, 0, 0), colors.PCMYKColor(0, 0, 0, 100)
|
|
for c in colorRange(c0, c1, 4):
|
|
print c
|
|
print
|
|
|
|
|
|
def makeDrawing0(self):
|
|
"Generate a RLG drawing with some uncommented grid samples."
|
|
|
|
D = Drawing(450, 650)
|
|
|
|
d = 80
|
|
s = 50
|
|
|
|
for row in range(10):
|
|
y = 530 - row*d
|
|
if row == 0:
|
|
for col in range(4):
|
|
x = 20 + col*d
|
|
g = Grid()
|
|
g.x = x
|
|
g.y = y
|
|
g.width = s
|
|
g.height = s
|
|
g.useRects = 0
|
|
g.useLines = 1
|
|
if col == 0:
|
|
pass
|
|
elif col == 1:
|
|
g.delta0 = 10
|
|
elif col == 2:
|
|
g.orientation = 'horizontal'
|
|
elif col == 3:
|
|
g.deltaSteps = [5, 10, 20, 30]
|
|
g.demo()
|
|
D.add(g)
|
|
elif row == 1:
|
|
for col in range(4):
|
|
x = 20 + col*d
|
|
g = Grid()
|
|
g.y = y
|
|
g.x = x
|
|
g.width = s
|
|
g.height = s
|
|
if col == 0:
|
|
pass
|
|
elif col == 1:
|
|
g.delta0 = 10
|
|
elif col == 2:
|
|
g.orientation = 'horizontal'
|
|
elif col == 3:
|
|
g.deltaSteps = [5, 10, 20, 30]
|
|
g.useRects = 1
|
|
g.useLines = 0
|
|
g.demo()
|
|
D.add(g)
|
|
elif row == 2:
|
|
for col in range(3):
|
|
x = 20 + col*d
|
|
g = Grid()
|
|
g.x = x
|
|
g.y = y
|
|
g.width = s
|
|
g.height = s
|
|
g.useLines = 1
|
|
g.useRects = 1
|
|
if col == 0:
|
|
pass
|
|
elif col == 1:
|
|
g.delta0 = 10
|
|
elif col == 2:
|
|
g.orientation = 'horizontal'
|
|
g.demo()
|
|
D.add(g)
|
|
elif row == 3:
|
|
for col in range(3):
|
|
x = 20 + col*d
|
|
sr = ShadedRect()
|
|
sr.x = x
|
|
sr.y = y
|
|
sr.width = s
|
|
sr.height = s
|
|
sr.fillColorStart = colors.Color(0, 0, 0)
|
|
sr.fillColorEnd = colors.Color(1, 1, 1)
|
|
if col == 0:
|
|
sr.numShades = 5
|
|
elif col == 1:
|
|
sr.numShades = 2
|
|
elif col == 2:
|
|
sr.numShades = 1
|
|
sr.demo()
|
|
D.add(sr)
|
|
elif row == 4:
|
|
for col in range(3):
|
|
x = 20 + col*d
|
|
sr = ShadedRect()
|
|
sr.x = x
|
|
sr.y = y
|
|
sr.width = s
|
|
sr.height = s
|
|
sr.fillColorStart = colors.red
|
|
sr.fillColorEnd = colors.blue
|
|
sr.orientation = 'horizontal'
|
|
if col == 0:
|
|
sr.numShades = 10
|
|
elif col == 1:
|
|
sr.numShades = 20
|
|
elif col == 2:
|
|
sr.numShades = 50
|
|
sr.demo()
|
|
D.add(sr)
|
|
elif row == 5:
|
|
for col in range(3):
|
|
x = 20 + col*d
|
|
sr = ShadedRect()
|
|
sr.x = x
|
|
sr.y = y
|
|
sr.width = s
|
|
sr.height = s
|
|
sr.fillColorStart = colors.white
|
|
sr.fillColorEnd = colors.green
|
|
sr.orientation = 'horizontal'
|
|
if col == 0:
|
|
sr.numShades = 10
|
|
elif col == 1:
|
|
sr.numShades = 20
|
|
sr.orientation = 'vertical'
|
|
elif col == 2:
|
|
sr.numShades = 50
|
|
sr.demo()
|
|
D.add(sr)
|
|
elif row == 6:
|
|
for col in range(3):
|
|
x = 20 + col*d
|
|
sr = ShadedRect()
|
|
sr.x = x
|
|
sr.y = y+s
|
|
sr.width = s
|
|
sr.height = -s
|
|
sr.fillColorStart = colors.white
|
|
sr.fillColorEnd = colors.green
|
|
sr.orientation = 'horizontal'
|
|
if col == 0:
|
|
sr.numShades = 10
|
|
elif col == 1:
|
|
sr.numShades = 20
|
|
sr.orientation = 'vertical'
|
|
elif col == 2:
|
|
sr.numShades = 50
|
|
sr.demo()
|
|
D.add(sr)
|
|
|
|
return D
|
|
|
|
|
|
def makeDrawing1(self):
|
|
"Generate a RLG drawing with some uncommented grid samples."
|
|
|
|
D = Drawing(450, 650)
|
|
|
|
d = 80
|
|
s = 50
|
|
|
|
for row in range(2):
|
|
y = 530 - row*d
|
|
if row == 0:
|
|
for col in range(4):
|
|
x = 20 + col*d
|
|
g = DoubleGrid()
|
|
g.x = x
|
|
g.y = y
|
|
g.width = s
|
|
g.height = s
|
|
|
|
# This should be done implicitely...
|
|
g.grid0.x = x
|
|
g.grid0.y = y
|
|
g.grid1.x = x
|
|
g.grid1.y = y
|
|
g.grid0.width = s
|
|
g.grid0.height = s
|
|
g.grid1.width = s
|
|
g.grid1.height = s
|
|
|
|
if col == 0:
|
|
pass
|
|
elif col == 1:
|
|
g.grid0.delta0 = 10
|
|
elif col == 2:
|
|
g.grid0.delta0 = 5
|
|
elif col == 3:
|
|
g.grid0.deltaSteps = [5, 10, 20, 30]
|
|
g.demo()
|
|
D.add(g)
|
|
elif row == 1:
|
|
for col in range(4):
|
|
x = 20 + col*d
|
|
g = DoubleGrid()
|
|
g.x = x
|
|
g.y = y
|
|
g.width = s
|
|
g.height = s
|
|
|
|
# This should be done implicitely...
|
|
g.grid0.x = x
|
|
g.grid0.y = y
|
|
g.grid1.x = x
|
|
g.grid1.y = y
|
|
g.grid0.width = s
|
|
g.grid0.height = s
|
|
g.grid1.width = s
|
|
g.grid1.height = s
|
|
|
|
if col == 0:
|
|
g.grid0.useRects = 0
|
|
g.grid0.useLines = 1
|
|
g.grid1.useRects = 0
|
|
g.grid1.useLines = 1
|
|
elif col == 1:
|
|
g.grid0.useRects = 1
|
|
g.grid0.useLines = 1
|
|
g.grid1.useRects = 0
|
|
g.grid1.useLines = 1
|
|
elif col == 2:
|
|
g.grid0.useRects = 1
|
|
g.grid0.useLines = 0
|
|
g.grid1.useRects = 0
|
|
g.grid1.useLines = 1
|
|
elif col == 3:
|
|
g.grid0.useRects = 1
|
|
g.grid0.useLines = 0
|
|
g.grid1.useRects = 1
|
|
g.grid1.useLines = 0
|
|
g.demo()
|
|
D.add(g)
|
|
|
|
return D
|
|
|
|
|
|
def makeDrawing2(self):
|
|
"Generate a RLG drawing with some uncommented grid samples."
|
|
|
|
D = Drawing(450, 650)
|
|
|
|
d = 80
|
|
s = 50
|
|
|
|
for row in range(10):
|
|
y = 530 - row*d
|
|
if row == 0:
|
|
for col in range(4):
|
|
x = 20 + col*d
|
|
g = Grid()
|
|
g.x = x
|
|
g.y = y
|
|
g.width = s
|
|
g.height = s
|
|
g.useRects = 0
|
|
g.useLines = 1
|
|
if col == 0:
|
|
pass
|
|
elif col == 1:
|
|
g.delta0 = 10
|
|
elif col == 2:
|
|
g.orientation = 'horizontal'
|
|
elif col == 3:
|
|
g.deltaSteps = [5, 10, 20, 30]
|
|
g.demo()
|
|
D.add(g)
|
|
elif row == 1:
|
|
for col in range(4):
|
|
x = 20 + col*d
|
|
g = Grid()
|
|
g.y = y
|
|
g.x = x
|
|
g.width = s
|
|
g.height = s
|
|
if col == 0:
|
|
pass
|
|
elif col == 1:
|
|
g.delta0 = 10
|
|
elif col == 2:
|
|
g.orientation = 'horizontal'
|
|
elif col == 3:
|
|
g.deltaSteps = [5, 10, 20, 30]
|
|
g.useRects = 1
|
|
g.useLines = 0
|
|
g.demo()
|
|
D.add(g)
|
|
elif row == 2:
|
|
for col in range(3):
|
|
x = 20 + col*d
|
|
g = Grid()
|
|
g.x = x
|
|
g.y = y
|
|
g.width = s
|
|
g.height = s
|
|
g.useLines = 1
|
|
g.useRects = 1
|
|
if col == 0:
|
|
pass
|
|
elif col == 1:
|
|
g.delta0 = 10
|
|
elif col == 2:
|
|
g.orientation = 'horizontal'
|
|
g.demo()
|
|
D.add(g)
|
|
elif row == 3:
|
|
for col in range(3):
|
|
x = 20 + col*d
|
|
sr = ShadedRect()
|
|
sr.x = x
|
|
sr.y = y
|
|
sr.width = s
|
|
sr.height = s
|
|
## sr.fillColorStart = colors.Color(0, 0, 0)
|
|
## sr.fillColorEnd = colors.Color(1, 1, 1)
|
|
sr.fillColorStart = colors.CMYKColor(0, 0, 0, 0)
|
|
sr.fillColorEnd = colors.CMYKColor(1, 1, 1, 1)
|
|
if col == 0:
|
|
sr.numShades = 5
|
|
elif col == 1:
|
|
sr.numShades = 2
|
|
elif col == 2:
|
|
sr.numShades = 1
|
|
sr.demo()
|
|
D.add(sr)
|
|
elif row == 4:
|
|
for col in range(3):
|
|
x = 20 + col*d
|
|
sr = ShadedRect()
|
|
sr.x = x
|
|
sr.y = y
|
|
sr.width = s
|
|
sr.height = s
|
|
## sr.fillColorStart = colors.red
|
|
## sr.fillColorEnd = colors.blue
|
|
sr.fillColorStart = colors.CMYKColor(1, 0, 0, 0)
|
|
sr.fillColorEnd = colors.CMYKColor(0, 0, 1, 0)
|
|
sr.orientation = 'horizontal'
|
|
if col == 0:
|
|
sr.numShades = 10
|
|
elif col == 1:
|
|
sr.numShades = 20
|
|
elif col == 2:
|
|
sr.numShades = 50
|
|
sr.demo()
|
|
D.add(sr)
|
|
elif row == 5:
|
|
for col in range(3):
|
|
x = 20 + col*d
|
|
sr = ShadedRect()
|
|
sr.x = x
|
|
sr.y = y
|
|
sr.width = s
|
|
sr.height = s
|
|
## sr.fillColorStart = colors.white
|
|
## sr.fillColorEnd = colors.green
|
|
sr.fillColorStart = colors.PCMYKColor(11.0,11.0,72.0,0.0, spotName='PANTONE 458 CV',density=1.00)
|
|
sr.fillColorEnd = colors.PCMYKColor(100.0,65.0,0.0,30.0, spotName='PANTONE 288 CV',density=1.00)
|
|
sr.orientation = 'horizontal'
|
|
if col == 0:
|
|
sr.numShades = 10
|
|
elif col == 1:
|
|
sr.numShades = 20
|
|
sr.orientation = 'vertical'
|
|
elif col == 2:
|
|
sr.numShades = 50
|
|
sr.demo()
|
|
D.add(sr)
|
|
elif row == 6:
|
|
for col in range(3):
|
|
x = 20 + col*d
|
|
sr = ShadedRect()
|
|
sr.x = x
|
|
sr.y = y+s
|
|
sr.width = s
|
|
sr.height = -s
|
|
sr.fillColorStart = colors.white
|
|
sr.fillColorEnd = colors.green
|
|
sr.orientation = 'horizontal'
|
|
if col == 0:
|
|
sr.numShades = 10
|
|
elif col == 1:
|
|
sr.numShades = 20
|
|
sr.orientation = 'vertical'
|
|
elif col == 2:
|
|
sr.numShades = 50
|
|
sr.demo()
|
|
D.add(sr)
|
|
|
|
return D
|
|
|
|
|
|
def test0(self):
|
|
"Generate PDF and SVG documents of first sample drawing."
|
|
|
|
d = self.makeDrawing0()
|
|
renderPDF.drawToFile(d, outputfile('test_widgets_grids0.pdf'))
|
|
renderSVG.drawToFile(d, outputfile('test_widgets_grids0.svg'))
|
|
|
|
|
|
def test1(self):
|
|
"Generate PDF and SVG documents of second sample drawing."
|
|
|
|
d = self.makeDrawing1()
|
|
renderPDF.drawToFile(d, outputfile('test_widgets_grids1.pdf'))
|
|
renderSVG.drawToFile(d, outputfile('test_widgets_grids1.svg'))
|
|
|
|
|
|
def test2(self):
|
|
"Generate PDF and SVG documents of third sample drawing."
|
|
|
|
d = self.makeDrawing2()
|
|
renderPDF.drawToFile(d, outputfile('test_widgets_grids2.pdf'))
|
|
renderSVG.drawToFile(d, outputfile('test_widgets_grids2.svg'))
|
|
|
|
|
|
def makeSuite():
|
|
return makeSuiteForClasses(GridTestCase)
|
|
|
|
|
|
#noruntests
|
|
if __name__ == "__main__":
|
|
unittest.TextTestRunner().run(makeSuite())
|
|
printLocation()
|