
     h                        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                   8    e Zd Z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)zA 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
        N )	root_valuestreeosr   dirnamejoingetcwdoriginal_filename	sax_parseselffilenames     s/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/svgpathtools/svg_io_sax.py__init__zSaxDocument.__init__/   si     	BGGOOH$=$C%'WW\\"))+x%HD"%-D"NN8$      c                 
   i | _         g | _        g }i }d }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 r6t        |d
         }|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   } y )N)startend)eventsr3      style;:r
   r   r      r   gr   r   circleellipselinepolylinepolygonrectmatrixname)r$   r%   r   appendcopyupdateattribtagsplitr   npidentitydotr   r   r   r   r   r   pop)r-   r.   stackvaluesrB   eventelemcurrent_valuesattrsrC   equate
equal_itemtransform_matrixvs                 r/   r+   zSaxDocument.sax_parseB   s0   	$X6FG 2	KE4ff-.%#[[]F!'n-e$xx}e#"'."6"6s"; >%+\\#%6
0:1z!}-> %''6u[7I'J$~!#Q-11&9FD=%+NFMM.1'5D$D[t^",V"4F3K%"/"7F3K$&"/"7F3Kt^",V"4F3K4'"0"8F3K$&"/"7F3Kt^",V"4F3K#)x !%v		  (IIK11e2	r1   c                     g }| j                   D ]6  }|d   }|d   }t        |      }|t        ||       |j                  |       8 |S Nr   rB   )r%   r   r   rD   )r-   flatrO   pathdrB   parsed_paths         r/   flatten_all_pathszSaxDocument.flatten_all_paths|   sZ    ii 	%F3KEH%F$U+K!+v.KK$	% r1   c                 f    g }| j                   D ]  }|d   }|d   }|j                  ||f       ! |S rY   )r%   rD   )r-   rZ   rO   r[   rB   s        r/   get_pathd_and_matrixz SaxDocument.get_pathd_and_matrix   sD    ii 	)F3KEH%FKK(	) 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,                  ||            sd}
|
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#   rB   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_VIEWBOXrJ   rK   r%   r	   	NAME_PATHallequalstringATTR_TRANSFORM	ATTR_DATA	ATTR_FILLATTR_STROKEr   )r-   rootr   r   viewboxrK   rO   r[   rB   r   matrix_strings              r/   generate_domzSaxDocument.generate_dom   st   x 01[)+./  $$Z6!!%%k48HHZ'HH[&)""&&|T:HH\7+;;q>ii 	;FJJsB'EZZ$/F dI.D!"&&&(1K*L )$q	!!55$q	!!55$q	!!55$q	!!55$q	!!55$q	!!55$7F"F9$56F"F9$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)openr}   write)r-   r.   
output_svgdom_trees       r/   savezSaxDocument.save   s=    (D! 	'Z((*HNN:&	' 	' 	'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,   s     r/   displayzSaxDocument.display   s!    )H		(!r1   )N)
__name__
__module____qualname__r0   r+   r]   r_   r}   r   r    r1   r/   r!   r!   .   s'    %&8t	,!\'
"r1   r!   )3__doc__
__future__r   r   r   r&   xml.etree.ElementTreer   r   r   r	   numpyrJ   parserr   r   svg_to_pathsr   r   r   r   r   r   	misctoolsr   r   r   
basestringru   	NameErrorstrrd   rf   rg   rh   ri   rj   rk   rl   rm   ro   rp   rq   rr   rw   rx   ry   ATTR_STROKE_WIDTHrv   
VALUE_NONEr!   r   r1   r/   <module>r      s   
 A @ 	 M M   #F F & F  
*,4
			" 
Y" Y"1  Fs   
A= =BB