From 0e3851edfb7df9410950e4446b73ef06966e5b0d Mon Sep 17 00:00:00 2001
From: Antonio Ospite <ao2@ao2.it>
Date: Tue, 26 Jun 2018 15:49:50 +0200
Subject: [PATCH 1/1] svgwrite_diagram: implement draw_circle, draw_line and
 draw_rect

Complete the implementation of the svgwrite diagram backend by
implementing the missing methods.
---
 src/diagram/svgwrite_diagram.py | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/src/diagram/svgwrite_diagram.py b/src/diagram/svgwrite_diagram.py
index 1da39a2..c4b76af 100755
--- a/src/diagram/svgwrite_diagram.py
+++ b/src/diagram/svgwrite_diagram.py
@@ -138,6 +138,34 @@ class SvgwriteDiagram(Diagram):
             self._stroke(line, stroke_color)
             self.add(line)
 
+    def draw_circle(self, cx, cy, radius=10.0,
+                    stroke_color=None,
+                    fill_color=(0, 0, 0, 0.5)):
+        circle = self.svg.circle((cx, cy), radius)
+
+        self._fill(circle, fill_color)
+        self._stroke(circle, stroke_color)
+
+        self.add(circle)
+
+    def draw_line(self, x1, y1, x2, y2, stroke_color=(0, 0, 0, 1)):
+        line = self.svg.line((x1, y1), (x1, y2))
+        self._stroke(line, stroke_color)
+
+        self.add(line)
+
+    def draw_rect(self, x, y, width, height, theta=0,
+                  stroke_color=None,
+                  fill_color=(1, 1, 1, 0.8)):
+        rect = self.svg.rect((x, y), (width, height))
+
+        rect['transform'] = 'rotate(%f, %f, %f)' % (degrees(theta), x, y)
+
+        self._fill(rect, fill_color)
+        self._stroke(rect, stroke_color)
+
+        self.add(rect)
+
     def draw_centered_text(self, cx, cy, text, theta=0.0,
                            color=(0, 0, 0),
                            align_baseline=False,
-- 
2.1.4