Ë
    D<Tf~  ã                   ó  — 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y)é    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        ‰| �  |i |¤Ž | j                  | j                  «      | _        y )Nr   )r
   Úregister_namespaceÚ_SVG_namespaceÚsuperÚ__init__ÚunitsÚbox_sizeÚ	unit_size©ÚselfÚargsÚkwargsÚ	__class__s      €úOC:\Users\user\Documents\project_loop\venv\Lib\site-packages\qrcode/image/svg.pyr   zSvgFragmentImage.__init__   s?   ø€ Ü
×Ñ˜e T×%8Ñ%8Ô9Ü‰Ñ˜$Ð) &Ò)àŸ™ D§M¡MÓ2ˆ�ó    ÚpixelsÚtextFÚreturnc                  ó   — y ©N© ©r   r!   r"   s      r   r   zSvgFragmentImage.units   ó   € àr    Tc                  ó   — y r%   r&   r'   s      r   r   zSvgFragmentImage.units#   r(   r    c                 óT  — t        |«      dz  }|s|S |j                  t        d«      «      }t        j                  t        j                  g¬«      }	 t        d«      t        d«      t        d«      fD ]  }|j                  ||¬«      }Œ 	 |› d�S # t        j                  $ r Y Œw xY w)	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Ø—‘œw wÓ/Ó0ˆÜ—/‘/¬¯©Ð(9Ô:ˆð	Ü˜f“o¤w¨u£~´w¸s³|ÐDò ;�ØŸ™ q°'˜Ó:‘ñ;ð �˜ˆ|Ðøô �‰ò 	Ùð	ús   Á8B ÂB'Â&B'c                 óJ   — | j                  |¬«       | j                  |«       y )N)Úkind)Ú
check_kindÚ_write)r   Ústreamr6   s      r   ÚsavezSvgFragmentImage.save7   s   € Ø�‰˜TˆÔ"Ø�‰�FÕr    c                 óB   — t        j                  | j                  fi |¤ŽS r%   )r
   ÚtostringÚ_img©r   r   s     r   Ú	to_stringzSvgFragmentImage.to_string;   s   € Ü�{‰{˜4Ÿ9™9Ñ/¨Ñ/Ð/r    c                 ó&   —  | j                   di |¤ŽS )Nr&   )Ú_svgr>   s     r   Ú	new_imagezSvgFragmentImage.new_image>   s   € Øˆt�y‰yÑ"˜6Ñ"Ð"r    c                 ó°   — |€ t        j                  | j                  d«      }| j                  | j                  «      }t        j
                  |f|||dœ|¤ŽS )Nr   )ÚwidthÚheightÚversion)r
   ÚQNamer   r   Ú
