
    NYhf                    *   d dl mZ d dlZddlmZ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)    )annotationsN   )Image	ImageFile)i32bec                    | d d dk(  S )N   s   qoif )prefixs    Q/var/www/feuerwehr-webapp/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%&!mU
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           
     B    i  _         d  _         j                  t        d             t               }t	        j
                   j                        } j                  j                   j                  j                  z  |z  }t        |      |k  r j                  j                  d      d   }|dk(  r6t         j                  j                  d             j                  dd  z   }ns|dk(  r j                  j                  d      }nQ|dz	  }|dk(  r,|d	z  } j                   j                  |t        d
            }n|dk(  rnt         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   j                  d   f      }n|dk(  rv j                  j                  d      d   }	|d	z  dz
  |	dz  dz	  dz
  }
|	dz  dz
  }t        t         fdt        |
d|f      D                    }| j                  dd  z  }n-|dk(  r(|d	z  dz   } j                  }|dk(  r|d d }|||z  z  }ۉ j                         |dk(  r|d d }||z  }t        |      |k  r j!                  |       y)N)r   r   r      r   r      r   rC   r	      ?   )r   r   r   r   0   r                      c              3  T   K   | ]  \  }}j                   |   z   |z   d z   ! yw)rH   N)r9   )r   r   diff
diff_greenr   s      r   r   z$QoiDecoder.decode.<locals>.<genexpr>W   s7       '4 "11!4zADHCOs   %()r   )r:   r9   rA   	bytearrayr   getmodebandsmodestatexsizeysizelenfdr   getr!   	enumerate
set_as_raw)r   bufferdatabandsdest_lengthbyter;   opop_indexsecond_bytediff_red	diff_blue
run_lengthrP   s   `            @r   decodezQoiDecoder.decode0   s   ')$#$$Y~%>?{""499-jj&&)9)99EA$i+%77<<?1%Dz!!$'',,q/2T5I5I!"5MM#QQY7#j0H 88<< )L"9E 1W%!11!4
9Jq8PQTUU!"!11!4
9Jq8PQTUU!"!11!4z8IJQNRUU 003	E 1W"&'',,q/!"4K"&"3r!9J!,z!9a ?1DH!,z!9Q >I% +4h95M+N E T11!"55E1W"&"3q!8J 00Ez %bq	EJ..D((/zbq	EMDa $i+%b 	r   N)r-   r.   r/   	_pulls_fdrA   rh   r
   r   r   r3   r3   &   s    I9:r   r3   r   z.qoi)
__future__r   r&    r   r   _binaryr   r   r   r   	PyDecoderr3   register_openr0   register_decoderregister_extensionr
   r   r   <module>rq      s    # 	  !!I9&& I$D$$ DN   L''w ?   uj )   ,,f 5r   