From c9af9befec0d61da74f67cbbe9f035ae5a486d9d Mon Sep 17 00:00:00 2001
From: Antonio Ospite <ao2@ao2.it>
Date: Thu, 18 Jun 2015 11:59:47 +0200
Subject: [PATCH] Diagram.py: fix and simplify drawing polygon fill and stroke

---
 Diagram.py               | 33 ++++++++++++++++-----------------
 RadialSymmetryDiagram.py |  4 ++--
 2 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/Diagram.py b/Diagram.py
index 3a03949..28cb064 100755
--- a/Diagram.py
+++ b/Diagram.py
@@ -97,30 +97,29 @@ class Diagram(object):
         else:
             return None
 
-    def draw_polygon(self, verts, stroke_color=[0, 0, 0], fill_color=None):
+    def _draw_polygon(self, verts):
         cr = self.cr
 
-        if fill_color:
-            v = verts[0]
-            cr.move_to(v[0], v[1])
-            for v in verts[1:]:
-                cr.line_to(v[0], v[1])
-                cr.close_path()
+        v = verts[0]
+        cr.move_to(v[0], v[1])
+        for v in verts[1:]:
+            cr.line_to(v[0], v[1])
+        cr.close_path()
+
+    def draw_polygon(self, verts, fill_color=None, stroke_color=[0, 0, 0]):
+        cr = self.cr
 
+        if fill_color:
+            self._draw_polygon(verts)
             r, g, b, a = self.color_to_rgba(fill_color)
             cr.set_source_rgba(r, g, b, a)
             cr.fill()
 
-        n = len(verts)
-        for i in range(0, n):
-            v1 = verts[i]
-            v2 = verts[(i + 1) % n]
-            cr.move_to(v1[0], v1[1])
-            cr.line_to(v2[0], v2[1])
-
-        r, g, b, a = self.color_to_rgba(stroke_color)
-        cr.set_source_rgba(r, g, b, a)
-        cr.stroke()
+        if stroke_color:
+            self._draw_polygon(verts)
+            r, g, b, a = self.color_to_rgba(stroke_color)
+            cr.set_source_rgba(r, g, b, a)
+            cr.stroke()
 
     def draw_star(self, cx, cy, verts, stroke_color=[0, 0, 0]):
         cr = self.cr
diff --git a/RadialSymmetryDiagram.py b/RadialSymmetryDiagram.py
index 333606a..e21694b 100755
--- a/RadialSymmetryDiagram.py
+++ b/RadialSymmetryDiagram.py
@@ -66,7 +66,7 @@ class RadialSymmetryDiagram(Diagram.Diagram):
                                          base_polygon_orientation)
 
         if model.show_base_polygon:
-            self.draw_polygon(verts, [0, 0, 0])
+            self.draw_polygon(verts, None, [0, 0, 0])
 
         for i, v in enumerate(verts[:]):
             radial_orientation_angle = (i + 1) * central_angle
@@ -96,7 +96,7 @@ class RadialSymmetryDiagram(Diagram.Diagram):
     def draw_element(self, x, y, model, theta, color=[0, 0, 0]):
         if model.show_elements:
             tverts = self.get_regular_polygon(x, y, model.element_sides, model.element_radius, theta)
-            self.draw_polygon(tverts, color)
+            self.draw_polygon(tverts, None, color)
 
         if model.show_stars:
             apothem = model.element_radius * cos(pi / model.element_sides)
-- 
2.1.4