o
    Zh!                     @  s|   d dl mZ d dlZd dlmZ ddlmZ daddd	Zd
d Z	dd Z
G dd dZG dd dZdddZdd ZdS )    )annotationsN)BytesIO   )Imagereturnintc                  C  sT   t d u r(ztdd} tjd| jj d da W t S  tjy'   da Y t S w t S )N1)r   r   PIL:)datar   r   )_pilbitmap_okr   newtkinterBitmapImageimidTclError)r    r   B/var/www/html/lang_env/lib/python3.10/site-packages/PIL/ImageTk.py_pilbitmap_check(   s   r   c                 C  s@   d }d| v r|  d}nd| v rt|  d}|rt|S d S )Nfiler
   )popr   r   open)kwsourcer   r   r   _get_image_from_kw4   s   
r   c                 C  sZ   |j }z
|| || W d S  tjy,   ddlm} ||  || || Y d S w )Nr   )
_imagingtk)tkcallr   r    r   ZtkinitZ
interpaddr)commandphotor   r   r   r   r   r   _pyimagingtkcall>   s   r!   c                   @  sL   e Zd ZdZdddZdddZdd
dZdddZdddZdddZ	dS )
PhotoImagea3  
    A Tkinter-compatible photo image.  This can be used
    everywhere Tkinter expects an image object.  If the image is an RGBA
    image, pixels having alpha 0 are treated as transparent.

    The constructor takes either a PIL image, or a mode and a size.
    Alternatively, you can use the ``file`` or ``data`` options to initialize
    the photo image object.

    :param image: Either a PIL image, or a mode string.  If a mode string is
                  used, a size must also be given.
    :param size: If the first argument is a mode string, this defines the size
                 of the image.
    :keyword file: A filename to load the image from (using
                   ``Image.open(file)``).
    :keyword data: An 8-bit string containing image data (as loaded from an
                   image file).
    Nc                 K  s   |d u rt |}t|dr?t|dr?|j}|dkr3|  |  z|jj}W n ty2   d}Y nw |j}|\|d< |d< n|}d }|dvrLt	|}|| _
|| _tjdi || _| jj| _|ri| | d S d S )	NmodesizePRGBwidthheight)r   Lr&   RGBAr   )r   hasattrr#   Zapply_transparencyloadpaletteAttributeErrorr$   r   Zgetmodebase_PhotoImage__mode_PhotoImage__sizer   r"   _PhotoImage__photor   paste)selfimager$   r   r#   r   r   r   __init__c   s2   

zPhotoImage.__init__r   Nonec                 C  >   | j j}d | j _z| j jdd| W d S  ty   Y d S w Nr4   delete)r1   namer   r   	Exceptionr3   r:   r   r   r   __del__      zPhotoImage.__del__strc                 C  
   t | jS )z
        Get the Tkinter photo image identifier.  This method is automatically
        called by Tkinter whenever a PhotoImage object is passed to a Tkinter
        method.

        :return: A Tkinter photo image identifier (a string).
        )r?   r1   r3   r   r   r   __str__      
zPhotoImage.__str__r   c                 C  
   | j d S zU
        Get the width of the image.

        :return: The width, in pixels.
        r   r0   rA   r   r   r   r'         
zPhotoImage.widthc                 C  rD   zW
        Get the height of the image.

        :return: The height, in pixels.
        r   rF   rA   r   r   r   r(      rG   zPhotoImage.heightr   Image.Imagec                 C  sX   |   |j}| r|j| jkr|}n|| j|j}||| td| j	|j
 dS )aF  
        Paste a PIL image into the photo image.  Note that this can
        be very slow if the photo image is displayed.

        :param im: A PIL image. The size must match the target region.  If the
                   mode does not match, the image is converted to the mode of
                   the bitmap image.
        ZPyImagingPhotoN)r,   r   Zisblockr#   r/   Z	new_blockr$   Zconvert2r!   r1   r   )r3   r   r4   blockr   r   r   r2      s   
zPhotoImage.paste)NNr   r6   r   r?   r   r   )r   rI   r   r6   )
__name__
__module____qualname____doc__r5   r=   rB   r'   r(   r2   r   r   r   r   r"   O   s    

 



r"   c                   @  sB   e Zd ZdZdddZdddZdd
dZdddZdddZdS )r   a  
    A Tkinter-compatible bitmap image.  This can be used everywhere Tkinter
    expects an image object.

    The given image must have mode "1".  Pixels having value 0 are treated as
    transparent.  Options, if any, are passed on to Tkinter.  The most commonly
    used option is ``foreground``, which is used to specify the color for the
    non-transparent parts.  See the Tkinter documentation for information on
    how to specify colours.

    :param image: A PIL image.
    Nc                 K  sj   |d u rt |}|j| _|j| _t r$|  d|jj |d< || _	n|
 |d< tjdi || _d S )Nr	   r
   r   )r   r#   Z_BitmapImage__moder$   _BitmapImage__sizer   r,   r   r   Z_BitmapImage__imZtobitmapr   r   _BitmapImage__photo)r3   r4   r   r   r   r   r5      s   zBitmapImage.__init__r   r6   c                 C  r7   r8   )rS   r:   r   r   r;   r<   r   r   r   r=      r>   zBitmapImage.__del__r   c                 C  rD   rE   rR   rA   r   r   r   r'      rG   zBitmapImage.widthc                 C  rD   rH   rT   rA   r   r   r   r(      rG   zBitmapImage.heightr?   c                 C  r@   )z
        Get the Tkinter bitmap image identifier.  This method is automatically
        called by Tkinter whenever a BitmapImage object is passed to a Tkinter
        method.

        :return: A Tkinter bitmap image identifier (a string).
        )r?   rS   rA   r   r   r   rB      rC   zBitmapImage.__str__)NrK   rM   rL   )	rN   rO   rP   rQ   r5   r=   r'   r(   rB   r   r   r   r   r      s    



r   r    rI   c                 C  s0   t d|  |  f}|j}td| |j |S )z:Copies the contents of a PhotoImage to a PIL image memory.r*   ZPyImagingPhotoGet)r   r   r'   r(   r   r!   r   )r    r   rJ   r   r   r   getimage  s   rU   c                 C  sL   G dd dt j}t jsd}t|t  }|r|| |||   dS )z!Helper for the Image.show method.c                      s   e Zd Z fddZ  ZS )z_show.<locals>.UIc                   sD   |j dkrt|d|d| _nt||d| _t j|| jddd d S )Nr   white)
foregroundmaster)rX   blackr   )r4   bgZbd)r#   r   r4   r"   superr5   )r3   rX   r   	__class__r   r   r5     s   
z_show.<locals>.UI.__init__)rN   rO   rP   r5   __classcell__r   r   r\   r   UI  s    r_   ztkinter not initializedN)r   LabelZ_default_rootOSErrorZTopleveltitlepack)r4   rb   r_   msgtopr   r   r   _show  s   
rf   rM   )r    r"   r   rI   )
__future__r   r   ior   r   r   r   r   r   r!   r"   r   rU   rf   r   r   r   r   <module>   s   

o
C
