
    \
j                         d Z ddlZddlZddlmZmZ ddl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ImageDecodeException)ImageDecoderImageEncoderc                       e Zd Zd Zd ZdS )PNGImageDecoderc                     dgS Nz.png selfs    Q/DATA/AppData/hermes/venv/lib/python3.11/site-packages/pyglet/image/codecs/png.pyget_file_extensionsz#PNGImageDecoder.get_file_extensions1   	    x    c                    	 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)filezPyPNG cannot read z: 	greyscalealphaLALRGBARGBBHbitdepth   )pypngReaderasDirect	Exceptionr   lenarray	itertoolschainr   tobytes)r   r   filenamereaderwidthheightpixelsmetadataefmtpitchs              r   decodezPNGImageDecoder.decode4   s   	[\t,,,F.4oo.?.?+E6688 	[ 	[ 	[&&XEUQUEUEUWXWX'YZZZ	[ K  		    C5 T(:"6":;Y_f=UVVV^^-=-=vFFFs   .1 
AAAN)__name__
__module____qualname__r   r/   r   r   r   r   r   0   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_extensionsL   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(   r.   r   Writerr)   r"   	frombytesget_datawrite_array)r   imager   r&   	has_alphar   writerdatas           r   encodezPNGImageEncoder.encodeO   s    $$&&5<'	%%)	 		% &#% %"$c%,&7&778ek5<9T]^^^{3u~~elEK@@AAA4&&&&&r   N)r0   r1   r2   r   rD   r   r   r   r4   r4   K   s2          ' ' ' ' 'r   r4   c                       t                      gS N)r   r   r   r   get_decodersrG   i       r   c                       t                      gS rF   )r4   r   r   r   get_encodersrJ   m   rH   r   )__doc__r"   r#   pyglet.imager   r   pyglet.image.codecsr   r   pyglet.extlibs.pngextlibspngr   r   r4   rG   rJ   r   r   r   <module>rQ      s   H       8 8 8 8 8 8 8 8 : : : : : : : : " " " " " " " " "G G G G Gl G G G6' ' ' ' 'l ' ' '<      r   