U
    «#vhÊ  ã                   @   s<   d dl Z dd„ Zdd„ Zdd„ Zdd	„ ZG d
d„ deƒZdS )é    Nc                  G   s   | D ]}|dkr|  S qdS )Nr   g        © )ÚargsÚargr   r   ú@/tmp/pip-unpacked-wheel-1ufboor8/fontTools/svgLib/path/shapes.pyÚ_prefer_non_zero   s    
r   c                 C   s   d|    d¡  d¡S )Nz%.3fÚ0Ú.)Úrstrip)Únr   r   r   Ú_ntos   s    r   c                 C   s   d| kr|   dd¡d S | S )NÚ}é   )Úsplit)Útagr   r   r   Ú_strip_xml_ns   s    r   c                 C   sP   t  d| ¡}|st‚tdd„ t  d| d¡¡D ƒƒ}t|ƒdkrLtd|  ƒ‚|S )Nzmatrix\((.*)\)c                 s   s   | ]}t |ƒV  qd S ©N)Úfloat)Ú.0Úpr   r   r   Ú	<genexpr>   s     z_transform.<locals>.<genexpr>z\s+|,r   é   zwrong # of terms in %s)ÚreÚmatchÚNotImplementedErrorÚtupler   ÚgroupÚlenÚ
ValueError)Ú	raw_valuer   Zmatrixr   r   r   Ú
_transform   s     r   c                   @   sâ   e Zd Zdd„ Zd8dd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
d9dd„Zd:dd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7S );ÚPathBuilderc                 C   s   g | _ g | _d S r   )ÚpathsÚ
transforms©Úselfr   r   r   Ú__init__%   s    zPathBuilder.__init__Ú c                 C   s   | j  |¡ | j d ¡ d S r   )r!   Úappendr"   )r$   Úinitial_pathr   r   r   Ú_start_path)   s    zPathBuilder._start_pathc                 C   s   |   d¡ d S )NÚz)Ú_addr#   r   r   r   Ú	_end_path-   s    zPathBuilder._end_pathc                 C   s.   | j d }|r|d| 7 }n|}|| j d< d S )Néÿÿÿÿú )r!   )r$   Zpath_snippetÚpathr   r   r   r+   0   s
    
zPathBuilder._addc                 C   s    |   d|t|ƒt|ƒf ¡ d S ©Nz%s%s,%s©r+   r   ©r$   ÚcÚxÚyr   r   r   Ú_move8   s    zPathBuilder._movec                 C   s   |   d||¡ d S )NÚM©r6   ©r$   r4   r5   r   r   r   r7   ;   s    zPathBuilder.Mc                 C   s   |   d||¡ d S )NÚmr8   r9   r   r   r   r:   >   s    zPathBuilder.mc              
   C   s.   |   d|t|ƒt|ƒ|t|ƒt|ƒf ¡ d S )Nz%s%s,%s 0 %d 1 %s,%sr1   )r$   r3   ÚrxÚryr4   r5   Ú	large_arcr   r   r   Ú_arcA   s
    ÿÿzPathBuilder._arcr   c                 C   s   |   d|||||¡ d S )NÚA©r>   ©r$   r;   r<   r4   r5   r=   r   r   r   r?   G   s    zPathBuilder.Ac                 C   s   |   d|||||¡ d S )NÚar@   rA   r   r   r   rB   J   s    zPathBuilder.ac                 C   s   |   d|t|ƒf ¡ d S )Nz%s%sr1   )r$   r3   r4   r   r   r   Ú_vhlineM   s    zPathBuilder._vhlinec                 C   s   |   d|¡ d S )NÚH©rC   ©r$   r4   r   r   r   rD   P   s    zPathBuilder.Hc                 C   s   |   d|¡ d S )NÚhrE   rF   r   r   r   rG   S   s    zPathBuilder.hc                 C   s   |   d|¡ d S )NÚVrE   ©r$   r5   r   r   r   rH   V   s    zPathBuilder.Vc                 C   s   |   d|¡ d S )NÚvrE   rI   r   r   r   rJ   Y   s    zPathBuilder.vc                 C   s    |   d|t|ƒt|ƒf ¡ d S r0   r1   r2   r   r   r   Ú_line\   s    zPathBuilder._linec                 C   s   |   d||¡ d S )NÚL©rK   r9   r   r   r   rL   _   s    zPathBuilder.Lc                 C   s   |   d||¡ d S )NÚlrM   r9   r   r   r   rN   b   s    zPathBuilder.lc                 C   sl   t |j dd¡ƒ}t |j dd¡ƒ}t |j dd¡ƒ}t |j dd¡ƒ}|  ¡  |  ||¡ |  ||¡ d S )NÚx1r   Úy1Úx2Úy2)r   ÚattribÚgetr)   r7   rL   )r$   ÚlinerO   rP   rQ   rR   r   r   r   Ú_parse_linee   s    zPathBuilder._parse_linec                 C   sd  t |j dd¡ƒ}t |j dd¡ƒ}t |j d¡ƒ}t |j d¡ƒ}t |j dd¡ƒ}t |j dd¡ƒ}t||ƒ}t||ƒ}|  ¡  |  || |¡ |  || | ¡ |dkrÆ|  |||| || ¡ |  || | ¡ |dkrü|  |||| | || ¡ |  || ¡ |dkr,|  ||||| | ¡ |  || ¡ |dkrX|  |||| |¡ |  	¡  d S )Nr4   r   r5   ÚwidthÚheightr;   r<   )
