
    RfV                       d dl mZ d dlZddlmZmZ ddlmZ ddlm	Z	 d Z
 G d d	ej                  Z G d
 dej                  Z ej        ej        ee
            ej        de            ej        ej        d           dS )    )annotationsN   )Image	ImageFile)i32beo8c                    | d d         dk    S )N   s   qoif )prefixs    D/var/www/html/env/lib/python3.11/site-packages/PIL/QoiImagePlugin.py_acceptr      s    "1":      c                      e Zd ZdZdZd ZdS )QoiImageFileQOIzQuite OK Imagec                    t           j                            d                    sd}t          |          t	           fdt          d          D                        _         j                            d          d         }|dk    rdnd	 _         j                            dt          j
                   d
d j        z    j                                        d fg _        d S )Nr   znot a QOI filec              3  f   K   | ]+}t          j                            d                     V  ,dS )r   N)i32fpread).0iselfs     r   	<genexpr>z%QoiImageFile._open.<locals>.<genexpr>   s7      BBA3tw||A//BBBBBBr      r   r      RGBRGBAqoi)r   r   )r   r   r   SyntaxErrortuplerange_size_modeseekosSEEK_CURtelltile)r   msgchannelss   `  r   _openzQoiImageFile._open   s    tw||A'' 	#"Cc"""BBBBqBBBBB
7<<??1%&!mmUU
Q$$$Vdj0$',,..$GH			r   N)__name__
__module____qualname__formatformat_descriptionr.   r   r   r   r   r      s3        F)I I I I Ir   r   c                      e Zd ZdZd Zd ZdS )
QoiDecoderTc                j    || _         |\  }}}}|dz  |dz  z   |dz  z   |dz  z   dz  }|| j        |<   d S )Nr            @   )_previous_pixel_previously_seen_pixels)r   valuergba
hash_values          r   _add_to_previous_pixelsz"QoiDecoder._add_to_previous_pixels*   sR    $
1a!ea!ema!e+a"f4:
38$Z000r   c                    i  _         d  _                             d                    d dD                                  t	                      }t          j         j                  }t          |           j	        j
         j	        j        z  |z  k     r. j                            d          d         }|dk    r, j                            d           j        dd          z   }n|dk    r j                            d	          }nb|d
z	  }|dk    r"|dz  } j                             |d          }n|dk    rb j        d         |dz  d	z	  z   dz
  dz   j        d         |dz  dz	  z   dz
  dz   j        d         |dz  z   dz
  dz  f}| j        d         fz  }n|dk    ry j                            d          d         }|dz  dz
  |dz  d	z	  dz
  }	|dz  dz
  }
t           fdt!          |	d|
f          D                       }| j        d         fz  }n/|dk    r)|dz  dz   } j        }|dk    r
|d d         }|||z  z  }d                    d |D                       }                     |           |dk    r
|d d         }||z  }t          |           j	        j
         j	        j        z  |z  k     .                     t%          |                     dS )Nr   c              3  4   K   | ]}t          |          V  d S Nr   r   r   s     r   r   z$QoiDecoder.decode.<locals>.<genexpr>4   s(      -L-Lbee-L-L-L-L-L-Lr   )r   r   r      r   r      r   rH   r      ?   )r   r   r   r   0   r                      c              3  J   K   | ]\  }}j         |         z   |z   d z  V  dS )rM   N)r;   )r   r   diff
diff_greenr   s      r   r   z$QoiDecoder.decode.<locals>.<genexpr>R   sR       " "#At -a0:=DK" " " " " "r   c              3  4   K   | ]}t          |          V  d S rF   r   rG   s     r   r   z$QoiDecoder.decode.<locals>.<genexpr>^   s(       6 61A 6 6 6 6 6 6r   )r   )r<   r;   rC   join	bytearrayr   getmodebandsmodelenstatexsizeysizefdr   getr#   	enumerate
set_as_rawbytes)r   bufferdatabandsbyter=   opop_indexsecond_bytediff_red	diff_blue
run_lengthrU   s   `           @r   decodezQoiDecoder.decode1   sJ   ')$#$$SXX-L-L^-L-L-L%L%LMMM{{"49--$ii$**TZ-==EEE7<<??1%Dz!!Q$*>qrr*BB##QQY77#j0H 8<<X|TTEE1WW-a0TJ5F14LMPQQ-a0TJ5F14LMPQQ-a0D:4EFJcQE d21577EE1WW"&',,q//!"4K"&"3r!9J!,z!9a ?1DH!,z!9Q >I! " " " " "'0(Ay1I'J'J" " "  E d21577EE1WW"&"3q!8J 0Ezz %bqb	EJ..D 6 6 6 6 666((///zzbqb	EMDW $ii$**TZ-==EEEX 	d$$$ur   N)r/   r0   r1   	_pulls_fdrC   ro   r   r   r   r5   r5   '   s7        I9 9 94 4 4 4 4r   r5   r!   z.qoi)
__future__r   r(    r   r   _binaryr   r   r	   r   r   	PyDecoderr5   register_openr2   register_decoderregister_extensionr   r   r   <module>rx      s   # " " " " " 				         ! ! ! ! ! !      ! ! !I I I I I9& I I I$> > > > >$ > > >B  L'w ? ? ?  uj ) ) )  ,f 5 5 5 5 5r   