o
    |XWa                     @   s   d dl mZ zd dlmZ W n ey    d dlm  mZ Y nw d dl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 )    DecimalNc                       st   e Zd ZdZdZdZdZ fddZdd Zdd
dZ	dddZ
dd Zdd Zd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   c                    s2   t d| j t j|i | | | j| _d S )Nsvg)ETregister_namespace_SVG_namespacesuper__init__unitsbox_size	unit_sizeselfargskwargs	__class__ F/var/www/chikooza/env/lib/python3.10/site-packages/qrcode/image/svg.pyr      s   zSvgFragmentImage.__init__c                 C   s   | j | || d S N)_imgappend_rectr   rowcolr   r   r   drawrect   s   zSvgFragmentImage.drawrectTc                 C   s   t |d }|s
|S d| S )z8
        A box_size of 10 (default) equals 1mm.
        
   z%smmr   )r   pixelstextr   r   r   r   r      s   zSvgFragmentImage.unitsNc                 C   s   | j |d | | d S )N)kind)
check_kind_write)r   streamr"   r   r   r   save&   s   zSvgFragmentImage.savec                 C   s   t | jS r   )r   tostringr   )r   r   r   r   	to_string*   s   zSvgFragmentImage.to_stringc                 K   s   |   S r   )_svg)r   r   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   r)   0   s   zSvgFragmentImage._svgc                 C   sN   |d u rt | jd}| ||d \}}t j|| || || j| jdS )Nrectr   )xyr,   r-   )r   r/   r	   	pixel_boxr1   r   r   )r   r   r   r2   r5   r6   r   r   r   r   8   s   zSvgFragmentImage._rectc                 C   s   t | jj|dd d S )NF)xml_declarationr   ElementTreer   writer   r%   r   r   r   r$   @   s   zSvgFragmentImage._write)Tr   )Nr+   )__name__
__module____qualname____doc__r	   r"   allowed_kindsr   r   r   r&   r(   r*   r)   r   r$   __classcell__r   r   r   r   r   	   s    

	

r   c                       s:   e Zd ZdZdZd
 fdd	Z fddZdd	 Z  ZS )SvgImageza
    Standalone SVG image builder

    Creates a QR-code image as a standalone SVG document.
    Nr   c              
      sL   t  jdd|i|}|d| j | jr$|tjd| jddddd |S )Nr2   xmlnsr4   0z100%)fillr5   r6   r,   r-   r   )r
   r)   setr	   
backgroundr   r   r1   )r   r2   r   r   r   r   r   r)   L   s   zSvgImage._svgc                    s   t  j||ddS )Nr4   )r2   )r
   r   r   r   r   r   r   V   s   zSvgImage._rectc                 C   s   t | jj|ddd d S )NzUTF-8T)encodingr8   r9   r<   r   r   r   r$   Y   s   
zSvgImage._write)r   )	r=   r>   r?   r@   rH   r)   r   r$   rB   r   r   r   r   rC   D   s    
rC   c                       sh   e Zd ZdZdddddZ fddZd fd
d	Zdd Zdd Zdd Z	dd Z
 f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)rF   zfill-opacityz	fill-rulestrokec                    s   t  | _t j|i | d S r   )rG   _pointsr
   r   r   r   r   r   r   g   s   zSvgPathImage.__init__Nc                    s:   |d u r| j | jdd}dj|d}t jdd|i|S )NFr!   z0 0 {d} {d})dviewBoxr   )r   r0   formatr
   r)   )r   rR   r   r3   r   r   r   r)   k   s   zSvgPathImage._svgc                 C   s   | j ||f d S r   )rO   addr   r   r   r   r   q   s   zSvgPathImage.drawrectc                 c   s|    | j | jdd}| jD ]/}| j |d | j | j dd}| j |d | j | j dd}dt|||| || d V  qdS )z*Generates individual QR points as subpathsFrP   r      zAM %(x0)s %(y0)s L %(x0)s %(y1)s L %(x1)s %(y1)s L %(x1)s %(y0)s z)x0y0x1y1N)r   r   rO   borderdict)r   	rect_sizepointx_basey_baser   r   r   _generate_subpathsu   s"   
zSvgPathImage._generate_subpathsc                 C   s.   |   }tjtdfd|dd| jS )Npath zqr-path)rQ   id)r`   r   r1   r/   joinQR_PATH_STYLE)r   subpathsr   r   r   	make_path   s   zSvgPathImage.make_pathc                 C   s"   | j  }||   t|S r   )r   __copy__r   rg   r   r'   )r   imgr   r   r   r(      s   

zSvgPathImage.to_stringc                    s    | j |   t | d S r   )r   r   rg   r
   r$   r<   r   r   r   r$      s   zSvgPathImage._writer   )r=   r>   r?   r@   re   r   r)   r   r`   rg   r(   r$   rB   r   r   r   r   rJ   ^   s    
rJ   c                   @      e Zd ZdZdZdS )SvgFillImagez9
    An SvgImage that fills the background to white.
    whiteNr=   r>   r?   r@   rH   r   r   r   r   rk          rk   c                   @   rj   )SvgPathFillImagez=
    An SvgPathImage that fills the background to white.
    rl   Nrm   r   r   r   r   ro      rn   ro   )decimalr   
lxml.etreeetreer   ImportErrorxml.etree.ElementTreer:   qrcode.image.baseqrcodeimagebase	BaseImager   rC   rJ   rk   ro   r   r   r   r   <module>   s    ;=