ó
    ùŠÂj-&  ã                   óð   • S SK Jr  S SKJrJr  S SKJr  \(       a  S SKJr  S SK	J
r
  Sr " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)é    )ÚTYPE_CHECKING)ÚImageÚ	ImageDraw)ÚQRModuleDrawer)ÚStyledPilImage)ÚActiveWithNeighborsé   c                   ó$   • \ rS rSr% SrS\S'   Srg)ÚStyledPilQRModuleDraweré   zå
A base class for StyledPilImage module drawers.

NOTE: the color that this draws in should be whatever is equivalent to
black in the color space, and the specified QRColorMask will handle adding
colors as necessary to the image
r   Úimg© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Ú__static_attributes__r   ó    Ú[/var/www/website/venv/lib/python3.13/site-packages/qrcode/image/styles/moduledrawers/pil.pyr   r      s   ‡ ñð 
Ör   r   c                   ó:   ^ • \ rS rSrSrU 4S jrS\4S jrSrU =r	$ )ÚSquareModuleDraweré   z%
Draws the modules as simple squares
c                 ó„   >• [         TU ]  " U0 UD6  [        R                  " U R                  R
                  5      U l        g ©N)ÚsuperÚ
initializer   ÚDrawr   Ú_imgÚimgDraw©ÚselfÚargsÚkwargsÚ	__class__s      €r   r   ÚSquareModuleDrawer.initialize    s-   ø€ Ü‰Ò˜DÐ+ FÒ+Ü —~’~ d§h¡h§m¡mÓ4ˆ�r   Ú	is_activec                 ón   • U(       a.  U R                   R                  XR                  R                  S9  g g )N©Úfill)r!   Ú	rectangler   Úpaint_color©r#   Úboxr(   s      r   ÚdrawrectÚSquareModuleDrawer.drawrect$   s)   € ÞØ�L‰L×"Ñ" 3¯X©X×-AÑ-AÐ"ÒBð r   )r!   )
r   r   r   r   r   r   Úboolr0   r   Ú__classcell__©r&   s   @r   r   r      s!   ø† ñõ5ðC t÷ Cò Cr   r   c                   óD   ^ • \ rS rSrSrSS jrU 4S jrS\4S jrSr	U =r
$ )	ÚGappedSquareModuleDraweré)   z©
Draws the modules as simple squares that are not contiguous.

The size_ratio determines how wide the squares are relative to the width of
the space they are printed in
c                 ó   • Xl         g r   )Ú
size_ratio)r#   r9   s     r   Ú__init__Ú!GappedSquareModuleDrawer.__init__1   s   € Ø$�r   c                 óà   >• [         TU ]  " U0 UD6  [        R                  " U R                  R
                  5      U l        SU R                  -
  U R                  R                  -  S-  U l	        g )Né   é   )
r   r   r   r   r   r    r!   r9   Úbox_sizeÚdeltar"   s      €r   r   Ú#GappedSquareModuleDrawer.initialize4   sQ   ø€ Ü‰Ò˜DÐ+ FÒ+Ü —~’~ d§h¡h§m¡mÓ4ˆŒØ˜$Ÿ/™/Ñ)¨T¯X©X×->Ñ->Ñ>ÀÑBˆ�
r   r(   c                 ó  • U(       a€  US   S   U R                   -   US   S   U R                   -   US   S   U R                   -
  US   S   U R                   -
  4nU R                  R                  X0R                  R                  S9  g g )Nr   r=   r*   )r@   r!   r,   r   r-   )r#   r/   r(   Úsmaller_boxs       r   r0   Ú!GappedSquareModuleDrawer.drawrect9   s‚   € Þà�A‘�q‘	˜DŸJ™JÑ&Ø�A‘�q‘	˜DŸJ™JÑ&Ø�A‘�q‘	˜DŸJ™JÑ&Ø�A‘�q‘	˜DŸJ™JÑ&ð	ˆKð �L‰L×"Ñ" ;·X±X×5IÑ5IÐ"ÒJð r   )r@   r!   r9   ©gš™™™™™é?)r   r   r   r   r   r:   r   r2   r0   r   r3   r4   s   @r   r6   r6   )   s'   ø† ñô%õCð
