o
    ¼ÇhÊ  ã                   @   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   úp/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/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| v 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r&t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   Ú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d9d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%   Úpath_snippetÚpathr   r   r   r,   0   s
   
zPathBuilder._addc                 C   ó    |   d|t|ƒt|ƒf ¡ d S ©Nz%s%s,%s©r,   r   ©r%   ÚcÚxÚyr   r   r   Ú_move8   ó    zPathBuilder._movec                 C   ó   |   d||¡ d S )NÚM©r9   ©r%   r7   r8   r   r   r   r<   ;   ó   zPathBuilder.Mc                 C   r;   )NÚmr=   r>   r   r   r   r@   >   r?   zPathBuilder.mc              
   C   s.   |   d|t|ƒt|ƒ|t|ƒt|ƒf ¡ d S )Nz%s%s,%s 0 %d 1 %s,%sr4   )r%   r6   ÚrxÚryr7   r8   Ú	large_arcr   r   r   Ú_arcA   s
   ÿÿzPathBuilder._arcr   c                 C   ó   |   d|||||¡ d S )NÚA©rD   ©r%   rA   rB   r7   r8   rC   r   r   r   rF   G   ó   zPathBuilder.Ac                 C   rE   )NÚarG   rH   r   r   r   rJ   J   rI   zPathBuilder.ac                 C   s   |   d|t|ƒf ¡ d S )Nz%s%sr4   )r%   r6   r7   r   r   r   Ú_vhlineM   s   zPathBuilder._vhlinec                 C   ó   |   d|¡ d S )NÚH©rK   ©r%   r7   r   r   r   rM   P   ó   zPathBuilder.Hc                 C   rL   )NÚhrN   rO   r   r   r   rQ   S   rP   zPathBuilder.hc                 C   rL   )NÚVrN   ©r%   r8   r   r   r   rR   V   rP   zPathBuilder.Vc                 C   rL   )NÚvrN   rS   r   r   r   rT   Y   rP   zPathBuilder.vc                 C   r2   r3   r4   r5   r   r   r   Ú_line\   r:   zPathBuilder._linec                 C   r;   )NÚL©rU   r>   r   r   r   rV   _   r?   zPathBuilder.Lc                 C   r;   )NÚlrW   r>   r   r   r   rX   b   r?   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*   r<   rV   )r%   ÚlinerY   rZ   r[   r\   r   r   r   Ú_parse_linee   s   zPathBuilder._parse_linec                 C   s`  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rc|  |||| || ¡ |  || | ¡ |dkr~|  |||| | || ¡ |  || ¡ |dkr•|  ||||| | ¡ |  || ¡ |dkrª|  |||| |¡ |  	¡  d S )Nr7   r   r8   ÚwidthÚheightrA   rB   )
r   r]   r^   r   r*   r<   rM   rF   rR   r-   )r%   Úrectr7   r8   ÚwrQ   rA   rB   r   r   r   Ú_parse_recto   s.   

zPathBuilder._parse_rectc                 C   s$   d|j v r| j|j d d d S d S )NÚd)r)   ©r]   r*   )r%   r1   r   r   r   Ú_parse_path‹   s   
ÿzPathBuilder._parse_pathc                 C   s.   d|j v r|  d|j d  ¡ |  ¡  d S d S ©NÚpointsr<   )r]   r*   r-   ©r%   Úpolyr   r   r   Ú_parse_polygon   s   
þzPathBuilder._parse_polygonc                 C   s&   d|j v r|  d|j d  ¡ d S d S ri   rg   rk   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   ©rC   ©r   r]   r^   r*   r<   rF   )r%   Úcirclero   rp   rq   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 )Nro   r   rp   rA   rB   r   rr   rs   )r%   Úellipsero   rp   rA   rB   r   r   r   Ú_parse_ellipse£   s   zPathBuilder._parse_ellipsec                 C   sT   t |jƒ}t| d| ¡  d ƒ}t|ƒsdS ||ƒ d|jv r(t|jd ƒ| jd< dS )Nz	_parse_%sFÚ	transformr.   T)r   r   ÚgetattrÚlowerÚcallabler]   r    r#   )r%   Úelr   Úparse_fnr   r   r   Úadd_path_from_element¯   s   

z!PathBuilder.add_path_from_elementN)r'   )r   )Ú__name__Ú
__module__Ú__qualname__r&   r*   r-   r,   r9   r<   r@   rD   rF   rJ   rK   rM   rQ   rR   rT   rU   rV   rX   r`   re   rh   rm   rn   ru   rw   r~   r   r   r   r   r!   $   s6    



r!   )r   r   r   r   r    Úobjectr!   r   r   r   r   Ú<module>   s    