
    @wgx                         d dl Z d dlmZmZmZmZmZmZmZ d dl	m
Z
 erd dlmZmZ eeeee
   eeef   f   f   Z G d d      Z G d de      Zy)	    N)TYPE_CHECKINGAnyDictOptionalTupleTypeUnion)QRModuleDrawer)ActiveWithNeighborsQRCodec                   
   e Zd ZU dZdZee   ed<   dZee	e      ed<   dZ
dZdZd Zej                  d        Zd	ed
eddfdZd Zej                  dd       Zd Zej                  defd       Zd Zd ZddZd	ed
efdZy)	BaseImagez)
    Base QRCode image output class.
    Nkindallowed_kindsFTc                    || _         || _        || _        | j                  | j                   dz  z   | j                  z  | _        |j	                  d      | _         | j                  di || _        | j                          y )N   qrcode_modules )	borderwidthbox_size
pixel_sizepopmodules	new_image_imginit_new_image)selfr   r   r   argskwargss         H/var/www/horilla/myenv/lib/python3.12/site-packages/qrcode/image/base.py__init__zBaseImage.__init__   sj    
 ::a74==Hzz"23"DNN,V,	    c                      y)z9
        Draw a single rectangle of the QR code.
        Nr   r   rowcols      r!   drawrectzBaseImage.drawrect!       r#   r&   r'   qrr   c                     t        d      )zV
        Draw a single rectangle of the QR code given the surrounding context
        zBaseImage.drawrect_contextNotImplementedError)r   r&   r'   r*   s       r!   drawrect_contextzBaseImage.drawrect_context'   s     "">??r#   c                     t        d      )z4
        Processes QR code after completion
        zBaseImage.drawimager,   r   s    r!   processzBaseImage.process-   s     ""788r#   c                      y)z&
        Save the image file.
        Nr   )r   streamr   s      r!   savezBaseImage.save3   r)   r#   c                     || j                   z   | j                  z  }|| j                   z   | j                  z  }||f|| j                  z   dz
  || j                  z   dz
  ffS )z
        A helper method for pixel-based image generators that specifies the
        four pixel coordinates for a single rect.
           )r   r   )r   r&   r'   xys        r!   	pixel_boxzBaseImage.pixel_box9   sg    
 4;;$--/4;;$--/F"A$5$9:
 	
r#   returnc                      y)zT
        Build the image class. Subclasses should return the class created.
        Nr   r   r    s     r!   r   zBaseImage.new_imageE   r)   r#   c                      y Nr   r0   s    r!   r   zBaseImage.init_new_imageK   s    r#   c                     | j                   S )z@
        Return the image class for further processing.
        )r   r<   s     r!   	get_imagezBaseImage.get_imageN   s     yyr#   c                     || j                   }| j                   xs || j                  v }|r ||      }|s|| j                  v }|s$t        dt        |       j                   d|       |S )z%
        Get the image type.
        zCannot set z	 type to )r   r   
ValueErrortype__name__)r   r   	transformalloweds       r!   
check_kindzBaseImage.check_kindT   sz     <99D(((FDD4F4F,FT?D$"4"44{4:+>+>*?yOPPr#   c                     |dk  xr |dk  xs4 |dk  xr | j                   |z
  dk  xs | j                   |z
  dk  xr |dk  S )zB
        Find whether the referenced module is in an eye.
              )r   r%   s      r!   is_eyezBaseImage.is_eyec   sW    
 1W q 2a0DJJ,q02

S 1$0q	
r#   r>   )rD   
__module____qualname____doc__r   r   str__annotations__r   r   needs_contextneeds_processingneeds_drawrectr"   abcabstractmethodr(   intr.   r1   r4   r9   r   r   r   r@   rG   rK   r   r#   r!   r   r      s     D(3-*.M8E#J'.MN 	 
@C @c @x @9 	 


 	S  

# 
C 
r#   r   c                        e Zd ZU ee   ed<   i Zeed<   defdZdefdZ	dZ
ded<   ded	<   d
d
ddeeed
f   d	eeed
f   f fdZdeeed
f   dee   fdZ fdZdededdfdZ xZS )BaseImageWithDrawerdefault_drawer_classdrawer_aliasesr:   c                 "    | j                         S r>   rY   r0   s    r!   get_default_module_drawerz-BaseImageWithDrawer.get_default_module_drawerr       ((**r#   c                 "    | j                         S r>   r\   r0   s    r!   get_default_eye_drawerz*BaseImageWithDrawer.get_default_eye_draweru   r^   r#   Tr
   module_drawer
eye_drawerN)ra   rb   c                    | j                  |      xs | j                         | _        | j                  |      xs | j                         | _        t        |   |i | y r>   )
get_drawerr]   ra   r`   rb   superr"   )r   ra   rb   r   r    	__class__s        r!   r"   zBaseImageWithDrawer.__init__}   sY     OOM*Nd.L.L.N 	 //*5V9T9T9V$)&)r#   drawerc                 Z    t        |t              s|S | j                  |   \  }} |di |S )Nr   )
isinstancerO   rZ   )r   rg   
drawer_clsr    s       r!   rd   zBaseImageWithDrawer.get_drawer   s6     &#&M!008
F#F##r#   c                     | j                   j                  |        | j                  j                  |        t        |          S )N)img)ra   
initializerb   re   r   )r   rf   s    r!   r   z"BaseImageWithDrawer.init_new_image   s=    %%$%/""t",w%''r#   r&   r'   r*   r   c                    | j                  ||      }| j                  ||      r| j                  n| j                  }|j                  r|j                  ||      nt        |j                  |   |         }|j                  ||       y r>   )	r9   rK   rb   ra   needs_neighborsactive_with_neighborsboolr   r(   )r   r&   r'   r*   boxrg   	is_actives          r!   r.   z$BaseImageWithDrawer.drawrect_context   sw    nnS#&$(KKS$9t?Q?Q %% $$S#.bjjoc*+ 	 	Y'r#   )rD   rL   rM   r   r
   rP   rZ   DrawerAliasesr]   r`   rQ   r	   rO   r"   r   rd   r   rV   r.   __classcell__)rf   s   @r!   rX   rX   n   s    ~..$&NM&+> ++ + M##  
 ;?7;	* ^S$67* .#t34	* $NC56$	.	!$(	(C 	(c 	(x 	(r#   rX   )rT   typingr   r   r   r   r   r   r	   &qrcode.image.styles.moduledrawers.baser
   qrcode.mainr   r   rO   rt   r   rX   r   r#   r!   <module>ry      s[    
 I I I A7 S%^ 4d38n DEEF^
 ^
B6() 6(r#   