
     f2                       d dl mZ d dlZddlmZmZ ddlmZ d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prefixbytesreturnboolc                    | d d         dk    S )N   s   qoif )r   s    U/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/PIL/QoiImagePlugin.py_acceptr      s    "1":      c                      e Zd ZdZdZddZdS )QoiImageFileQOIzQuite OK Imager
   Nonec                    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)r
   r   )__name__
__module____qualname__formatformat_descriptionr0   r   r   r   r   r      s9        F)I I I I I Ir   r   c                  @    e Zd ZU dZdZded<   i Zded<   ddZddZdS )
QoiDecoderTNzbytes | bytearray | None_previous_pixelzdict[int, bytes | bytearray]_previously_seen_pixelsvaluebytes | bytearrayr
   r   c                j    || _         |\  }}}}|dz  |dz  z   |dz  z   |dz  z   dz  }|| j        |<   d S )Nr             @   )r8   r9   )r   r:   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   bufferr	   tuple[int, int]c           
          j         J i  _                             t          d                     t                      }t	          j         j                  } j        j         j        j	        z  |z  }t          |          |k     rA j                             d          d         }|dk    r@ j        r9t           j                             d                     j        dd          z   }n|dk    r j                             d          }n{|dz	  }|dk    r/|d	z  } j                            |t          d
                    }nA|dk    rq j        rjt           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    r j        r 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  }n6|dk    r0 j        r)|d	z  dz   } j        }|dk    r
|d d         }|||z  z  }                     |           |dk    r
|d d         }||z  }t          |          |k     A                     |           dS )N)r   r   r      r   r      r    rJ   r      ?   )r   r   r   r   0   r                      c              3  J   K   | ]\  }}j         |         z   |z   d z  V  dS )rO   N)r8   )r   r   diff
diff_greenr   s      r   r   z$QoiDecoder.decode.<locals>.<genexpr>[   sR         '4 "1!4zADHCO     r   )r   )fdr9   rF   	bytearrayr   getmodebandsmodestatexsizeysizelenr   r8   getr%   	enumerate
set_as_raw)r   rG   databandsdest_lengthbyter:   opop_indexsecond_bytediff_red	diff_blue
run_lengthrW   s   `            @r   decodezQoiDecoder.decode2   sN   w"""')$$$Y~%>%>???{{"49--j&)99EA$ii+%%7<<??1%Dz!!d&:!!$',,q//22T5I!""5MM##QQY77#j0H 8<< )L"9"9 EE 1WW!5W%!1!4
9Jq8PQTUU!"!1!4
9Jq8PQTUU!"!1!4z8IJQNRUU 03	 	EE 1WW!5W"&',,q//!"4K"&"3r!9J!,z!9a ?1DH!,z!9Q >I%     +4h95M+N+N     E T1!""55EE1WW!5W"&"3q!8J 0Ezz %bqb	EJ..D((///zzbqb	EMDc $ii+%%d 	ur   )r:   r;   r
   r   )rG   r	   r
   rH   )	r1   r2   r3   	_pulls_fdr8   __annotations__r9   rF   rn   r   r   r   r7   r7   &   sf         I04O4444<>>>>>9 9 9 9< < < < < <r   r7   r#   z.qoi)r   r	   r
   r   )
__future__r   r*    r   r   _binaryr   r   r   r   	PyDecoderr7   register_openr4   register_decoderregister_extensionr   r   r   <module>rx      s   # " " " " " 				         ! ! ! ! ! !! ! ! !I I I I I9& I I I$H H H H H$ H H HV  L'w ? ? ?  uj ) ) )  ,f 5 5 5 5 5r   