diff options
| author | Stephane Wirtel <stephane@tinyerp.com> | 2008-11-14 16:06:02 +0100 |
|---|---|---|
| committer | Stephane Wirtel <stephane@tinyerp.com> | 2008-11-14 16:06:02 +0100 |
| commit | 3dae09ac14990a82aa9ef8afc2a0429b877ab123 (patch) | |
| tree | fd4e64f6f37c8f23f54119197fad7ea69de418e2 /bin/reportlab/tools/pythonpoint/customshapes.py | |
| parent | 882cd7027feca65405cfdf1337064aa676830d4b (diff) | |
Remove pydot, pychart and reportlab.
bzr revid: stephane@tinyerp.com-20081114150602-cpp1eeo3d0837fev
Diffstat (limited to 'bin/reportlab/tools/pythonpoint/customshapes.py')
| -rw-r--r-- | bin/reportlab/tools/pythonpoint/customshapes.py | 298 |
1 files changed, 0 insertions, 298 deletions
diff --git a/bin/reportlab/tools/pythonpoint/customshapes.py b/bin/reportlab/tools/pythonpoint/customshapes.py deleted file mode 100644 index 779a236eec6..00000000000 --- a/bin/reportlab/tools/pythonpoint/customshapes.py +++ /dev/null @@ -1,298 +0,0 @@ -#Copyright ReportLab Europe Ltd. 2000-2004 -#see license.txt for license details -#history http://www.reportlab.co.uk/cgi-bin/viewcvs.cgi/public/reportlab/trunk/reportlab/tools/pythonpoint/customshapes.py -__version__=''' $Id: customshapes.py 2385 2004-06-17 15:26:05Z rgbecker $ ''' - -# xml parser stuff for PythonPoint -# PythonPoint Markup Language! - -__doc__=""" -This demonstrates a custom shape for use with the <customshape> tag. -The shape must fulfil a very simple interface, which may change in -future. - -The XML tag currently has this form: - <customshape - module="customshapes.py" - class = "MyShape" - initargs="(100,200,3)" - /> - -PythonPoint will look in the given module for the given class, -evaluate the arguments string and pass it to the constructor. -Then, it will call - - object.drawOn(canvas) - -Thus your object must be fully defined by the constructor. -For this one, we pass three argumenyts: x, y and scale. -This does a five-tile jigsaw over which words can be overlaid; -based on work done for a customer's presentation. -""" - - -import reportlab.pdfgen.canvas -from reportlab.lib import colors -from reportlab.lib.corp import RL_CorpLogo -from reportlab.graphics.shapes import Drawing - -## custom shape for use with PythonPoint. - -class Jigsaw: - """This draws a jigsaw patterm. By default it is centred on 0,0 - and has dimensions of 200 x 140; use the x/y/scale attributes - to move it around.""" - #Using my usual bulldozer coding style - I am sure a mathematician could - #derive an elegant way to draw this, but I just took a ruler, guessed at - #the control points, and reflected a few lists at the interactive prompt. - - def __init__(self, x, y, scale=1): - self.width = 200 - self.height = 140 - self.x = x - self.y = y - self.scale = scale - - - def drawOn(self, canvas): - canvas.saveState() - - canvas.setFont('Helvetica-Bold',24) - canvas.drawString(600, 100, 'A Custom Shape') - - canvas.translate(self.x, self.y) - canvas.scale(self.scale, self.scale) - self.drawBounds(canvas) - - self.drawCentre(canvas) - self.drawTopLeft(canvas) - self.drawBottomLeft(canvas) - self.drawBottomRight(canvas) - self.drawTopRight(canvas) - - canvas.restoreState() - - - def curveThrough(self, path, pointlist): - """Helper to curve through set of control points.""" - assert len(pointlist) % 3 == 1, "No. of points must be 3n+1 for integer n" - (x,y) = pointlist[0] - path.moveTo(x, y) - idx = 1 - while idx < len(pointlist)-2: - p1, p2, p3 = pointlist[idx:idx+3] - path.curveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]) - idx = idx + 3 - - - def drawShape(self, canvas, controls, color): - """Utlity to draw a closed shape through a list of control points; - extends the previous proc""" - canvas.setFillColor(color) - p = canvas.beginPath() - self.curveThrough(p, controls) - p.close() - canvas.drawPath(p, stroke=1, fill=1) - - - def drawBounds(self, canvas): - """Guidelines to help me draw - not needed in production""" - canvas.setStrokeColor(colors.red) - canvas.rect(-100,-70,200,140) - canvas.line(-100,0,100,0) - canvas.line(0,70,0,-70) - canvas.setStrokeColor(colors.black) - - - def drawCentre(self, canvas): - controls = [ (0,50), #top - - #top right edge - duplicated for that corner piece - (5,50),(10,45),(10,40), - (10,35),(15,30),(20,30), - (25,30),(30,25),(30,20), - (30,15),(35,10),(40,10), - (45,10),(50,5),(50,0), - - #bottom right edge - (50, -5), (45,-10), (40,-10), - (35,-10), (30,-15), (30, -20), - (30,-25), (25,-30), (20,-30), - (15,-30), (10,-35), (10,-40), - (10,-45),(5,-50),(0,-50), - - #bottom left - (-5,-50),(-10,-45),(-10,-40), - (-10,-35),(-15,-30),(-20,-30), - (-25,-30),(-30,-25),(-30,-20), - (-30,-15),(-35,-10),(-40,-10), - (-45,-10),(-50,-5),(-50,0), - - #top left - (-50,5),(-45,10),(-40,10), - (-35,10),(-30,15),(-30,20), - (-30,25),(-25,30),(-20,30), - (-15,30),(-10,35),(-10,40), - (-10,45),(-5,50),(0,50) - - ] - - self.drawShape(canvas, controls, colors.yellow) - - - def drawTopLeft(self, canvas): - controls = [(-100,70), - (-100,69),(-100,1),(-100,0), - (-99,0),(-91,0),(-90,0), - - #jigsaw interlock - 4 sections - (-90,5),(-92,5),(-92,10), - (-92,15), (-85,15), (-80,15), - (-75,15),(-68,15),(-68,10), - (-68,5),(-70,5),(-70,0), - (-69,0),(-51,0),(-50,0), - - #five distinct curves - (-50,5),(-45,10),(-40,10), - (-35,10),(-30,15),(-30,20), - (-30,25),(-25,30),(-20,30), - (-15,30),(-10,35),(-10,40), - (-10,45),(-5,50),(0,50), - - (0,51),(0,69),(0,70), - (-1,70),(-99,70),(-100,70) - ] - self.drawShape(canvas, controls, colors.teal) - - - def drawBottomLeft(self, canvas): - - controls = [(-100,-70), - (-99,-70),(-1,-70),(0,-70), - (0,-69),(0,-51),(0,-50), - - #wavyline - (-5,-50),(-10,-45),(-10,-40), - (-10,-35),(-15,-30),(-20,-30), - (-25,-30),(-30,-25),(-30,-20), - (-30,-15),(-35,-10),(-40,-10), - (-45,-10),(-50,-5),(-50,0), - - #jigsaw interlock - 4 sections - - (-51, 0), (-69, 0), (-70, 0), - (-70, 5), (-68, 5), (-68, 10), - (-68, 15), (-75, 15), (-80, 15), - (-85, 15), (-92, 15), (-92, 10), - (-92, 5), (-90, 5), (-90, 0), - - (-91,0),(-99,0),(-100,0) - - ] - self.drawShape(canvas, controls, colors.green) - - - def drawBottomRight(self, canvas): - - controls = [ (100,-70), - (100,-69),(100,-1),(100,0), - (99,0),(91,0),(90,0), - - #jigsaw interlock - 4 sections - (90, -5), (92, -5), (92, -10), - (92, -15), (85, -15), (80, -15), - (75, -15), (68, -15), (68, -10), - (68, -5), (70, -5), (70, 0), - (69, 0), (51, 0), (50, 0), - - #wavyline - (50, -5), (45,-10), (40,-10), - (35,-10), (30,-15), (30, -20), - (30,-25), (25,-30), (20,-30), - (15,-30), (10,-35), (10,-40), - (10,-45),(5,-50),(0,-50), - - (0,-51), (0,-69), (0,-70), - (1,-70),(99,-70),(100,-70) - - ] - self.drawShape(canvas, controls, colors.navy) - - - def drawBottomLeft(self, canvas): - - controls = [(-100,-70), - (-99,-70),(-1,-70),(0,-70), - (0,-69),(0,-51),(0,-50), - - #wavyline - (-5,-50),(-10,-45),(-10,-40), - (-10,-35),(-15,-30),(-20,-30), - (-25,-30),(-30,-25),(-30,-20), - (-30,-15),(-35,-10),(-40,-10), - (-45,-10),(-50,-5),(-50,0), - - #jigsaw interlock - 4 sections - - (-51, 0), (-69, 0), (-70, 0), - (-70, 5), (-68, 5), (-68, 10), - (-68, 15), (-75, 15), (-80, 15), - (-85, 15), (-92, 15), (-92, 10), - (-92, 5), (-90, 5), (-90, 0), - - (-91,0),(-99,0),(-100,0) - - ] - self.drawShape(canvas, controls, colors.green) - - - def drawTopRight(self, canvas): - controls = [(100, 70), - (99, 70), (1, 70), (0, 70), - (0, 69), (0, 51), (0, 50), - (5, 50), (10, 45), (10, 40), - (10, 35), (15, 30), (20, 30), - (25, 30), (30, 25), (30, 20), - (30, 15), (35, 10), (40, 10), - (45, 10), (50, 5), (50, 0), - (51, 0), (69, 0), (70, 0), - (70, -5), (68, -5), (68, -10), - (68, -15), (75, -15), (80, -15), - (85, -15), (92, -15), (92, -10), - (92, -5), (90, -5), (90, 0), - (91, 0), (99, 0), (100, 0) - ] - - self.drawShape(canvas, controls, colors.magenta) - - -class Logo: - """This draws a ReportLab Logo.""" - - def __init__(self, x, y, width, height): - logo = RL_CorpLogo() - logo.x = x - logo.y = y - logo.width = width - logo.height = height - self.logo = logo - - def drawOn(self, canvas): - logo = self.logo - x, y = logo.x, logo.y - w, h = logo.width, logo.height - D = Drawing(w, h) - D.add(logo) - D.drawOn(canvas, 0, 0) - - -def run(): - c = reportlab.pdfgen.canvas.Canvas('customshape.pdf') - - J = Jigsaw(300, 540, 2) - J.drawOn(c) - c.save() - - -if __name__ == '__main__': - run()
\ No newline at end of file |
