
    hD                        S SK r S SK Jr  S SKJrJrJrJr  S SKrS SK	J
r
  S SKJr  S SKJr   " S S\R                   R"                  R$                  5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      rg)    N)Decimal)OptionalUnionoverloadLiteral)ETsvg)QRModuleDrawerc                      ^  \ rS rSr% SrSrSrSr\R                  r
\\   \S'   U 4S jr\S\\\4   S	\S
   S\4S j5       r\SS\\\4   S	\S   S\4S jj5       rSS jrSS jrS rS rSS jrS rSrU =r$ )SvgFragmentImage   zH
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                    > [         R                  " SU R                  5        [        TU ]  " U0 UD6  U R                  U R                  5      U l        g )Nr
   )r   register_namespace_SVG_namespacesuper__init__unitsbox_size	unit_sizeselfargskwargs	__class__s      X/Users/Alptekin/Desktop/izin_takip/venv/lib/python3.13/site-packages/qrcode/image/svg.pyr   SvgFragmentImage.__init__   s?    
eT%8%89$)&)DMM2    pixelstextFreturnc                     g N r   r!   r"   s      r   r   SvgFragmentImage.units   s    SVr    Tc                     g r%   r&   r'   s      r   r   r(       s    UXr    c                 V   [        U5      S-  nU(       d  U$ UR                  [        S5      5      n[        R                  " [        R                  /S9n [        S5      [        S5      [        S5      4 H  nUR                  XTS9nM     U S3$ ! [        R                   a     Nf = f)	z(
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   r(   #   s     "$Lww/0//(9:	fowu~ws|Dq: E |  		s   6B B('B(c                 D    U R                  US9  U R                  U5        g )N)kind)
check_kind_write)r   streamr6   s      r   saveSvgFragmentImage.save3   s    T"Fr    c                 D    [         R                  " U R                  40 UD6$ r%   )r   tostring_imgr   r   s     r   	to_stringSvgFragmentImage.to_string7   s    {{499///r    c                 &    U R                   " S0 UD6$ )Nr&   )_svgr?   s     r   	new_imageSvgFragmentImage.new_image:   s    yy"6""r    c                     Uc!  [         R                  " U R                  S5      nU R                  U R                  5      n[         R
                  " U4UUUS.UD6$ )Nr
   )widthheightversion)r   QNamer   r   
pixel_sizeElement)r   tagrI   r   	dimensions        r   rC   SvgFragmentImage._svg=   s[    ;((4..6CJJt/	zz
	

 
 	
r    c                 `    [         R                  " U R                  5      R                  USS9  g )NF)xml_declarationr   ElementTreer>   writer   r9   s     r   r8   SvgFragmentImage._writeI   s"    
tyy!'''Fr    )r   )Tr%   )Nz1.1)__name__
__module____qualname____firstlineno____doc__r   r6   allowed_kindssvg_drawersSvgSquareDrawerr   typer   __annotations__r   r   r   intr   r   r   strr:   r@   rD   rC   r8   __static_attributes____classcell__r   s   @r   r   r      s     2NDM1<1L1L$~.L3 VE#w,/Vwu~V'V VXE#w,/Xwt}XPSX X 0#

G Gr    r   c                     ^  \ rS rSr% SrSr\\   \S'   \	R                  0 4\	R                  S\" S5      04\	R                  S\" S5      04S.r\R                  R                   R"                  \S'   SU 4S	 jjrS
 rSrU =r$ )SvgImageM   zU
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U ]  " SSU0UD6nUR                  SU R                  5        U R                  (       a2  UR                  [        R                  " SU R                  SSSSS95        U$ )NrM   xmlnsrectr-   z100%)fillxyrG   rH   r&   )r   rC   setr   ri   appendr   rL   )r   rM   r   r
   r   s       r   rC   SvgImage._svg[   si    gl-s-f-,,-??JJ

 !	 
r    c                 b    [         R                  " U R                  5      R                  USSS9  g )NzUTF-8T)encodingrQ   rR   rU   s     r   r8   SvgImage._writek   s%    
tyy!''RV'Wr    r&   r	   )rW   rX   rY   rZ   r[   ri   r   rb   r`   r]   SvgCircleDrawerr   r^   rn   qrcodeimagebaseDrawerAliasesrC   r8   rc   rd   re   s   @r   rg   rg   M   s     !%J$..3%55gcl7ST%55gcl7ST7NFLL%%33  X Xr    rg   c                     ^  \ rS rSr% SrSSSSS.rSrS	r\\	R                     \S
'   \R                  r\\   \S'   \R"                  0 4\R"                  S\" S5      04\R                  S\" S5      04S.rU 4S jrSU 4S jjrS rSrU =r$ )SvgPathImageo   zg
SVG image builder with one single <path> element (removes white spaces
between individual QR points).
z#0000001nonzeronone)rr   zfill-opacityz	fill-rulestrokeTNpathr   rj   rk   rl   c                 4   > / U l         [        TU ]  " U0 UD6  g r%   )	_subpathsr   r   r   s      r   r   SvgPathImage.__init__   s    $&$)&)r    c                    > Uc)  U R                  U R                  SS9nSR                  US9n[        TU ]  " SSU0UD6$ )NF)r"   z0 0 {d} {d})r4   viewBoxr&   )r   rK   formatr   rC   )r   r   r   rN   r   s       r   rC   SvgPathImage._svg   sH    ?

4??
?I#**Y*7Gw|6G6v66r    c                    [         R                  " [         R                  " S5      4SR                  U R                  5      SS.U R
                  D6U l        / U l        U R                  R                  U R                  5        g )Nr    zqr-path)r4   id)	r   rL   rJ   joinr   QR_PATH_STYLEr   r>   rv   )r   s    r   processSvgPathImage.process   sg     JJHHV
ggdnn%
   	
	 		#r    )r   r   r%   )rW   rX   rY   rZ   r[   r   needs_processingr   r   r   rL   r`   r]   SvgPathSquareDrawerr   r_   r   SvgPathCircleDrawerr   rn   r   rC   r   rc   rd   re   s   @r   r   r   o   s     	M !%D(2::
%1<1P1P$~.P22B7++73<(

 ++73<(

N*7
$ 
$r    r   c                       \ rS rSrSrSrSrg)SvgFillImage   z1
An SvgImage that fills the background to white.
whiter&   NrW   rX   rY   rZ   r[   ri   rc   r&   r    r   r   r           Jr    r   c                       \ rS rSrSrSrSrg)SvgPathFillImage   z5
An SvgPathImage that fills the background to white.
r   r&   Nr   r&   r    r   r   r      r   r    r   )r1   r   typingr   r   r   r   qrcode.image.baser|   qrcode.compat.etreer   !qrcode.image.styles.moduledrawersr
   r]   &qrcode.image.styles.moduledrawers.baser   r}   r~   BaseImageWithDrawerr   rg   r   r   r   r&   r    r   <module>r      sq      5 5  " @ A?Gv||((<< ?GDX XD0$8 0$f8 | r    