[Dextrose] [PATCH v2 PaintActivity] New suggestion for arrow drawing in Paint
Anurag Chowdhury
anurag at seeta.in
Thu Oct 21 13:20:53 EDT 2010
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
More information about the Dextrose
mailing list