o
    /׾g~                     @   s   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	 d	ejjjZG d
d deZG dd deZG dd deZG dd deZdS )    N)Decimal)ListOptionalTypeUnionoverload)Literal)ETsvg)QRModuleDrawerc                       s   e Zd ZU dZdZdZdZejZ	e
e ed<  fddZedeeef d	ed
 defddZeddeeef d	ed defddZdddZdddZdd Zdd ZdddZdd Z  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                    s2   t 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__ Z/var/www/html/backend_erp/backend_erp_env/lib/python3.10/site-packages/qrcode/image/svg.pyr      s   zSvgFragmentImage.__init__pixelstextFreturnc                 C      d S Nr   r   r   r    r   r   r   r         zSvgFragmentImage.unitsTc                 C   r"   r#   r   r$   r   r   r   r   #   r%   c                 C   s   t |d }|s
|S |t d}tjtjgd}zt dt dt dfD ]	}|j||d}q%W n
 tjy:   Y n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)   dr   r   r   r   '   s   
Nc                 C   s   | j |d | | d S )N)kind)
check_kind_write)r   streamr0   r   r   r   save7   s   zSvgFragmentImage.savec                 K   s   t j| jfi |S r#   )r	   tostring_imgr   r   r   r   r   	to_string;   s   zSvgFragmentImage.to_stringc                 K   s   | j di |S )Nr   )_svgr7   r   r   r   	new_image>   s   zSvgFragmentImage.new_image1.1c                 K   s<   |d u rt | jd}| | j}t j|f|||d|S )Nr   )widthheightversion)r	   QNamer   r   
pixel_sizeElement)r   tagr>   r   	dimensionr   r   r   r9   A   s   zSvgFragmentImage._svgc                 C   s   t | jj|dd d S )NF)xml_declarationr	   ElementTreer6   writer   r3   r   r   r   r2   M   s   zSvgFragmentImage._write)Tr#   )Nr;   )__name__
__module____qualname____doc__r   r0   allowed_kindssvg_drawersSvgSquareDrawerr   r   r   __annotations__r   r   r   intr   r   r   strr4   r8   r:   r9   r2   __classcell__r   r   r   r   r      s"   
 $&


r   c                       sx   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	d
	Zdd Z  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              
      sL   t  jdd|i|}|d| j | jr$|tjd| jddddd |S )NrB   xmlnsrectr(   z100%)fillxyr<   r=   r   )r   r9   setr   rU   appendr	   rA   )r   rB   r   r   r   r   r   r9   _   s   
zSvgImage._svgc                 C   s   t | jj|ddd d S )NzUTF-8T)encodingrD   rE   rH   r   r   r   r2   o   s   zSvgImage._writer
   )rI   rJ   rK   rL   rU   r   rR   rP   rN   SvgCircleDrawerr   rO   rZ   qrcodeimagebaseDrawerAliasesr9   r2   rS   r   r   r   r   rT   Q   s   
 rT   c                       s   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dZd fdd	Zdd Z  ZS )SvgPathImagezs
    SVG image builder with one single <path> element (removes white spaces
    between individual QR points).
    z#0000001nonzeronone)r]   zfill-opacityz	fill-rulestrokeTNpathr   rV   rW   rX   c                    s   g | _ t j|i | d S r#   )	_subpathsr   r   r   r   r   r   r      s   zSvgPathImage.__init__c                    s:   |d u r| j | jdd}dj|d}t jdd|i|S )NF)r    z0 0 {d} {d})r/   viewBoxr   )r   r@   formatr   r9   )r   ro   r   rC   r   r   r   r9      s   zSvgPathImage._svgc                 C   sB   t jt dfd| jdd| j| _g | _| j| j d S )Nrm    zqr-path)r/   id)	r	   rA   r?   joinrn   QR_PATH_STYLErm   r6   ra   )r   r   r   r   process   s   
zSvgPathImage.processr#   )rI   rJ   rK   rL   rt   needs_processingrm   r   r	   rA   rP   rN   SvgPathSquareDrawerr   r   r   SvgPathCircleDrawerr   rZ   r   r9   ru   rS   r   r   r   r   rh   s   s*   
 

rh   c                   @      e Zd ZdZdZdS )SvgFillImagez9
    An SvgImage that fills the background to white.
    whiteNrI   rJ   rK   rL   rU   r   r   r   r   rz          rz   c                   @   ry   )SvgPathFillImagez=
    An SvgPathImage that fills the background to white.
    r{   Nr|   r   r   r   r   r~      r}   r~   )r,   r   typingr   r   r   r   r   typing_extensionsr   qrcode.image.baserd   qrcode.compat.etreer	   !qrcode.image.styles.moduledrawersr   rN   &qrcode.image.styles.moduledrawers.baser   re   rf   BaseImageWithDrawerr   rT   rh   rz   r~   r   r   r   r   <module>   s    D"3