K t÷ Kò Kr   r6   c                   ó>   ^ • \ rS rSrSrSrU 4S jrS\4S jrSr	U =r
$ )ÚCircleModuleDraweréD   z
Draws the modules as circles
Nc                 ó  >• [         TU ]  " U0 UD6  U R                  R                  nU[        -  n[
        R                  " U R                  R                  XD4U R                  R                  R                  5      U l
        [        R                  " U R                  5      R                  SSXD4U R                  R                  S9  U R                  R                  X34[
        R                   R"                  5      U l
        g )Nr   r*   )r   r   r   r?   ÚANTIALIASING_FACTORr   ÚnewÚmodeÚ
color_maskÚ
back_colorÚcircler   r   Úellipser-   ÚresizeÚ
ResamplingÚLANCZOS)r#   r$   r%   r?   Ú	fake_sizer&   s        €r   r   ÚCircleModuleDrawer.initializeK   sÄ   ø€ Ü‰Ò˜DÐ+ FÒ+Ø—8‘8×$Ñ$ˆØÔ2Ñ2ˆ	Ü—i’iØ�H‰H�M‰MØÐ"Ø�H‰H×Ñ×*Ñ*ó
ˆŒô
 	�Š�t—{‘{Ó#×+Ñ+Ø��9Ð(¨t¯x©x×/CÑ/Cð 	,ñ 	
ð —k‘k×(Ñ(¨(Ð)=¼u×?OÑ?O×?WÑ?WÓXˆ�r   r(   c                 ó�   • U(       a?  U R                   R                  R                  U R                  US   S   US   S   45        g g ©Nr   r=   )r   r    ÚpasterO   r.   s      r   r0   ÚCircleModuleDrawer.drawrectY   s;   € ÞØ�H‰H�M‰M×Ñ §¡¨c°!©f°Q©i¸¸Q¹À¹Ð-CÕDð r   )rO   )r   r   r   r   r   rO   r   r2   r0   r   r3   r4   s   @r   rG   rG   D   s)   ø† ñð €FõYðE t÷ Eò Er   rG   c                   ó^   ^ • \ rS rSrSrSrSS jrU 4S jrS rS\	\	\
      SS	4S
 jrSrU =r$ )ÚRoundedModuleDraweré^   a8  
Draws the modules with all 90 degree corners replaced with rounded edges.

radius_ratio determines the radius of the rounded edges - a value of 1
means that an isolated module will be drawn as a circle, while a value of 0
means that the radius of the rounded edge will be 0 (and thus back to 90
degrees again).
Tc                 ó   • Xl         g r   )Úradius_ratio)r#   r^   s     r   r:   ÚRoundedModuleDrawer.__init__j   s   € Ø(Õr   c                 ó”   >• [         TU ]  " U0 UD6  [        U R                  R                  S-  5      U l        U R                  5         g )Nr>   )r   r   Úintr   r?   Úcorner_widthÚsetup_cornersr"   s      €r   r   ÚRoundedModuleDrawer.initializem   s=   ø€ Ü‰Ò˜DÐ+ FÒ+Ü §¡× 1Ñ 1°AÑ 5Ó6ˆÔØ×ÑÕr   c                 óø  • U R                   R                  nU R                   R                  R                  nU R                   R                  n[
        R                  " XR                  U R                  4U5      U l        U R                  [        -  nU R                  U-  nUS-  n[
        R                  " XU4U5      n[        R                  " U5      nUR                  SSXf4US9  UR                  USXD4US9  UR                  SXTU4US9  UR                  U R                  U R                  4[
        R                   R"                  5      U l        U R$                  R'                  [
        R(                  R*                  5      U l        U R$                  R'                  [
        R(                  R.                  5      U l        U R$                  R'                  [
        R(                  R2                  5      U l        g ©Nr>   r   r*   )r   rL   rM   rN   r-   r   rK   rb   ÚSQUARErJ   r^   r   r   rP   r,   rQ   rR   rS   ÚNW_ROUNDÚ	transposeÚ	TransposeÚFLIP_TOP_BOTTOMÚSW_ROUNDÚ
ROTATE_180ÚSE_ROUNDÚFLIP_LEFT_RIGHTÚNE_ROUND)	r#   rL   rN   Úfront_colorÚ
fake_widthÚradiusÚdiameterÚbaseÚ	base_draws	            r   rc   Ú!RoundedModuleDrawer.setup_cornersr   s�  € Ø�x‰x�}‰}ˆØ—X‘X×(Ñ(×3Ñ3ˆ
Ø—h‘h×*Ñ*ˆÜ—i’iØ×$Ñ$ d×&7Ñ&7Ð8¸+ó
ˆŒð ×&Ñ&Ô)<Ñ<ˆ
Ø×"Ñ" ZÑ/ˆØ˜A‘:ˆÜ�yŠyØ˜zÐ*¨Jó
ˆô —N’N 4Ó(ˆ	Ø×Ñ˜1˜a Ð4¸;ÐÑGØ×Ñ˜V Q¨
Ð?ÀkÐÑRØ×Ñ˜Q °JÐ?ÀkÐÑRØŸ™Ø×Ñ × 1Ñ 1Ð2´E×4DÑ4D×4LÑ4Ló
ˆŒð Ÿ™×/Ñ/´·±×0OÑ0OÓPˆŒØŸ™×/Ñ/´·±×0JÑ0JÓKˆŒØŸ™×/Ñ/´·±×0OÑ0OÓPˆ�r   r/   r(   r   c                 óT  • U(       d  g UR                   (       + =(       a    UR                  (       + nUR                  (       + =(       a    UR                  (       + nUR                  (       + =(       a    UR                  (       + nUR                  (       + =(       a    UR                   (       + nU(       a  U R                  OU R
                  nU(       a  U R                  OU R
                  nU(       a  U R                  OU R
                  n	U(       a  U R                  OU R
                  n
U R                  R                  R                  XqS   S   US   S   45        U R                  R                  R                  X�S   S   U R                  -   US   S   45        U R                  R                  R                  X‘S   S   U R                  -   US   S   U R                  -   45        U R                  R                  R                  X¡S   S   US   S   U R                  -   45        g rW   )ÚWÚNÚEÚSrh   rg   rp   rn   rl   r   r    rX   rb   )r#   r/   r(   Ú
nw_roundedÚ
ne_roundedÚ
se_roundedÚ
sw_roundedÚnwÚneÚseÚsws              r   r0   ÚRoundedModuleDrawer.drawrect‹   s�  € ÞØà"Ÿ™”_×8¨Y¯[©[¬ˆ
Ø"Ÿ™”_×8¨Y¯[©[¬ˆ
Ø"Ÿ™”_×8¨Y¯[©[¬ˆ
Ø"Ÿ™”_×8¨Y¯[©[¬ˆ
æ(ˆT�]Š]¨d¯k©kˆÞ(ˆT�]Š]¨d¯k©kˆÞ(ˆT�]Š]¨d¯k©kˆÞ(ˆT�]Š]¨d¯k©kˆØ�‰�‰×Ñ˜B Q¡¨¡¨C°©F°1©IÐ 6Ô7Ø�‰�‰×Ñ˜B Q¡¨¡¨T×->Ñ->Ñ!>ÀÀAÁÀqÁ	Ð JÔKØ�‰�‰×ÑØ�Q‘˜‘˜T×.Ñ.Ñ.°°A±°q±	¸D×<MÑ<MÑ0MÐNô	
ð 	�‰�‰×Ñ˜B Q¡¨¡¨C°©F°1©I¸×8IÑ8IÑ,IÐ JÕKr   )rp   rh   rn   rg   rl   rb   r^   )r=   )r   r   r   r   r   Úneeds_neighborsr:   r   rc   Úlistra   r0   r   r3   r4   s   @r   r[   r[   ^   sD   ø† ñð €Oô)õò
Qð2L˜D  c¡™Oð LÐ8M÷ Lò Lr   r[   c                   óJ   ^ • \ rS rSrSrSrS	S jrU 4S jrS rS
S jr	Sr
U =r$ )ÚVerticalBarsDraweré    z¼
Draws vertically contiguous groups of modules as long rounded rectangles,
with gaps between neighboring bands (the size of these gaps is inversely
proportional to the horizontal_shrink).
Tc                 ó   • Xl         g r   )Úhorizontal_shrink)r#   rŒ   s     r   r:   ÚVerticalBarsDrawer.__init__©   s   € Ø!2Õr   c                 óè   >• [         TU ]  " U0 UD6  [        U R                  R                  S-  5      U l        [        SU R                  -
  U R
                  -  5      U l        U R                  5         g ©Nr>   r=   )	r   r   ra   r   r?   Úhalf_heightrŒ   r@   Úsetup_edgesr"   s      €r   r   ÚVerticalBarsDrawer.initialize¬   s_   ø€ Ü‰Ò˜DÐ+ FÒ+Ü˜tŸx™x×0Ñ0°1Ñ4Ó5ˆÔÜ˜!˜d×4Ñ4Ñ4¸×8HÑ8HÑHÓIˆŒ
Ø×ÑÕr   c                 ó¦  • U R                   R                  nU R                   R                  R                  nU R                   R                  nU R
                  nUS-  n[        XPR                  -  5      n[        R                  " XU4U5      U l
        U[        -  nU[        -  n[        R                  " XU4U5      n	[        R                  " U	5      n
U
R                  SSXxS-  4US9  U	R                  Xd4[        R                   R"                  5      U l        U R$                  R'                  [        R(                  R*                  5      U l        g rf   )r   rL   rM   rN   r-   r�   ra   rŒ   r   rK   rg   rJ   r   r   rP   rQ   rR   rS   Ú	ROUND_TOPri   rj   rk   ÚROUND_BOTTOM)r#   rL   rN   rq   ÚheightÚwidthÚshrunken_widthrr   Úfake_heightru   rv   s              r   r‘   ÚVerticalBarsDrawer.setup_edges²   s  € Ø�x‰x�}‰}ˆØ—X‘X×(Ñ(×3Ñ3ˆ
Ø—h‘h×*Ñ*ˆà×!Ñ!ˆØ˜‘
ˆÜ˜U×%;Ñ%;Ñ;Ó<ˆÜ—i’i °vÐ&>ÀÓLˆŒàÔ0Ñ0ˆ
ØÔ2Ñ2ˆÜ�yŠyØ˜{Ð+¨Zó
ˆô —N’N 4Ó(ˆ	Ø×Ñ˜1˜a ¸1©_Ð=ÀKÐÑPàŸ™ nÐ%=¼u×?OÑ?O×?WÑ?WÓXˆŒØ ŸN™N×4Ñ4´U·_±_×5TÑ5TÓUˆÕr   c                 óî  • U(       aî  UR                   (       + nUR                  (       + nU(       a  U R                  OU R                  nU(       a  U R                  OU R                  nU R
                  R                  R                  XQS   S   U R                  -   US   S   45        U R
                  R                  R                  XaS   S   U R                  -   US   S   U R                  -   45        g g rW   )
rz   r|   r”   rg   r•   r   r    rX   r@   r�   )r#   r/   r(   Útop_roundedÚbottom_roundedÚtopÚbottoms          r   r0   ÚVerticalBarsDrawer.drawrectÇ   sº   € Þà'Ÿk™kœ/ˆKØ!*§¡œ_ˆNæ$/�$—.’.°T·[±[ˆCÞ*8�T×&Ò&¸d¿k¹kˆFØ�H‰H�M‰M×Ñ ¨!¡f¨Q¡i°$·*±*Ñ&<¸cÀ!¹fÀQ¹iÐ%HÔIØ�H‰H�M‰M×ÑØ˜Q™ ™ T§Z¡ZÑ/°°Q±¸±¸T×=MÑ=MÑ1MÐNõð r   )r•   r”   rg   r@   r�   rŒ   rE   ©r(   r   ©r   r   r   r   r   r†   r:   r   r‘   r0   r   r3   r4   s   @r   r‰   r‰       s)   ø† ñð €Oô3õòV÷*ò r   r‰   c                   óJ   ^ • \ rS rSrSrSrS	S jrU 4S jrS rS
S jr	Sr
U =r$ )ÚHorizontalBarsDraweréÕ   z¼
Draws horizontally contiguous groups of modules as long rounded rectangles,
with gaps between neighboring bands (the size of these gaps is inversely
proportional to the vertical_shrink).
Tc                 ó   • Xl         g r   )Úvertical_shrink)r#   r§   s     r   r:   ÚHorizontalBarsDrawer.__init__Þ   s   € Ø.Õr   c                 óè   >• [         TU ]  " U0 UD6  [        U R                  R                  S-  5      U l        [        SU R                  -
  U R
                  -  5      U l        U R                  5         g r�   )	r   r   ra   r   r?   Ú
half_widthr§   r@   r‘   r"   s      €r   r   ÚHorizontalBarsDrawer.initializeá   s\   ø€ Ü‰Ò˜DÐ+ FÒ+Ü˜dŸh™h×/Ñ/°!Ñ3Ó4ˆŒÜ˜!˜d×2Ñ2Ñ2°d·o±oÑEÓFˆŒ
Ø×ÑÕr   c                 ó¨  • U R                   R                  nU R                   R                  R                  nU R                   R                  nU R
                  nUS-  n[        XPR                  -  5      n[        R                  " XU4U5      U l
        U[        -  nU[        -  n[        R                  " XU4U5      n	[        R                  " U	5      n
U
R                  SSUS-  U4US9  U	R                  XF4[        R                   R"                  5      U l        U R$                  R'                  [        R(                  R*                  5      U l        g rf   )r   rL   rM   rN   r-   rª   ra   r§   r   rK   rg   rJ   r   r   rP   rQ   rR   rS   Ú
ROUND_LEFTri   rj   ro   ÚROUND_RIGHT)r#   rL   rN   rq   r—   r–   Úshrunken_heightrr   r™   ru   rv   s              r   r‘   Ú HorizontalBarsDrawer.setup_edgesç   s  € Ø�x‰x�}‰}ˆØ—X‘X×(Ñ(×3Ñ3ˆ
Ø—h‘h×*Ñ*ˆà—‘ˆØ˜‘ˆÜ˜f×';Ñ';Ñ;Ó<ˆÜ—i’i ¨oÐ&>ÀÓLˆŒàÔ0Ñ0ˆ
ØÔ2Ñ2ˆÜ�yŠyØ˜{Ð+¨Zó
ˆô —N’N 4Ó(ˆ	Ø×Ñ˜1˜a ¨a¡°Ð=ÀKÐÑPàŸ+™+ØÐ$¤e×&6Ñ&6×&>Ñ&>ó
ˆŒð  Ÿ?™?×4Ñ4´U·_±_×5TÑ5TÓUˆÕr   c                 óî  • U(       aî  UR                   (       + nUR                  (       + nU(       a  U R                  OU R                  nU(       a  U R                  OU R                  nU R
                  R                  R                  XQS   S   US   S   U R                  -   45        U R
                  R                  R                  XaS   S   U R                  -   US   S   U R                  -   45        g g rW   )
ry   r{   r­   rg   r®   r   r    rX   r@   rª   )r#   r/   r(   Úleft_roundedÚright_roundedÚleftÚrights          r   r0   ÚHorizontalBarsDrawer.drawrectþ   s¸   € Þà(Ÿ{™{œ?ˆLØ )§¡œOˆMæ&2�4—?’?¸¿¹ˆDÞ(5�D×$Ò$¸4¿;¹;ˆEØ�H‰H�M‰M×Ñ ¨1¡v¨a¡y°#°a±&¸±)¸d¿j¹jÑ2HÐ&IÔJØ�H‰H�M‰M×ÑØ˜A™˜q™	 D§O¡OÑ3°S¸±V¸A±YÀÇÁÑ5KÐLõð r   )r­   r®   rg   r@   rª   r§   rE   r¡   r¢   r4   s   @r   r¤   r¤   Õ   s)   ø† ñð €Oô/õòV÷.ò r   r¤   N)Útypingr   ÚPILr   r   Ú&qrcode.image.styles.moduledrawers.baser   Úqrcode.image.styledpilr   Úqrcode.mainr   rJ   r   r   r6   rG   r[   r‰   r¤   r   r   r   Ú<module>r¼      sƒ   ðÝ  ç  Ý AæÝ5Ý/ð Ð ô	˜nô 	ôCÐ0ô CôKÐ6ô Kô6EÐ0ô Eô4?LÐ1ô ?LôD2Ð0ô 2ôj4Ð2õ 4r   