
    &Th!                     *   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       y)    N   )Image	ImageFile)i32beo8c                     | d d dk(  S )N   s   qoif )prefixs    Z/home/stella.sw7ft.com/public_html/venv/lib/python3.12/site-packages/PIL/QoiImagePlugin.py_acceptr      s    "1:      c                       e Zd ZdZdZd Zy)QoiImageFileQOIzQuite OK Imagec                     t         j                  j                  d            sd}t        |      t	         fdt        d      D               _         j                  j                  d      d   }|dk(  rdnd	 _         j                  j                  dt        j                         d
d j                  z    j                  j                         d fg _        y )Nr
   znot a QOI filec              3   f   K   | ](  }t        j                  j                  d              * yw)r
   N)i32fpread).0iselfs     r   	<genexpr>z%QoiImageFile._open.<locals>.<genexpr>   s"     BA3tww||A/Bs   .1   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    tww||A'"Cc""BqBB
77<<?1%%]E	Q$Vdjj0$'',,.$GH	r   N)__name__
__module____qualname__formatformat_descriptionr-   r   r   r   r   r      s    F)Ir   r   c                       e Zd ZdZd Zd Zy)
QoiDecoderTc                 r    || _         |\  }}}}|dz  |dz  z   |dz  z   |dz  z   dz  }|| j                  |<   y )Nr            @   )_previous_pixel_previously_seen_pixels)r   valuergba
hash_values          r   _add_to_previous_pixelsz"QoiDecoder._add_to_previous_pixels)   sO    $
1a!ea!ema!e+a"f4:
38$$Z0r   c                     i  _         d  _         j                  dj                  d dD                     t	               }t        j                   j                        }t        |       j                  j                   j                  j                  z  |z  k  r  j                  j                  d      d   }|dk(  r) j                  j                  d      t        d      z   }nv|dk(  r j                  j                  d	      }nT|d
z	  }|dk(  r#|dz  } j                   j                  |d      }n|dk(  rj 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(  rn j                  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j                  d D              } j                  |       |dk(  r|d d }||z  }t        |       j                  j                   j                  j                  z  |z  k  r  j%                  t'        |             y)Nr   c              3   2   K   | ]  }t        |        y wNr   r   r   s     r   r   z$QoiDecoder.decode.<locals>.<genexpr>3   s     -Lbe-L   )r   r   r      r   r      r   rH   r
      ?   )r   r   r   r   0   r                      c              3   T   K   | ]  \  }}j                   |   z   |z   d z   ! yw)rM   N)r:   )r   r   diff
diff_greenr   s      r   r   z$QoiDecoder.decode.<locals>.<genexpr>Q   s7      "#At --a0:=DK"s   %(c              3   2   K   | ]  }t        |        y wrE   r   rF   s     r   r   z$QoiDecoder.decode.<locals>.<genexpr>]   s      61A 6rG   )r   )r;   r:   rB   join	bytearrayr   getmodebandsr%   lenstatexsizeysizefdr   r   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.decode0   s   ')$#$$SXX-L^-L%LM{""499-$i$****TZZ-=-==EE77<<?1%Dz!Q"S'1#QQY7#j0H 88<<X|TE1W--a0TJ5F14LMPQQ--a0TJ5F14LMPQQ--a0D:4EFJcQE d221577E1W"&'',,q/!"4K"&"3r!9J!,z!9a ?1DH!,z!9Q >I! "'0(Ay1I'J" E d221577E1W"&"3q!8J 00Ez %bq	EJ..D 6 66((/zbq	EMDW $i$****TZZ-=-==EEX 	d$r   N)r.   r/   r0   	_pulls_fdrB   rn   r   r   r   r4   r4   &   s    I94r   r4   r    z.qoi)r'    r   r   _binaryr   r   r   r   r   	PyDecoderr4   register_openr1   register_decoderregister_extensionr   r   r   <module>rv      s    
  ! !I9&& I$>$$ >B   L''w ?   uj )   ,,f 5r   