equal
deleted
inserted
replaced
15 from reportlab.lib.colors import black |
15 from reportlab.lib.colors import black |
16 from reportlab.graphics.renderbase import StateTracker, getStateDelta, Renderer, renderScaledDrawing |
16 from reportlab.graphics.renderbase import StateTracker, getStateDelta, Renderer, renderScaledDrawing |
17 from reportlab.graphics.shapes import STATE_DEFAULTS, Path, UserNode |
17 from reportlab.graphics.shapes import STATE_DEFAULTS, Path, UserNode |
18 from reportlab.graphics.shapes import * # (only for test0) |
18 from reportlab.graphics.shapes import * # (only for test0) |
19 from reportlab import rl_config |
19 from reportlab import rl_config |
20 from reportlab.lib.utils import getStringIO, RLString |
20 from reportlab.lib.utils import getBytesIO, RLString |
21 |
21 |
22 from xml.dom import getDOMImplementation |
22 from xml.dom import getDOMImplementation |
23 |
23 |
24 ### some constants ### |
24 ### some constants ### |
25 |
25 |
32 TEXT_STYLES = 'font-family font-weight font-style font-variant font-size id'.split() |
32 TEXT_STYLES = 'font-family font-weight font-style font-variant font-size id'.split() |
33 |
33 |
34 ### top-level user function ### |
34 ### top-level user function ### |
35 def drawToString(d, showBoundary=rl_config.showBoundary,**kwds): |
35 def drawToString(d, showBoundary=rl_config.showBoundary,**kwds): |
36 "Returns a SVG as a string in memory, without touching the disk" |
36 "Returns a SVG as a string in memory, without touching the disk" |
37 s = getStringIO() |
37 s = getBytesIO() |
38 drawToFile(d, s, showBoundary=showBoundary,**kwds) |
38 drawToFile(d, s, showBoundary=showBoundary,**kwds) |
39 return s.getvalue() |
39 return s.getvalue() |
40 |
40 |
41 def drawToFile(d, fn, showBoundary=rl_config.showBoundary,**kwds): |
41 def drawToFile(d, fn, showBoundary=rl_config.showBoundary,**kwds): |
42 d = renderScaledDrawing(d) |
42 d = renderScaledDrawing(d) |
81 n = transformNode(doc, "node1", node0, x="x0", y="x0", zoo=bar()) |
81 n = transformNode(doc, "node1", node0, x="x0", y="x0", zoo=bar()) |
82 -> DOM node for <node1 x="[node0.x0]" y="[node0.y0]" zoo="[bar()]"/> |
82 -> DOM node for <node1 x="[node0.x0]" y="[node0.y0]" zoo="[bar()]"/> |
83 """ |
83 """ |
84 |
84 |
85 newNode = doc.createElement(newTag) |
85 newNode = doc.createElement(newTag) |
86 for newAttr, attr in list(attrDict.items()): |
86 for newAttr, attr in attrDict.items(): |
87 sattr = str(attr) |
87 sattr = str(attr) |
88 if not node: |
88 if not node: |
89 newNode.setAttribute(newAttr, sattr) |
89 newNode.setAttribute(newAttr, sattr) |
90 else: |
90 else: |
91 attrVal = node.getAttribute(sattr) |
91 attrVal = node.getAttribute(sattr) |
707 pass #self._canvas.restoreState() |
707 pass #self._canvas.restoreState() |
708 self._canvas.comment('end node %r'%node) |
708 self._canvas.comment('end node %r'%node) |
709 self._canvas._color = color |
709 self._canvas._color = color |
710 |
710 |
711 #restore things we might have lost (without actually doing anything). |
711 #restore things we might have lost (without actually doing anything). |
712 for k, v in list(rDeltas.items()): |
712 for k, v in rDeltas.items(): |
713 if k in self._restores: |
713 if k in self._restores: |
714 setattr(self._canvas,self._restores[k],v) |
714 setattr(self._canvas,self._restores[k],v) |
715 self._canvas.style = style |
715 self._canvas.style = style |
716 |
716 |
717 if self.verbose: print("### end _SVGRenderer.drawNode(%r)" % node) |
717 if self.verbose: print("### end _SVGRenderer.drawNode(%r)" % node) |
848 |
848 |
849 def applyStateChanges(self, delta, newState): |
849 def applyStateChanges(self, delta, newState): |
850 """This takes a set of states, and outputs the operators |
850 """This takes a set of states, and outputs the operators |
851 needed to set those properties""" |
851 needed to set those properties""" |
852 |
852 |
853 for key, value in list(delta.items()): |
853 for key, value in delta.items(): |
854 if key == 'transform': |
854 if key == 'transform': |
855 pass |
855 pass |
856 #self._canvas.transform(value[0], value[1], value[2], value[3], value[4], value[5]) |
856 #self._canvas.transform(value[0], value[1], value[2], value[3], value[4], value[5]) |
857 elif key == 'strokeColor': |
857 elif key == 'strokeColor': |
858 self._canvas.setStrokeColor(value) |
858 self._canvas.setStrokeColor(value) |