pixel_sizeÚElement)r   ÚtagrF   r   Ú	dimensions        r   rA   zSvgFragmentImage._svgA   s[   € Øˆ;Ü—(‘(˜4×.Ñ.°Ó6ˆCØ—J‘J˜tŸ™Ó/ˆ	Ü�z‰zØð
àØØñ	
ð
 ñ
ð 	
r    c                 ód   — t        j                  | j                  «      j                  |d¬«       y )NF)Úxml_declaration©r
   ÚElementTreer=   Úwrite©r   r9   s     r   r8   zSvgFragmentImage._writeM   s"   € Ü
�‰�t—y‘yÓ!×'Ñ'¨ÀÐ'ÕFr    )Tr%   )Nz1.1)Ú__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      sÀ   ø… ñð 2€NØ€DØ€MØ1<×1LÑ1LÐ˜$˜~Ñ.ÓLô3ð ð˜E # w ,Ñ/ð °w¸u±~ð È'ò ó ðð ñ˜E # w ,Ñ/ð °w¸t±}ð ÐPSò ó ðóó ò0ò#ó

ö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_aliasesc           
      óâ   •— t        ‰| �  dd|i|¤Ž}|j                  d| j                  «       | j                  r4|j                  t        j                  d| j                  dddd¬«      «       |S )NrJ   ÚxmlnsÚrectr-   z100%)ÚfillÚxÚyrD   rE   r&   )r   rA   Úsetr   r`   Úappendr
   rI   )r   rJ   r   r   r   s       €r   rA   zSvgImage._svg_   si   ø€ Ü‰g‰lÑ-˜sÐ- fÑ-ˆØ�‰�˜×,Ñ,Ô-Ø�?Š?Ø�J‰JÜ—
‘
ØØŸ™ØØØ Ø!ôô	ð ˆ
r    c                 óf   — t        j                  | j                  «      j                  |dd¬«       y )NzUTF-8T)ÚencodingrM   rN   rQ   s     r   r8   zSvgImage._writeo   s%   € Ü
�‰�t—y‘yÓ!×'Ñ'¨¸ÐRVÐ'ÕWr    r   )rR   rS   rT   rU   r`   r   r[   rY   rW   ÚSvgCircleDrawerr   rX   re   ÚqrcodeÚimageÚbaseÚDrawerAliasesrA   r8   r\   r]   s   @r   r_   r_   Q   s}   ø… ñð !%€J�˜‘Ó$à×.Ñ.°Ð3Ø%×5Ñ5¸ÁgÈcÃlÐ7SÐTØ%×5Ñ5¸ÁgÈcÃlÐ7SÐTñ7€N�F—L‘L×%Ñ%×3Ñ3ó õö 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)ri   zfill-opacityz	fill-ruleÚstrokeTNÚpathr   ra   rb   rc   c                 ó2   •— g | _         t        ‰| �  |i |¤Ž y r%   )Ú	_subpathsr   r   r   s      €r   r   zSvgPathImage.__init__�   s   ø€ Ø$&ˆŒÜ‰Ñ˜$Ð) &Ó)r    c                 óˆ   •— |€/| j                  | j                  d¬«      }dj                  |¬«      }t        ‰| �  dd|i|¤ŽS )NF)r"   z0 0 {d} {d})r4   ÚviewBoxr&   )r   rH   Úformatr   rA   )r   r   r   rK   r   s       €r   rA   zSvgPathImage._svg“   sH   ø€ Øˆ?ØŸ
™
 4§?¡?¸˜
Ó?ˆIØ#×*Ñ*¨YÐ*Ó7ˆGÜ‰w‰|Ñ6 GÐ6¨vÑ6Ð6r    c                 ó  — t        j                  t        j                  d«      fdj                  | j                  «      ddœ| j
                  ¤Ž| _        g | _        | j                  j                  | j                  «       y )Nr{   Ú zqr-path)r4   Úid)	r
   rI   rG   Újoinr}   ÚQR_PATH_STYLEr{   r=   rm   )r   s    r   ÚprocesszSvgPathImage.process™   sg   € ô —J‘JÜ�H‰H�VÓð
à�g‰g�d—n‘nÓ%Øñ
ð × Ñ ñ	
ˆŒ	ð ˆŒØ�	‰	×Ñ˜Ÿ™Õ#r    r%   )rR   rS   rT   rU   r…   Úneeds_processingr{   r   r
   rI   rY   rW   ÚSvgPathSquareDrawerr   r   r   ÚSvgPathCircleDrawerr   re   r   rA   r†   r\   r]   s   @r   rv   rv   s   s¨   ø… ñð ØØØñ	€Mð ÐØ!%€Dˆ(�2—:‘:Ñ
Ó%Ø1<×1PÑ1PÐ˜$˜~Ñ.ÓPà×2Ñ2°BÐ7à×+Ñ+Ø™7 3›<Ð(ð
ð
 ×+Ñ+Ø™7 3›<Ð(ð
ñ
€Nô*õ7ö
$r    rv   c                   ó   — e Zd ZdZdZy)ÚSvgFillImagez9
    An SvgImage that fills the background to white.
    ÚwhiteN©rR   rS   rT   rU   r`   r&   r    r   r‹   r‹   ¦   ó   „ ñð �Jr    r‹   c                   ó   — e Zd ZdZdZy)Ú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.baserq   Úqrcode.compat.etreer
   Ú!qrcode.image.styles.moduledrawersr   rW   Ú&qrcode.image.styles.moduledrawers.baser   rr   rs   ÚBaseImageWithDrawerr   r_   rv   r‹   r�   r&   r    r   ú<module>r˜      sv   ðÛ Ý ß 8Õ 8å %ã Ý "Ý @Ý AôAG�v—|‘|×(Ñ(×<Ñ<ô AGôHXÐô XôD0$�8ô 0$ôf�8ô ô�|õ r    