r   rS   rT   r   r)   r7   rD   r?   rH   r,   )r$   Zrectr4   r5   ÚwrG   r;   r<   r   r   r   Ú_parse_recto   s.    



zPathBuilder._parse_rectc                 C   s    d|j kr| j|j d d d S )NÚd)r(   ©rS   r)   )r$   r/   r   r   r   Ú_parse_path‹   s    
zPathBuilder._parse_pathc                 C   s*   d|j kr&|  d|j d  ¡ |  ¡  d S ©NZpointsr7   )rS   r)   r,   ©r$   Zpolyr   r   r   Ú_parse_polygon   s    
zPathBuilder._parse_polygonc                 C   s"   d|j kr|  d|j d  ¡ d S r^   r\   r_   r   r   r   Ú_parse_polyline”   s    
zPathBuilder._parse_polylinec                 C   s€   t |j dd¡ƒ}t |j dd¡ƒ}t |j d¡ƒ}|  ¡  |  || |¡ | j|||| |dd | j|||| |dd d S )NÚcxr   ÚcyÚrr   ©r=   ©r   rS   rT   r)   r7   r?   )r$   Zcirclerb   rc   rd   r   r   r   Ú_parse_circle˜   s    zPathBuilder._parse_circlec                 C   s   t |j dd¡ƒ}t |j dd¡ƒ}t |j d¡ƒ}t |j d¡ƒ}|  ¡  |  || |¡ | j|||| |dd | j|||| |dd d S )Nrb   r   rc   r;   r<   r   re   rf   )r$   Zellipserb   rc   r;   r<   r   r   r   Ú_parse_ellipse£   s    zPathBuilder._parse_ellipsec                 C   sT   t |jƒ}t| d| ¡  d ƒ}t|ƒs*dS ||ƒ d|jkrPt|jd ƒ| jd< dS )Nz	_parse_%sFZ	transformr-   T)r   r   ÚgetattrÚlowerÚcallablerS   r   r"   )r$   Úelr   Zparse_fnr   r   r   Úadd_path_from_element¯   s    

z!PathBuilder.add_path_from_elementN)r&   )r   )r   )Ú__name__Ú
__module__Ú__qualname__r%   r)   r,   r+   r6   r7   r:   r>   r?   rB   rC   rD   rG   rH   rJ   rK   rL   rN   rV   rZ   r]   r`   ra   rg   rh   rm   r   r   r   r   r    $   s4   



r    )r   r   r   r   r   Úobjectr    r   r   r   r   Ú<module>   s
   