from math import degrees
import svgwrite
from svgwrite.data.types import SVGAttribute
-from .diagram import Diagram
+try:
+ from .diagram import Diagram
+except ValueError:
+ from diagram import Diagram
class InkscapeDrawing(svgwrite.Drawing):
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,
if bb_stroke_color or bb_fill_color:
warnings.warn("Drawing the bounding box has not been implemented yet.")
+
+ # XXX: this is just a very quick and dirty estimate to advance the text
+ return self.font_size * len(text) / 2
+
+
+def test():
+ diagram = SvgwriteDiagram(400, 400)
+
+ Diagram.test(diagram)
+
+ diagram.save_svg('svgwrite_diagram_test.svg')
+
+
+if __name__ == "__main__":
+ test()