
     h~                        d dl Z d dl mZ d dlmZmZmZmZmZ d dlm	Z	 d dl
Zd dlmZ d dlmZ d dlmZ  G d d	ej        j        j                  Z G d
 de          Z G d de          Z G d de          Z G d de          ZdS )    N)Decimal)ListOptionalTypeUnionoverload)Literal)ETsvg)QRModuleDrawerc                        e Zd ZU dZdZdZdZej        Z	e
e         ed<    fdZedeeef         ded	         d
efd            Zeddeeef         ded         d
efd            ZddZddZd Zd ZddZd Z xZS )SvgFragmentImagezT
    SVG image builder

    Creates a QR-code image as a SVG document fragment.
    zhttp://www.w3.org/2000/svgSVG)r   default_drawer_classc                     t          j        d| j                    t                      j        |i | |                     | j                  | _        d S )Nr   )r
   register_namespace_SVG_namespacesuper__init__unitsbox_size	unit_sizeselfargskwargs	__class__s      L/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/qrcode/image/svg.pyr   zSvgFragmentImage.__init__   sN    
eT%8999$)&)))DM22    pixelstextFreturnc                     d S N r   r!   r"   s      r   r   zSvgFragmentImage.units       r    Tc                     d S r%   r&   r'   s      r   r   zSvgFragmentImage.units#   r(   r    c                 v   t          |          dz  }|s|S |                    t          d                    }t          j        t          j        g          }	 t          d          t          d          t          d          fD ]}|                    ||          }n# t          j        $ r Y nw xY w| dS )	z8
        A box_size of 10 (default) equals 1mm.
        
   z0.001)trapsz0.01z0.10)contextmm)r   quantizedecimalContextInexact)r   r!   r"   r   r.   ds         r   r   zSvgFragmentImage.units'   s     "$ 	Lww//00/(9:::	foowu~~ws||D ; ;q'::; 	 	 	D	|||s   AB! !B32B3Nc                 \    |                      |           |                     |           d S )N)kind)
check_kind_write)r   streamr6   s      r   savezSvgFragmentImage.save7   s.    T"""Fr    c                 0    t          j        | j        fi |S r%   )r
   tostring_imgr   r   s     r   	to_stringzSvgFragmentImage.to_string;   s    {49/////r    c                      | j         di |S )Nr&   )_svgr>   s     r   	new_imagezSvgFragmentImage.new_image>   s    ty""6"""r    1.1c                     |t          j        | j        d          }|                     | j                  }t          j        |f|||d|S )Nr   )widthheightversion)r
   QNamer   r   
pixel_sizeElement)r   tagrG   r   	dimensions        r   rA   zSvgFragmentImage._svgA   sb    ;(4.66CJJt//	z
	
 

 
 
 	
r    c                 b    t          j        | j                                      |d           d S )NF)xml_declarationr
   ElementTreer=   writer   r9   s     r   r8   zSvgFragmentImage._writeM   s-    
ty!!'''FFFFFr    )Tr%   )NrC   )__name__
__module____qualname____doc__r   r6   allowed_kindssvg_drawersSvgSquareDrawerr   r   r   __annotations__r   r   r   intr   r	   r   strr:   r?   rB   rA   r8   __classcell__r   s   @r   r   r      sh          2NDM1<1L$~.LLL3 3 3 3 3 E#w,/ wu~ '    X  E#w,/ wt} PS    X       0 0 0# # #

 

 

 

G G G G G G Gr    r   c                        e Zd ZU dZdZee         ed<   ej	        i fej	        d e
d          ifej        d e
d          ifdZej        j        j        ed<   d fd		Zd
 Z xZS )SvgImageza
    Standalone SVG image builder

    Creates a QR-code image as a standalone SVG document.
    N
background
size_ratio皙?circlezgapped-circlezgapped-squaredrawer_aliasesr   c           
           t                      j        dd|i|}|                    d| j                   | j        r2|                    t          j        d| j        dddd                     |S )NrK   xmlnsrectr-   z100%)fillxyrE   rF   r&   )r   rA   setr   ra   appendr
   rJ   )r   rK   r   r   r   s       r   rA   zSvgImage._svg_   s    eggl--s-f--,---? 
	JJ
 !  	 	 	 
r    c                 d    t          j        | j                                      |dd           d S )NzUTF-8T)encodingrN   rO   rR   s     r   r8   zSvgImage._writeo   s0    
ty!!''RV'WWWWWr    r   )rS   rT   rU   rV   ra   r   r\   rZ   rX   SvgCircleDrawerr   rY   rf   qrcodeimagebaseDrawerAliasesrA   r8   r]   r^   s   @r   r`   r`   Q   s           !%J$$$.3%5ggcll7ST%5ggcll7ST7 7NFL%3         X X X X X X Xr    r`   c                        e Zd ZU dZdddddZdZdZeej	                 e
d	<   ej        Zee         e
d
<   ej        i fej        d ed          ifej        d ed          ifdZ fdZd fd	Zd Z xZS )SvgPathImagezs
    SVG image builder with one single <path> element (removes white spaces
    between individual QR points).
    z#0000001nonzeronone)rj   zfill-opacityz	fill-rulestrokeTNpathr   rb   rc   rd   c                 H    g | _          t                      j        |i | d S r%   )	_subpathsr   r   r   s      r   r   zSvgPathImage.__init__   s,    $&$)&)))))r    c                     |2|                      | j        d          }d                    |          } t                      j        dd|i|S )NF)r"   z0 0 {d} {d})r4   viewBoxr&   )r   rI   formatr   rA   )r   r   r   rL   r   s       r   rA   zSvgPathImage._svg   sV    ?

4?
??I#**Y*77Guww|66G6v666r    c                     t          j        t          j        d          fd                    | j                  dd| j        | _        g | _        | j                            | j                   d S )Nr|    zqr-path)r4   id)	r
   rJ   rH   joinr~   QR_PATH_STYLEr|   r=   rn   )r   s    r   processzSvgPathImage.process   sv     JHV
ggdn%%
 
  	
 
	 	#####r    r%   )rS   rT   rU   rV   r   needs_processingr|   r   r
   rJ   rZ   rX   SvgPathSquareDrawerr   r   r   SvgPathCircleDrawerr   rf   r   rA   r   r]   r^   s   @r   rw   rw   s   s          	 M !%D(2:
%%%1<1P$~.PPP2B7+773<<(

 +773<<(

 
N* * * * *7 7 7 7 7 7
$ 
$ 
$ 
$ 
$ 
$ 
$r    rw   c                       e Zd ZdZdZdS )SvgFillImagez9
    An SvgImage that fills the background to white.
    whiteNrS   rT   rU   rV   ra   r&   r    r   r   r                JJJr    r   c                       e Zd ZdZdZdS )SvgPathFillImagez=
    An SvgPathImage that fills the background to white.
    r   Nr   r&   r    r   r   r      r   r    r   )r1   r   typingr   r   r   r   r   typing_extensionsr	   qrcode.image.baserr   qrcode.compat.etreer
   !qrcode.image.styles.moduledrawersr   rX   &qrcode.image.styles.moduledrawers.baser   rs   rt   BaseImageWithDrawerr   r`   rw   r   r   r&   r    r   <module>r      s          8 8 8 8 8 8 8 8 8 8 8 8 8 8 % % % % % %     " " " " " " @ @ @ @ @ @ A A A A A AAG AG AG AG AGv|(< AG AG AGHX X X X X X X XD0$ 0$ 0$ 0$ 0$8 0$ 0$ 0$f    8       |     r    