
    BPc                     @    d Z ddlmZ ddlmZmZ  G d d          ZdS )z(
Canvas module for ink2canvas extension
    )dedent)ColorStylec                       e Zd ZdZd&dZd Zd Zd Zd Zd Z	d	 Z
d
 Zed             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd'dZd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d%S )(CanvaszCanvas API helper classctxc                     || _         g | _        t                      | _        t                      | _        || _        || _        || _        d S )N)objcoder   stylestyle_cacheparentwidthheight)selfr   r   r   contexts        7/usr/share/inkscape/extensions/ink2canvas_lib/canvas.py__init__zCanvas.__init__!   s@    	WW
 77
    c                 x    | j                             d|                    d| j                  z   dz              d S )N	r   
)r   appendreplacer
   )r   texts     r   writezCanvas.write*   s8    	UDH = ==DEEEEEr   c                     d}t          |          | j        | j        | j        d                    | j                  fz  S )Nam  
        <!DOCTYPE html>
        <html>
        <head>
            <title>Inkscape Output</title>
        </head>
        <body>
            <canvas id='canvas' width='%d' height='%d'></canvas>
            <script>
            var %s = document.getElementById("canvas").getContext("2d");
            %s
            </script>
        </body>
        </html>
         )r   r   r   r
   joinr   )r   htmls     r   outputzCanvas.output-   s9     d||tz4;"''$)BTBTUUUr   c                 R    || j         v rdS ||vrdS ||         | j         |         k    S )zAChecks if the last style used is the same or there's no style yetT)r   )r   r   keys      r   equal_stylezCanvas.equal_style@   s<    $"""4e4SzT-c222r   c                 0    |                      d           d S )Nzctx.beginPath();r   r   s    r   
begin_pathzCanvas.begin_pathH       

%&&&&&r   c                 D    |||||f}|                      d|z             d S )NzBvar %s =                    ctx.createLinearGradient(%f,%f,%f,%f);r&   )r   hrefx1y1x2y2datas          r   create_linear_gradientzCanvas.create_linear_gradientK   s?    b"b"%

;	
 	
 	
 	
 	
r   c                 H    |||||||f}|                      d|z             d S )NzHvar %s = ctx.createRadialGradient                   (%f,%f,%f,%f,%f,%f);r&   )	r   r+   cx1cy1rxcx2cy2ryr0   s	            r   create_radial_gradientzCanvas.create_radial_gradientS   sC    c3Cb1

)	
 	
 	
 	
 	
r   c                 <    |                      d|||fz             d S )Nz%s.addColorStop(%f, %s);r&   )r   r+   poscolors       r   add_color_stopzCanvas.add_color_stop[   s'    

-sE0BBCCCCCr   c                     d                     t          t          |                               |                              S )Nz'{}')formatstrr   to_rgba)rgbalphas     r   	get_colorzCanvas.get_color^   s0    }}Ss!3!3E!:!:;;<<<r   c                     dS )aR  
        for stop in gstops:
            style = simplestyle.parseStyle(stop.get("style"))
            stop_color = style["stop-color"]
            opacity = style["stop-opacity"]
            color = self.get_color(stop_color, opacity)
            pos = float(stop.get("offset"))
            self.add_color_stop(href, pos, color)
        N )r   r+   s     r   set_gradientzCanvas.set_gradientb   s	     tr   c                 P    |                      dt          |          z             d S )Nzctx.globalAlpha = %.1f;)r   floatr   values     r   set_opacityzCanvas.set_opacityn   s&    

,uU||;<<<<<r   c                     |                      d          }|                    d          s0|                     ||          }|                     d|z             d S d S )Nzfill-opacityzurl(zctx.fillStyle = %s;)r   
startswithrD   r   )r   rK   rC   fills       r   set_fillzCanvas.set_fillq   sd    

>**'' 	5>>%//DJJ,t344444	5 	5r   c                     |                      d          }|                     d|                     ||          z             d S )Nzstroke-opacityzctx.strokeStyle = %s;)r   r   rD   )r   rK   rC   s      r   
set_strokezCanvas.set_strokew   s@    

+,,

*T^^E5-I-IIJJJJJr   c                 p    |                      d| j        j                            |          z             d S )Nzctx.lineWidth = %f;)r   r   svgunittouurJ   s     r   set_stroke_widthzCanvas.set_stroke_width{   s2    

(4;?+C+CE+J+JJKKKKKr   c                 6    |                      d|z             d S )Nzctx.lineCap = '%s';r&   rJ   s     r   set_stroke_linecapzCanvas.set_stroke_linecap~   s     

(5011111r   c                 6    |                      d|z             d S )Nzctx.lineJoin = '%s';r&   rJ   s     r   set_stroke_linejoinzCanvas.set_stroke_linejoin        

)E122222r   c                 6    |                      d|z             d S )Nzctx.miterLimit = %s;r&   rJ   s     r   set_stroke_miterlimitzCanvas.set_stroke_miterlimit   r[   r   c                 6    |                      d|z             d S )Nzctx.font = "%s";r&   rJ   s     r   set_fontzCanvas.set_font   s     

