Ë
    W¨œj}  ã                   ó  — d Z ddlmZmZmZ ddlZddlmZmZm	Z	m
Z
 ddlZddlmZ ddlmZ ddlmZmZmZmZmZmZ dd	lmZ dd
lmZ 	 e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Z-dZ.dZ/dZ0dZ1 G d„ d«      Z2y# e$ r eZY Œ:w xY w) z@(Experimental) replacement for import/export functionality SAX

é    )ÚdivisionÚabsolute_importÚprint_functionN)Ú	iterparseÚElementÚElementTreeÚ
SubElementé   )Ú
parse_path)Úparse_transform)Ú
path2pathdÚellipse2pathdÚ
line2pathdÚpolyline2pathdÚpolygon2pathdÚ
rect2pathd)Úopen_in_browser)Ú	transformÚsvgÚversionz1.1Úxmlnszhttp://www.w3.org/2000/svgzxmlns:xlinkzhttp://www.w3.org/1999/xlinkzxmlns:evz!http://www.w3.org/2001/xml-eventsÚwidthÚheightÚviewBoxÚpathÚdÚfillÚstrokezstroke-widthr   Únonec                   ó:   — e Zd Zd	d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd
d„Z	y)ÚSaxDocumentc                 ó  — || _         i | _        g | _        |�Zt        j                  j                  |«      dk(  r8t        j                  j                  t        j                  «       |«      | _        n|| _        |�| j                  |«       yy)aá  
        A container for a SAX SVG light tree objects document.

        This class provides functions for extracting SVG data into Path objects.

        Args:
            filename (str): The filename of the SVG file
            strict_transform_parsing (bool): If true, a ValueError is
                raised when a transform attribute contains invalid
                syntax; by default invalid transform substrings are
                skipped with an SVGSyntaxWarning.
        NÚ )
Ústrict_transform_parsingÚroot_valuesÚtreeÚosr   ÚdirnameÚjoinÚgetcwdÚoriginal_filenameÚ	sax_parse)ÚselfÚfilenamer$   s      úh/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/svgpathtools/svg_io_sax.pyÚ__init__zSaxDocument.__init__/   sr   € ð )AˆÔ%ØˆÔØˆŒ	àÐ¤B§G¡G§O¡O°HÓ$=ÀÒ$CÜ%'§W¡W§\¡\´"·)±)³+¸xÓ%HˆDÕ"à%-ˆDÔ"àÐØ�N‰N˜8Õ$ð  ó    c                 óf  — i | _         g | _        g }i }d }t        |d«      5 }t        |d¬«      D �]ê  \  }}|dk(  �rÄ|j	                  ||f«       |�|j                  «       }|}i }|j                  |«       |j                  }	|j                  |	«       |j                  dd  }
d|	v r5|	d   j                  d«      D ]  }|j                  d«      }|d	   ||d
   <   Œ  d|	v rBt        |	d   | j                  ¬«      }|€t        j                  d«      }|j                  |«      }d|
