o �J�h��@s�ddlmZddlZddlmZmZddlmZdd d �Z Gd d �d ej�Z Gdd�dej �Z e� e je e �e�de �e�e jd�dS)�)� annotationsN�)�Image� ImageFile)�i32be�prefix�bytes�return�boolcCs|dd�dkS)N�sqoif�)rr r �PC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\PIL\QoiImagePlugin.py�_acceptsrc@seZdZdZdZddd�ZdS) � QoiImageFileZQOIzQuite OK Imager �NonecCs�t|j�d��sd}t|��t|j�d��t|j�d��f|_|j�d�d}|dkr-dnd|_|j�dtj �t � dd |j|j� �d�g|_ dS) Nr znot a QOI filerr��RGB�RGBA�qoi)rr)r�fp�read� SyntaxError�i32�_size�_mode�seek�os�SEEK_CURr�_Tile�tell�tile)�self�msg�channelsr r r �_opens"$zQoiImageFile._openN)r r)�__name__� __module__� __qualname__�format�format_descriptionr$r r r r rsrc@s>eZdZUdZdZded<iZded<dd d �Zddd�ZdS)� QoiDecoderTNzbytes | bytearray | None�_previous_pixelzdict[int, bytes | bytearray]�_previously_seen_pixels�value�bytes | bytearrayr rcCsD||_|\}}}}|d|d|d|dd}||j|<dS)Nr��� �@)r+r,)r!r-�r�g�b�a� hash_valuer r r �_add_to_previous_pixels+s $z"QoiDecoder._add_to_previous_pixels�buffer�$bytes | Image.SupportsArrayInterface�tuple[int, int]c sN�jdusJ�i�_��td��t�}t��j�}�jj�jj |}t |�|k�r �j� d�d}|dkrJ�j rJt�j� d���j dd�}n�|dkrU�j� d�}n�|d?}|dkrk|d @}�j� |td ��}n�|dkr��j r�t�j d|d @d?d d �j d|d@d ?d d �j d |d@d d �j df�}nc|d kr�j r�j� d�d} |d @d�| d@d?d} | d@d} tt��fdd�t| d| f�D���}|�j dd�7}n#|dk�r�j �r|d @d} �j }|dkr�|dd�}||| 7}q$��|�|dk�r|dd�}||7}t |�|ks+��|�dS)N)rrr��rr��rr<r ��?)rrrr�0��� � ����c3s*�|]\}}�j|�|dVqdS)rBN)r+)�.0�i�diff�Z diff_greenr!r r � <genexpr>[s �� �z$QoiDecoder.decode.<locals>.<genexpr>)�����r)�fdr,r8� bytearrayr� getmodebands�mode�state�xsize�ysize�lenrr+�get�tuple� enumerate� set_as_raw) r!r9�data�bands� dest_length�byter-�opZop_indexZ second_byteZdiff_redZ diff_blueZ run_lengthr rKr �decode2sn  �����    ��       � 2zQoiDecoder.decode)r-r.r r)r9r:r r;) r%r&r'� _pulls_fdr+�__annotations__r,r8r_r r r r r*&s    r*rz.qoi)rrr r )� __future__rr�rr�_binaryrrrr� PyDecoderr*� register_openr(�register_decoder�register_extensionr r r r �<module>s   K 
Memory