
    ^j!                         d Z ddlZddlZddlmZ ddlmZmZmZ ddl	m
c mZ  G d de          Z G d de          Zd	 Zd
 ZdS )z9Encoder and decoder for PNG files, using PyPNG (png.py).
    N)	ImageData)ImageDecoderImageEncoderImageDecodeExceptionc                       e Zd Zd Zd ZdS )PNGImageDecoderc                     dgS Nz.png selfs    R/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/image/codecs/png.pyget_file_extensionsz#PNGImageDecoder.get_file_extensions   	    x    c                    |st          |d          }	 t          j        |          }|                                \  }}}}n)# t          $ r}t          d|p|d|          d }~ww xY w|d         r|d         rd}	nd}	n|d         rd	}	nd
}	t          |	          |z  }
t          j        d|d         dk             t          j	        |           }t          |||	|                                |
           S )Nrb)filezPyPNG cannot read z: 	greyscalealphaLALRGBARGBBHbitdepth   )openpypngReaderasDirect	Exceptionr   lenarray	itertoolschainr   tobytes)r   filenamer   readerwidthheightpixelsmetadataefmtpitchs              r   decodezPNGImageDecoder.decode   s0    	($''D	[\t,,,F.4oo.?.?+E6688 	[ 	[ 	[&&XEUQUEUEUWXWX'YZZZ	[ K  		    C5 T(:"6":;Y_f=UVVV^^-=-=vFFFs   .A 
A)A$$A)N)__name__
__module____qualname__r   r1   r   r   r   r   r      s7          G G G G Gr   r   c                       e Zd Zd Zd ZdS )PNGImageEncoderc                     dgS r
   r   r   s    r   r   z#PNGImageEncoder.get_file_extensions,   r   r   c                    |                                 }d|j        v }t          |j                  dk     }|r|rd|_        nd|_        n|rd|_        nd|_        |j        t          |j                  z   |_        t          j        |j        |j        ||          }t          j        d          }|	                    |
                    |j        |j                             |                    ||           d S )	NA   r   r   r   r   )r   r   B)get_image_dataformatr#   r*   r0   r   Writerr+   r$   	frombytesget_datawrite_array)r   imager(   r   	has_alphar   writerdatas           r   encodezPNGImageEncoder.encode/   s    $$&&5<'	%%)	 		% &#% %"$c%,&7&778ek5<9T]^^^{3u~~elEK@@AAA4&&&&&r   N)r2   r3   r4   r   rF   r   r   r   r6   r6   +   s2          ' ' ' ' 'r   r6   c                       t                      gS N)r   r   r   r   get_decodersrI   I       r   c                       t                      gS rH   )r6   r   r   r   get_encodersrL   M   rJ   r   )__doc__r$   r%   pyglet.imager   pyglet.image.codecsr   r   r   pyglet.extlibs.pngextlibspngr   r   r6   rI   rL   r   r   r   <module>rS      s          " " " " " " P P P P P P P P P P " " " " " " " " "G G G G Gl G G G<' ' ' ' 'l ' ' '<      r   