
    BPc&                        d Z ddlmZ ddlZddlZddlmZ  G d d          Z G d de          Z	 G d	 d
e	          Z
 G d de	          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          ZdS )!z7
Element parsing and context for ink2canvas extensions
    )unicode_literalsN)inkex_gettextc                       e Zd ZdZd Zd ZdS )ElementzBase Elementc                     || _         d S N)node)selfr	   s     4/usr/share/inkscape/extensions/ink2canvas_lib/svg.py__init__zElement.__init__%   s    			    c                     	 t          | j                            |                    }n7# t          t          t
          f$ r | j                            |          }Y nw xY w|S )zGet attribute)floatr	   get
ValueError	TypeErrorAttributeError)r
   valattrs      r   r   zElement.attr(   sb    	&s++,,DDI~6 	& 	& 	&9==%%DDD	&s   '* 1AAN)__name__
__module____qualname____doc__r   r    r   r   r   r   "   s8              r   r   c                        e Zd Z fdZ xZS )GradientDefc                 X    t                                          |           || _        d S r   )superr   stops)r
   r	   r   	__class__s      r   r   zGradientDef.__init__2   s&    


r   )r   r   r   r   __classcell__r    s   @r   r   r   1   s8                r   r   c                       e Zd Zd Zd ZdS )LinearGradientDefc                     |                      d          }|                      d          }|                      d          }|                      d          }d S )Nx1y1x2y2r   r
   r&   r'   r(   r)   s        r   get_datazLinearGradientDef.get_data8   sB    YYt__YYt__YYt__YYt__r   c                     d S r   r   r
   s    r   drawzLinearGradientDef.draw@       r   Nr   r   r   r,   r/   r   r   r   r$   r$   7   s2              r   r$   c                       e Zd Zd Zd ZdS )RadialGradientDefc                     |                      d          }|                      d          }|                      d          }d S )Ncxcyrr*   r
   r5   r6   r7   s       r   r,   zRadialGradientDef.get_dataE   s3    YYt__YYt__IIcNNr   c                     d S r   r   r.   s    r   r/   zRadialGradientDef.drawL   r0   r   Nr1   r   r   r   r3   r3   D   s2              r   r3   c                   `     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Z xZS )AbstractShapec                 t    t                                          |           || _        || _        d | _        d S r   )r   r   commandctxgradient)r
   r=   r	   r>   r    s       r   r   zAbstractShape.__init__Q   s4    r   c                     d S r   r   r.   s    r   r,   zAbstractShape.get_dataW   s    tr   c                 4    | j                                         S r   )r	   specified_styler.   s    r   	get_stylezAbstractShape.get_styleZ   s    y((***r   c                    || j         _        |D ]r}dd                    |                    d                    z   }t	          | j         |          r0||         dk    r$ t          | j         |          ||                    st	          | j         d          rNd|vrJ| j                             d           |d          k    r#| j                              |d                     || j         _        dS )z3Translates style properties names into method callsset__-nonestyle_cacheopacityN)r>   stylejoinsplithasattrgetattrrI   set_opacity)r
   rK   keymethods       r   	set_stylezAbstractShape.set_style]   s     	6 	6Cchhsyy~~666Ftx(( 6U3Z6-A-A)&))%*555 DHm,,	&&$$Y//553C3CCCH  i      %r   c                 F    t          |                     d                    S )N	transformboolr   r.   s    r   has_transformzAbstractShape.has_transformo       DIIk**+++r   c                 >    | j         j                                        S r   )r	   rU   to_hexadr.   s    r   get_transformzAbstractShape.get_transformr   s    y"++---r   c                 |    |                                  } |d          }|d uot          |t          j                  S Nfill)rC   
isinstanceinkexGradient)r
   rK   r_   s      r   has_gradientzAbstractShape.has_gradientu   s:      uV}}4DJtU^$D$DDr   c                 d    |                                  } |d                                          S r^   )rC   get_id)r
   rK   s     r   get_gradient_hrefzAbstractShape.get_gradient_hrefz   s+      uV}}##%%%r   c                 F    t          |                     d                    S )Nz	clip-pathrV   r.   s    r   has_clipzAbstractShape.has_clip~   rY   r   c                     || _         | j                            d|                     d          z             |                                 s|                                 r| j                                         d S d S )Nz
// #%sid)r?   r>   writer   rX   rh   save)r
   r?   s     r   startzAbstractShape.start   sl     zDIIdOO3444 	4==?? 	HMMOOOOO	 	r   c                    |                                  }|                                 }| j                                         |                                 r#|                                 } | j        j        |  |                                 r| j        	                                 | 
                    |            t          | j        | j                  |  | j                                         d S r   )r,   rC   r>   
begin_pathrX   r\   rU   rc   r?   r/   rS   rO   r=   finish_path)r
   datarK   trans_matrixs       r   r/   zAbstractShape.draw   s    }}   	.--//LDH-- 	!M   u'$,''..r   c                     |                                  s|                                 r| j                                         d S d S r   )rX   rh   r>   restorer.   s    r   endzAbstractShape.end   sI     	4==?? 	H	 	r   )r   r   r   r   r,   rC   rS   rX   r\   rc   rf   rh   rm   r/   ru   r!   r"   s   @r   r;   r;   P   s              + + +% % %$, , ,. . .E E E
& & &, , ,          r   r;   c                       e Zd Zd ZdS )Gc                 x    |                                  r%|                                 } | j        j        |  d S d S r   )rX   r\   r>   rU   )r
   rr   s     r   r/   zG.draw   sI     	.--//LDH----	. 	.r   N)r   r   r   r/   r   r   r   rw   rw      s#        . . . . .r   rw   c                       e Zd Zd ZdS )Rectc                    |                      d          }|                      d          }|                      d          }|                      d          }|                      d          pd}|                      d          pd}||||||fS )Nxywidthheightrxr   ryr*   )r
   r|   r}   r~   r   r   r   s          r   r,   zRect.get_data   s}    IIcNNIIcNN		'""8$$YYt__!YYt__!!UFB**r   Nr   r   r   r,   r   r   r   rz   rz      s#        + + + + +r   rz   c                       e Zd Zd Zd ZdS )Circlec                 N    t                               | |||           d| _        d S )Narc)r;   r   r=   r
   r=   r	   r>   s       r   r   zCircle.__init__   s'    tWdC888r   c                     |                      d          }|                      d          }|                      d          }|||dt          j        dz  dfS )Nr5   r6   r7   r      T)r   mathpir8   s       r   r,   zCircle.get_data   sH    YYt__YYt__IIcNN2q!TWq[$..r   N)r   r   r   r   r,   r   r   r   r   r      s2          / / / / /r   r   c                       e Zd Zd Zd ZdS )Ellipsec                     |                      d          }|                      d          }|                      d          }|                      d          }||||fS )Nr5   r6   r   r   r*   )r
   r5   r6   r   r   s        r   r,   zEllipse.get_data   sL    YYt__YYt__YYt__YYt__2r2~r   c           	      r   |                                  \  }}}}|                                 }| j                                         |                                 r#|                                 } | j        j        |  |                     |           dt          j	        d          dz
  dz  z  }| j        
                    |||z
             | j                            |||z  z   ||z
  ||z   |||z  z
  ||z   |           | j                            ||z   |||z  z   |||z  z   ||z   |||z              | j                            |||z  z
  ||z   ||z
  |||z  z   ||z
  |           | j                            ||z
  |||z  z
  |||z  z
  ||z
  |||z
             | j                                         d S )N   r         )r,   rC   r>   ro   rX   r\   rU   rS   r   sqrtmove_tobezier_curve_torp   )r
   r5   r6   r   r   rK   rr   kappas           r   r/   zEllipse.draw   s   BB   	.--//LDH--udillQ&!+,R"W%%%  %"*rBwRurz1BBGR	
 	
 	
 	  GR52:&ebj(927BR	
 	
 	
 	  %"*rBwRurz1BBGR	
 	
 	
 	  GR52:&ebj(927BR	
 	
 	
 	r   Nr1   r   r   r   r   r      s2              r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )Pathc                 N    t                               | |||           d| _        d S )N)r   r   )r;   r   current_positionr   s       r   r   zPath.__init__   s*    tWdC888 $r   c                 ~    | j                             |d         |d                    |d         |d         f| _        d S Nr   r   )r>   r   r   r
   rq   s     r   path_move_tozPath.path_move_to   =    a$q'*** $Qa 0r   c                 ~    | j                             |d         |d                    |d         |d         f| _        d S r   )r>   line_tor   r   s     r   path_line_tozPath.path_line_to   r   r   c                     |d         |d         |d         |d         f\  }}}}|d         |d         }}| j                             ||||||           ||f| _        d S )Nr   r   r   r   r      )r>   r   r   )r
   rq   r&   r'   r(   r)   r|   r}   s           r   path_curve_tozPath.path_curve_to   sk    a$q'47DG;BBAwQ1  RRA666 !1r   c                 8    | j                                          d S r   )r>   
close_pathr   s     r   
path_closezPath.path_close   s    r   c                    |                                  }| j                                         |                                 r#|                                 } | j        j        |  |                     |           | j        | j        | j	        | j
        d}| j        j                                                                                                        D ]\  }}||v r ||         |           | j                                         dS )z-Gets the node type and calls the given method)MLCZN)rC   r>   ro   rX   r\   rU   rS   r   r   r   r   r	   pathto_superpathto_path	to_arraysrp   )r
   rK   rr   path_commandcommrq   s         r   r/   z	Path.draw   s      	.--//LDH--u ""#	
 
 ).5577??AAKKMM 	) 	)JD$|##"T"4(((r   N)	r   r   r   r   r   r   r   r   r/   r   r   r   r   r      sn        % % %1 1 11 1 1% % %      r   r   c                       e Zd Zd ZdS )Linec                     |                      d          }|                      d          }|                      d          }|                      d          }d||ffd||fffS )Nr&   r'   r(   r)   r   r   r*   r+   s        r   r,   zLine.get_data  sY    YYt__YYt__YYt__YYt__b"Xr2h//r   Nr   r   r   r   r   r   
  s#        0 0 0 0 0r   r   c                       e Zd Zd ZdS )Polygonc                 2   |                      d                                                              d          }t          d |          }g }|D ];}t	          t          t
          |                    }|                    d|g           <d|d         d<   |S )Npoints c                 ,    |                      d          S )N,)rM   )r|   s    r   <lambda>z"Polygon.get_data.<locals>.<lambda>  s    qwws|| r   r   r   r   )r   striprM   maplistr   append)r
   r   r   points       r   r,   zPolygon.get_data  s    8$$**,,22377++V44 	& 	&EUE**++EKKe%%%%Q
r   Nr   r   r   r   r   r     s#            r   r   c                       e Zd ZdS )PolylineN)r   r   r   r   r   r   r   r     s        Dr   r   c                   &    e Zd Zd Zd Zd Zd ZdS )Textc                 n    ||j         S |D ](}|j         |                     |          z   |j        z   c S d S r   )texttext_helpertail)r
   tspants_curs      r   r   zText.text_helper$  sU    : 	H 	HF;!1!1&!9!99FKGGGG	H 	Hr   c                     d}g }|D ]!}||v r|                     ||                    "| j                            d                    |                     d S )N)z
font-stylezfont-weightz	font-sizezfont-familyr   )r   r>   set_fontrL   )r
   rK   keysr   rQ   s        r   set_text_stylezText.set_text_style*  sa    H 	( 	(Ce||E#J'''#((4..)))))r   c                 ^    |                      d          }|                      d          }||fS )Nr|   r}   r*   )r
   r|   r}   s      r   r,   zText.get_data2  s)    IIcNNIIcNN!tr   c                    | j         D ]8}t          |t          j                  rt	          t          d                    9|                                 }|                                 r#|                                 } | j	        j
        |  |                     |           |                     |           | j         D ]}|                     |          }t          |                    d                                          d                   }t          |                    d                                          d                   }| j	                            |||           d S )Nz#TextPath elements are not supportedr|   r   r}   )r	   r`   ra   TextPathr   rF   rC   rX   r\   r>   rU   rS   r   r   r   r   rM   	fill_text)r
   r   rK   rr   r   cur_xcur_ys          r   r/   z	Text.draw7  sN   Y 	K 	KE%00 K #H!I!IJJJK   	.--//LDH--uE"""Y 	3 	3E##E**D%))C....00344E%))C....00344EHtUE2222		3 	3r   N)r   r   r   r   r   r,   r/   r   r   r   r   r   #  sS        H H H* * *  
3 3 3 3 3r   r   )r   
__future__r   r   ra   inkex.localizationr   rF   r   r   r$   r3   r;   rw   rz   r   r   r   r   r   r   r   r   r   r   <module>r      s  &  ( ' ' ' ' '   1 1 1 1 1 1           '   
 
 
 
 
 
 
 
	 	 	 	 	 	 	 	G G G G GG G G GT. . . . . . . .+ + + + += + + +
/ 
/ 
/ 
/ 
/] 
/ 
/ 
/    m   D+ + + + += + + +\0 0 0 0 04 0 0 0	 	 	 	 	d 	 	 		 	 	 	 	w 	 	 	#3 #3 #3 #3 #3= #3 #3 #3 #3 #3r   