In the paint activity's shape tool we were able to make only horizontal arrows,
so now we have modified the arrow tool which will now make arrows in all
directions.
---
 Desenho.py |   27 ++++++++++++++++++---------
 1 files changed, 18 insertions(+), 9 deletions(-)

v1->v2 :Removed the vertical-arrow tool and modified the arrow tool to enable
drawing arrows in all directions.

diff --git a/Desenho.py b/Desenho.py
index 3be1910..5057a27 100644
--- a/Desenho.py
+++ b/Desenho.py
@@ -294,18 +294,27 @@ class Desenho:
 
         x = coords[0] - widget.oldx
         y = coords[1] - widget.oldy
-        points = [(widget.oldx, widget.oldy),\
-            (widget.oldx + int(x / 6), widget.oldy + y), \
-            (widget.oldx + int(x / 6), widget.oldy + int(y / 3)), \
-            (widget.oldx + x, widget.oldy + int(y / 3)), \
-            (widget.oldx + x, widget.oldy - int(y / 3)), \
-            (widget.oldx + int(x / 6), widget.oldy - int(y / 3)),\
-            (widget.oldx + int(x / 6), widget.oldy - y)]
+        A = math.atan2(y,x)
+        dA = 2*math.pi/2
+        r = math.hypot(y,x)
+        m = math.sin(A)
+        p = [(widget.oldx,widget.oldy),\
+            (widget.oldx+int(r*math.cos(A)),widget.oldy+int(r*math.sin(A))),\
+            (widget.oldx+int(0.74*r*math.cos(A+dA/6)),\
+             widget.oldy+int(0.74*r*math.sin(A+dA/6)))]         
+        p.append((widget.oldx,widget.oldy)) 
+        p.append((widget.oldx+int(0.74*r*math.cos(A+dA/6)),\
+                  widget.oldy+int(0.74*r*math.sin(A+dA/6))))
+        p.append((widget.oldx+int(2*r*math.cos(A+dA/6+dA/20)),\
+                  widget.oldy+int(2*r*math.sin(A+dA/6+dA/20)))) 
+        p.append((widget.oldx+int(2*r*math.cos(A+dA/6-dA/20+dA/6)),\
+                  widget.oldy+int(2*r*math.sin(A+dA/6-dA/20+dA/6))))
+        p.append((widget.oldx+int(0.74*r*math.cos(A+dA/6+dA/6)),\
+                  widget.oldy+int(0.74*r*math.sin(A+dA/6+dA/6))))
+        p.append((widget.oldx,widget.oldy))
+        p.append((widget.oldx+int(0.74*r*math.cos(A+dA/6+dA/6)),\
+                  widget.oldy+int(0.74*r*math.sin(A+dA/6+dA/6))))
+        p.append((widget.oldx+int(r*math.cos(A+dA/2)),\
+                  widget.oldy+int(r*math.sin(A+dA/2))))
         pixmap.draw_drawable(widget.gc, widget.pixmap, 0, 0, 0, 0,
             width, height)
+        tp = tuple(p)
         if fill == True:
-            pixmap.draw_polygon(widget.gc, True, points)
-        pixmap.draw_polygon(widget.gc_line, False, points)
+            pixmap.draw_polygon(widget.gc, True, tp)
+        pixmap.draw_polygon(widget.gc_line, False, tp)
         widget.queue_draw()
 
     def parallelogram(self, widget, coords, temp, fill):
-- 
1.7.2.3

_______________________________________________
Sugar-devel mailing list
Sugar-devel@lists.sugarlabs.org
http://lists.sugarlabs.org/listinfo/sugar-devel

Reply via email to