%-.....r   c                 :    |                      d||fz             d S )Nzctx.moveTo(%f, %f);r&   r   xys      r   move_tozCanvas.move_to   $    

(Aq6122222r   c                 :    |                      d||fz             d S )Nzctx.lineTo(%f, %f);r&   ra   s      r   line_tozCanvas.line_to   re   r   c                 0    |                      d           d S )Nzctx.closePath();r&   r'   s    r   
close_pathzCanvas.close_path   r)   r   c                 B    ||||f}|                      d|z             d S )Nz%ctx.quadraticCurveTo(%f, %f, %f, %f);r&   )r   cpxcpyrb   rc   r0   s         r   quadratic_curve_tozCanvas.quadratic_curve_to   s.    S!Q

:TABBBBBr   c                 F    ||||||f}|                      d|z             d S )Nz*ctx.bezierCurveTo(%f, %f, %f, %f, %f, %f);r&   )r   r,   r-   r.   r/   rb   rc   r0   s           r   bezier_curve_tozCanvas.bezier_curve_to   s2    BB1%

?$FGGGGGr   r   c                 f   |s|r|                      |||z              |                     |||z   |z
             |                     |||z   ||z   ||z              |                     ||z   |z
  ||z              |                     ||z   ||z   ||z   ||z   |z
             |                     ||z   ||z              |                     ||z   |||z   |z
  |           |                     ||z   |           |                     |||||z              d S |                     d||||fz             d S )Nzctx.rect(%f, %f, %f, %f);)rd   rg   rm   r   )r   rb   rc   r   r   r5   r8   s          r   rectzCanvas.rect   sa    	L 	LLLAF###LLAJO,,,##Aq6z1r61v:FFFLLURV444##AIq6z1u9a&jSUoVVVLLUAF+++##AIq!e)b.!DDDLLR#####Aq!QV44444JJ2aE65JJKKKKKr   c                 F    ||||||f}|                      d|z             d S )Nz"ctx.arc(%f, %f, %f, %f, %.8f, %d);r&   )r   rb   rc   ra1a2flagr0   s           r   arcz
Canvas.arc   s2    1aR&

7$>?????r   c                 <    |                      d|||fz             d S )Nzctx.fillText("%s", %f, %f);r&   )r   r   rb   rc   s       r   	fill_textzCanvas.fill_text   s&    

0D!Q<?@@@@@r   c                 :    |                      d||fz             d S )Nzctx.translate(%f, %f);r&   )r   cxcys      r   	translatezCanvas.translate   s$    

+r2h677777r   c                 6    |                      d|z             d S )Nzctx.rotate(%f);r&   )r   angles     r   rotatezCanvas.rotate   s     

$u,-----r   c                 :    |                      d||fz             d S )Nzctx.scale(%f, %f);r&   )r   r5   r8   s      r   scalezCanvas.scale   s$    

'2r(233333r   c                 F    ||||||f}|                      d|z             d S )Nz&ctx.transform(%f, %f, %f, %f, %f, %f);r&   )r   m11m12m21m22dxdyr0   s           r   	transformzCanvas.transform   s2    S#sB+

;dBCCCCCr   c                 0    |                      d           d S )Nzctx.save();r&   r'   s    r   savezCanvas.save   s    

=!!!!!r   c                 0    |                      d           d S )Nzctx.restore();r&   r'   s    r   restorezCanvas.restore   s    

#$$$$$r   c                     |                      d          |                     d           |                      d          |                     d           d S d S )NrO   zctx.fill();strokezctx.stroke();)r   r   r'   s    r   finish_pathzCanvas.finish_path   sX    ::f)JJ}%%%::h+JJ''''' ,+r   N)r   )r   r   )&__name__
__module____qualname____doc__r   r   r!   r$   r(   r1   r9   r=   staticmethodrD   rG   rL   rP   rR   rV   rX   rZ   r]   r_   rd   rg   ri   rm   ro   rq   rw   ry   r}   r   r   r   r   r   r   rF   r   r   r   r      sA       !!   F F FV V V&3 3 3' ' '
 
 

 
 
D D D = = \=
 
 
= = =5 5 5K K KL L L2 2 23 3 33 3 3/ / /3 3 33 3 3' ' 'C C CH H HL L L L@ @ @A A A8 8 8. . .4 4 4D D D" " "% % %( ( ( ( (r   r   N)r   textwrapr   inkexr   r   r   rF   r   r   <module>r      sw   &               
j( j( j( j( j( j( j( j( j( j(r   