odoo/bin/reportlab/test/test_widgets_grids.py

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()