k(  r|}i }|j                  |«       || _         �Œd|
k(  r�Œd|
k(  rt        |«      |d<   nzd|
k(  rt!        |«      |d<   nfd|
k(  rt!        |«      |d<   nRd|
k(  rt#        |«      |d<   n>d|
k(  rt%        |«      |d<   n*d|
k(  rt'        |«      |d<   nd|
k(  rt)        |«      |d<   n�Œª||d<   |
|d<   | j                  j	                  |«       �ŒÑ|j+                  «       }|d
   }|d	   }�Œí 	 d d d «       y # 1 sw Y   y xY w)NÚrb)ÚstartÚend)Úeventsr4   é   ÚstyleÚ;Ú:r
   r   r   )Ústricté   r   Úgr   r   ÚcircleÚellipseÚlineÚpolylineÚpolygonÚrectÚmatrixÚname)r%   r&   Úopenr   ÚappendÚcopyÚupdateÚattribÚtagÚsplitr   r$   ÚnpÚidentityÚdotr   r   r   r   r   r   Úpop)r-   r.   ÚstackÚvaluesrD   Úsvg_fileÚeventÚelemÚcurrent_valuesÚattrsrE   ÚequateÚ
equal_itemÚtransform_matrixÚvs                  r/   r,   zSaxDocument.sax_parseH   sT  € ØˆÔØˆŒ	ØˆØˆØˆô �(˜DÔ! XÜ(¨Ð:J×KÐK‘��tØ˜GÓ#Ø—L‘L &¨&Ð!1Ô2ØÐ)Ø!'§¡£˜Ø%+�NØ�FØ—M‘M .Ô1Ø ŸK™K�EØ—M‘M %Ô(ØŸ8™8 B C˜=�DØ %Ñ'Ø&+¨G¡n×&:Ñ&:¸3Ö&?˜FØ)/¯©°cÓ):˜JØ4>¸q±M˜F :¨a¡=Ò1ð '@ð # eÑ+Ü+:Ø! +Ñ.Ø#'×#@Ñ#@ô,BÐ(ð "˜>Ü%'§[¡[°£^˜FØ!1×!5Ñ!5°fÓ!=˜Ø ’}Ø)/˜Ø!#˜ØŸ™ nÔ5Ø+9˜Ô(Ù Ø šÙ Ø 4šÜ&0°Ó&8˜˜sšØ! TÒ)Ü&3°FÓ&;˜˜sšØ" dÒ*Ü&3°FÓ&;˜˜sšØ 4šÜ&0°Ó&8˜˜sšØ# tÒ+Ü&4°VÓ&<˜˜sšØ" dÒ*Ü&3°FÓ&;˜˜sšØ 4šÜ&0°Ó&8˜˜sšá Ø'-�F˜8Ñ$Ø%)�F˜6‘NØ—I‘I×$Ñ$ VÖ,àŸ	™	›�AØ˜q™T�FØ˜q™T’Fñi  L÷ "×!Ñ!ús   ¡G<H'È'H0c                 ó”   — g }| j                   D ]6  }|d   }|d   }t        |«      }|�t        ||«       |j                  |«       Œ8 |S ©Nr   rD   )r&   r   r   rG   )r-   ÚflatrR   ÚpathdrD   Úparsed_paths         r/   Úflatten_all_pathszSaxDocument.flatten_all_pathsˆ   sU   € ØˆØ—i”iˆFØ˜3‘KˆEØ˜HÑ%ˆFÜ$ UÓ+ˆKØÐ!Ü˜+ vÔ.Ø�K‰K˜Õ$ð  ð ˆr1   c                 óf   — g }| j                   D ]  }|d   }|d   }|j                  ||f«       Œ! |S r]   )r&   rG   )r-   r^   rR   r_   rD   s        r/   Úget_pathd_and_matrixz SaxDocument.get_pathd_and_matrix“   s?   € ØˆØ—i”iˆFØ˜3‘KˆEØ˜HÑ%ˆFØ�K‰K˜ ˜Õ(ð  ð ˆr1   c                 ó¬  — t        t        «      }|j                  t        t        «       |j                  t
        t        «       |j                  t        t        «       |j                  t        t        «       | j                  j                  t        d «      }| j                  j                  t        d «      }|�|j                  t        |«       |�|j                  t        |«       | j                  j                  t        d «      }|�|j                  t        |«       t!        j"                  d«      }| j$                  D �]†  }|j                  dd«      }|j                  dd «      }t'        |t(        «      }	|�Üt!        j*                  t!        j,                  ||«      «      s³d}
|
dz  }
|
t/        |d   d   «      z  }
|
dz  }
|
t/        |d   d   «      z  }
|
dz  }
|
t/        |d   d   «      z  }
|
dz  }
|
t/        |d   d   «      z  }
|
dz  }
|
t/        |d   d	   «      z  }
|
dz  }
|
t/        |d   d	   «      z  }
|
d
z  }
|	j                  t0        |
«       t2        |v r|	j                  t2        |t2           «       t4        |v r|	j                  t4        |t4           «       t6        |v s�Œj|	j                  t6        |t6           «       �Œ‰ t9        |«      S )Nr<   r   r#   rD   zmatrix(Ú r   r
   é   Ú))r   ÚNAME_SVGÚsetÚATTR_VERSIONÚVALUE_SVG_VERSIONÚ
