o
    /׾gx                     @   s   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 dZG dd deZdS )	    N)TYPE_CHECKINGAnyDictOptionalTupleTypeUnion)QRModuleDrawer)ActiveWithNeighborsQRCodec                   @   s   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d Zejd	d
 ZdededdfddZdd Zejd"ddZdd ZejdefddZdd Zdd Zd"ddZdedefd d!ZdS )#	BaseImagez)
    Base QRCode image output class.
    Nkindallowed_kindsFTc                 O   sT   || _ || _|| _| j| j d  | j | _|d| _| jdi || _|   d S )N   qrcode_modules )	borderwidthbox_size
pixel_sizepopmodules	new_image_imginit_new_image)selfr   r   r   argskwargsr   r   [/var/www/html/backend_erp/backend_erp_env/lib/python3.10/site-packages/qrcode/image/base.py__init__   s   zBaseImage.__init__c                 C      dS )z9
        Draw a single rectangle of the QR code.
        Nr   r   rowcolr   r   r   drawrect!       zBaseImage.drawrectr"   r#   qrr   c                 C      t d)zV
        Draw a single rectangle of the QR code given the surrounding context
        BaseImage.drawrect_contextNotImplementedError)r   r"   r#   r&   r   r   r   drawrect_context'      r(   c                 C   r'   )z4
        Processes QR code after completion
        zBaseImage.drawimager)   r   r   r   r   process-   r,   zBaseImage.processc                 C   r    )z&
        Save the image file.
        Nr   )r   streamr   r   r   r   save3   r%   zBaseImage.savec                 C   sD   || j  | j }|| j  | j }||f|| j d || j d 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yr   r   r   	pixel_box9   s
   zBaseImage.pixel_boxreturnc                 K   r    )zT
        Build the image class. Subclasses should return the class created.
        Nr   r   r   r   r   r   r   E   r%   zBaseImage.new_imagec                 C   s   d S Nr   r-   r   r   r   r   K   s   zBaseImage.init_new_imagec                 K   s   | j S )z@
        Return the image class for further processing.
        )r   r6   r   r   r   	get_imageN   s   zBaseImage.get_imagec                 C   s\   |du r| j }| j p|| jv }|r||}|s|| jv }|s,tdt| j d| |S )z%
        Get the image type.
        NzCannot set z	 type to )r   r   
ValueErrortype__name__)r   r   	transformallowedr   r   r   
check_kindT   s   
zBaseImage.check_kindc                 C   s<   |dk r|dk p|dk o| j | dk p| j | dk o|dk S )zB
        Find whether the referenced module is in an eye.
              )r   r!   r   r   r   is_eyec   s
   zBaseImage.is_eyer7   )r;   
__module____qualname____doc__r   r   str__annotations__r   r   needs_contextneeds_processingneeds_drawrectr   abcabstractmethodr$   intr+   r.   r0   r4   r   r   r   r8   r>   rA   r   r   r   r   r      s*   
 	

r   c                       s   e Zd ZU ee ed< i Zeed< defddZdefd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dZdeeedf dee fddZ fddZdededdfddZ  ZS )BaseImageWithDrawerdefault_drawer_classdrawer_aliasesr5   c                 C      |   S r7   rN   r-   r   r   r   get_default_module_drawerr      z-BaseImageWithDrawer.get_default_module_drawerc                 C   rP   r7   rQ   r-   r   r   r   get_default_eye_draweru   rS   z*BaseImageWithDrawer.get_default_eye_drawerTr	   module_drawer
eye_drawerN)rU   rV   c                   s>   |  |p|  | _|  |p|  | _t j|i | d S r7   )
get_drawerrR   rU   rT   rV   superr   )r   rU   rV   r   r   	__class__r   r   r   }   s   zBaseImageWithDrawer.__init__drawerc                 C   s*   t |ts|S | j| \}}|di |S )Nr   )
isinstancerE   rO   )r   r[   
drawer_clsr   r   r   r   rW      s   
zBaseImageWithDrawer.get_drawerc                    s&   | j j| d | jj| d t  S )N)img)rU   
initializerV   rX   r   r-   rY   r   r   r      s   
z"BaseImageWithDrawer.init_new_imager"   r#   r&   r   c                 C   sX   |  ||}| ||r| jn| j}|jr|||nt|j| | }||| d S r7   )	r4   rA   rV   rU   needs_neighborsactive_with_neighborsboolr   r$   )r   r"   r#   r&   boxr[   	is_activer   r   r   r+      s   z$BaseImageWithDrawer.drawrect_context)r;   rB   rC   r   r	   rF   rO   DrawerAliasesrR   rT   rG   r   rE   r   r   rW   r   rL   r+   __classcell__r   r   rY   r   rM   n   s,   
 
rM   )rJ   typingr   r   r   r   r   r   r   &qrcode.image.styles.moduledrawers.baser	   qrcode.mainr
   r   rE   re   r   rM   r   r   r   r   <module>   s    $ a