···
6
+
from collections import defaultdict
from . import elements as elementsModule
···
self.viewBox = (self.viewBox[0], -self.viewBox[1]-self.viewBox[3],
self.viewBox[2], self.viewBox[3])
36
+
self.orderedElements = defaultdict(list)
···
return self.renderWidth, self.height * s
return self.renderWidth, self.renderHeight
70
-
def draw(self, obj, **kwargs):
72
+
def draw(self, obj, *, z=None, **kwargs):
if not hasattr(obj, 'writeSvgElement'):
···
78
-
self.extend(elements)
79
-
def append(self, element):
80
-
self.elements.append(element)
81
-
def extend(self, iterable):
82
-
self.elements.extend(iterable)
80
+
self.extend(elements, z=z)
81
+
def append(self, element, *, z=None):
83
+
self.orderedElements[z].append(element)
85
+
self.elements.append(element)
86
+
def extend(self, iterable, *, z=None):
88
+
self.orderedElements[z].extend(iterable)
90
+
self.elements.extend(iterable)
def insert(self, i, element):
self.elements.insert(i, element)
def remove(self, element):
···
self.otherDefs.extend(elements)
def appendDef(self, element):
self.otherDefs.append(element)
112
+
def allElements(self):
113
+
''' Returns self.elements and self.orderedElements as a single list. '''
114
+
output = list(self.elements)
115
+
for z in sorted(self.orderedElements):
116
+
output.extend(self.orderedElements[z])
def asSvg(self, outputFile=None):
returnString = outputFile is None
···
134
-
for element in self.elements:
148
+
allElements = self.allElements()
149
+
for element in allElements:
element.writeSvgDefs(idGen, isDuplicate, outputFile, False)
···
outputFile.write('</defs>\n')
# Generate ids for normal elements
prevDefSet = set(prevSet)
142
-
for element in self.elements:
157
+
for element in allElements:
element.writeSvgElement(idGen, isDuplicate, outputFile, True)
149
-
for element in self.elements:
164
+
for element in allElements:
element.writeSvgElement(idGen, isDuplicate, outputFile, False)