[Dextrose] [PATCH v2 PaintActivity] New suggestion for arrow drawing in Paint

Gonzalo Odiard gonzalo at laptop.org
Thu Oct 21 09:00:38 EDT 2010


Can you test with pep8 (missing whitespace after ',' ;missing whitespace
around operator, etc) and attach to the ticket?

Gonzalo

On Thu, Oct 21, 2010 at 2:20 PM, Anurag Chowdhury <anurag at seeta.in> wrote:

> 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
>
> _______________________________________________
> Dextrose mailing list
> Dextrose at lists.sugarlabs.org
> http://lists.sugarlabs.org/listinfo/dextrose
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sugarlabs.org/archive/dextrose/attachments/20101021/2d68d797/attachment-0001.html>


More information about the Dextrose mailing list