
    kjm                     T    d dl mZ d dlmZ  G d d          Z G d de          ZdS )    )Any)Imagec                       e Zd ZdZdefdZedefd            Zedefd            Z	ede
eef         fd            Zdd	edefd
ZdefdZdS )	BaseImagez
    Base class for atlas images.
    Must be hashable for use as dict keys and in sets
    and decides the uniqueness of the image.
    imagec                     || _         d S N_imageselfr   s     U/home/agentuser/manim-venv/lib/python3.11/site-packages/moderngl_window/atlas/base.py__init__zBaseImage.__init__           returnc                     t           )z!int: Width of the image in pixelsNotImplementedErrorr   s    r   widthzBaseImage.width   
     "!r   c                     t           )z"int: Height of the image in pixelsr   r   s    r   heightzBaseImage.height   r   r   c                     t           )z<tuple[int, int]: Size of the image in pixels (width, height)r   r   s    r   sizezBaseImage.size   r   r      
componentsc                     t           )
        Get the raw pixel data from the image.

        Keyword Args:
            components: Number of components to get
        r   r   r   s     r   get_pixel_datazBaseImage.get_pixel_data   s
     "!r   c                      t          |           S r	   )idr   s    r   __hash__zBaseImage.__hash__(   s    $xxr   Nr   )__name__
__module____qualname____doc__r   r   propertyintr   r   tupler   bytesr"   r%    r   r   r   r      s         c     "s " " " X" " " " " X" "eCHo " " " X"" " "U " " " "#      r   r   c                       e Zd ZdZdefdZedefd            Zedefd            Z	ede
eef         fd            Zdd	edefd
ZdS )
AtlasImagezAn atlas image using Pillowr   c                     || _         d S r	   r
   r   s     r   r   zAtlasImage.__init__/   r   r   r   c                     | j         j        S r	   )r   r   r   s    r   r   zAtlasImage.width2   s    {  r   c                     | j         j        S r	   )r   r   r   s    r   r   zAtlasImage.height6   s    {!!r   c                     | j         j        S r	   )r   r   r   s    r   r   zAtlasImage.size:   s    {r   r   r   c                     |dk    r,| j                             d                                          S |dk    r,| j                             d                                          S t	          d          )r    r   RGBA   RGBzOnly supports 3 or 4 components)r   converttobytescovert
ValueErrorr!   s     r   r"   zAtlasImage.get_pixel_data>   si     ??;&&v..668881__;%%e,,44666>???r   Nr&   )r'   r(   r)   r*   r   r   r+   r,   r   r   r-   r   r.   r"   r/   r   r   r1   r1   ,   s        %%e     !s ! ! ! X! " " " " X"  eCHo       X @ @ @U @ @ @ @ @ @r   r1   N)typingr   	PIL.Imager   r   r1   r/   r   r   <module>r@      s               # # # # # # # #L@ @ @ @ @ @ @ @ @ @r   