ATTR_XMLNSÚVALUE_XMLNSÚATTR_XMLNS_LINKÚVALUE_XLINKÚATTR_XMLNS_EVÚVALUE_XMLNS_EVr%   ÚgetÚ
ATTR_WIDTHÚATTR_HEIGHTÚATTR_VIEWBOXrM   rN   r&   r	   Ú	NAME_PATHÚallÚequalÚstringÚATTR_TRANSFORMÚ	ATTR_DATAÚ	ATTR_FILLÚATTR_STROKEr   )r-   Úrootr   r   ÚviewboxrN   rR   r_   rD   r   Úmatrix_strings              r/   Úgenerate_domzSaxDocument.generate_dom›   so  € Ü”xÓ ˆØ�‰”Ô0Ô1Ø�‰”œ[Ô)Ø�‰”¤+Ô.Ø�‰”¤Ô/Ø× Ñ ×$Ñ$¤Z°Ó6ˆØ×!Ñ!×%Ñ%¤k°4Ó8ˆØÐØ�H‰H”Z Ô'ØÐØ�H‰H”[ &Ô)Ø×"Ñ"×&Ñ&¤|°TÓ:ˆØÐØ�H‰H”\ 7Ô+Ü—;‘;˜q“>ˆØ—i•iˆFØ—J‘J˜s BÓ'ˆEØ—Z‘Z ¨$Ó/ˆFô ˜d¤IÓ.ˆDØÐ!¬"¯&©&´·±¸&À(Ó1KÔ*LØ )�Ø Ñ$�Ø¤¨¨q©	°!©Ó!5Ñ5�Ø Ñ$�Ø¤¨¨q©	°!©Ó!5Ñ5�Ø Ñ$�Ø¤¨¨q©	°!©Ó!5Ñ5�Ø Ñ$�Ø¤¨¨q©	°!©Ó!5Ñ5�Ø Ñ$�Ø¤¨¨q©	°!©Ó!5Ñ5�Ø Ñ$�Ø¤¨¨q©	°!©Ó!5Ñ5�Ø Ñ$�Ø—‘œ¨Ô7Ü˜FÑ"Ø—‘œ F¬9Ñ$5Ô6Ü˜FÑ"Ø—‘œ F¬9Ñ$5Ô6Ü˜fÓ$Ø—‘œ f¬[Ñ&9Ö:ð7  ô8 ˜4Ó Ð r1   c                 óˆ   — t        |d«      5 }| j                  «       }|j                  |«       d d d «       y # 1 sw Y   y xY w)NÚwb)rF   r�   Úwrite)r-   r.   Ú
output_svgÚdom_trees       r/   ÚsavezSaxDocument.saveÉ   s4   € Ü�(˜DÔ! ZØ×(Ñ(Ó*ˆHØ�N‰N˜:Ô&÷ "×!Ñ!ús	   �"8¸ANc                 óD   — |€d}| j                  |«       t        |«       y)z:Displays/opens the doc using the OS's default application.Nzdisplay_temp.svg)r‡   r   )r-   r.   s     r/   ÚdisplayzSaxDocument.displayÎ   s!   € àÐØ)ˆHØ�	‰	�(ÔÜ˜Õ!r1   )F)N)
Ú__name__Ú
__module__Ú__qualname__r0   r,   ra   rc   r�   r‡   r‰   © r1   r/   r!   r!   .   s'   „ ó%ò2>"ò@	òò,!ò\'ô
"r1   r!   )3Ú__doc__Ú
__future__r   r   r   r'   Úxml.etree.ElementTreer   r   r   r	   ÚnumpyrM   Úparserr   r   Úsvg_to_pathsr   r   r   r   r   r   Ú	misctoolsr   r   r   Ú
basestringry   Ú	NameErrorÚstrrh   rj   rk   rl   rm   rn   ro   rp   rq   rs   rt   ru   rv   r{   r|   r}   ÚATTR_STROKE_WIDTHrz   Ú
VALUE_NONEr!   r�   r1   r/   Ú<module>rš      sÈ   ðñ÷
 AÑ @Û 	ß MÓ MÛ õ Ý #÷F÷ Få &Ý ðØ€Fð €Ø€ØÐ Ø€
Ø*€Ø€Ø,€Ø€Ø4€Ø€
Ø€Ø€Ø€	Ø€	Ø€	Ø€Ø"Ð Ø€Ø€
÷e"ò e"øð1 ò Ø‚Fðús   Á
A= Á=BÂB