svgwrite_diagram: proper support for stroke_width
[flexagon-toolkit.git] / src / diagram / svgwrite_diagram.py
index bf94541..1da39a2 100755 (executable)
@@ -82,6 +82,15 @@ class SvgwriteDiagram(Diagram):
         self.svg = InkscapeDrawing(None, profile='full', size=(str(width) + "px", str(height) + "px"))
         self.active_group = self.svg
 
+    def clear(self):
+        # Reset the SVG object
+        self.svg.elements = []
+        self.svg.add(self.svg.defs)
+
+        rect = self.svg.rect((0, 0), ('100%', '100%'))
+        self._fill(rect, self.background)
+        self.svg.add(rect)
+
     def save_svg(self, filename):
         self.svg.saveas(filename)
 
@@ -109,13 +118,14 @@ class SvgwriteDiagram(Diagram):
             element['stroke'] = stroke_color
             element['stroke-opacity'] = a
             element['stroke-linejoin'] = 'round'
+            element['stroke-width'] = self.stroke_width
         else:
             element['stroke'] = 'none'
 
     def draw_polygon_by_verts(self, verts,
                               stroke_color=(0, 0, 0),
                               fill_color=None):
-        polygon = self.svg.polygon(verts, stroke_width=self.stroke_width)
+        polygon = self.svg.polygon(verts)
 
         self._fill(polygon, fill_color)
         self._stroke(polygon, stroke_color)
@@ -124,7 +134,7 @@ class SvgwriteDiagram(Diagram):
 
     def draw_star_by_verts(self, cx, cy, verts, stroke_color=(0, 0, 0)):
         for v in verts:
-            line = self.svg.line((cx, cy), v, stroke_width=self.stroke_width)
+            line = self.svg.line((cx, cy), v)
             self._stroke(line, stroke_color)
             self.add(line)