
    zvgM'                       d dl mZ d dlmZ d dlmZmZ ddlmZm	Z	 	 ddlm
Z
 dZn# e$ r dZY nw xY wd	d
d
dZd dZ G d de	j	                  Zd!dZd"dZd"dZ ej        ej        ee           erZ ej        ej        e            ej        ej        e            ej        ej        d            ej        ej        d           dS dS )#    )annotations)BytesIO)IOAny   )Image	ImageFile)_webpTFRGBRGBA)s   VP8 s   VP8Xs   VP8Lprefixbytesreturn
bool | strc                    | d d         dk    }| dd         dk    }| dd         t           v }|r|r|rt          s	 dS dS d	S )
N   s   RIFF      s   WEBP   zEimage file could not be identified because WEBP support not installedTF)_VP8_MODES_BY_IDENTIFIER	SUPPORTED)r   is_riff_file_formatis_webp_fileis_valid_vp8_modes       P/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/PIL/WebPImagePlugin.py_acceptr      ss     !*/!B$<7*Lr"u)AA | 0A  	W  t5    c                  r     e Zd ZdZdZdZdZddZddZddZ	dddZ
ddZddZd fdZddZd dZ xZS )!WebPImageFileWEBPz
WebP imager   r   Nonec                   t          j        | j                                                  | _        | j                                        \  }}}}}}||f| _        || j        d<   |dz	  dz  |dz	  dz  |dz	  dz  |dz  f\  }}}	}
||	|
|f| j        d<   || _        | j        dk    | _	        |dk    rd	n|| _
        || _        | j                            d
          }| j                            d          }| j                            d          }|r
|| j        d<   |r
|| j        d<   |r
|| j        d<   |                     d           d S )Nloop      r   r   
backgroundr   RGBXr   ICCPEXIFzXMP icc_profileexifxmpF)reset)r
   WebPAnimDecoderfpread_decoderget_info_sizeinfon_framesis_animated_moderawmode	get_chunk_reset)selfwidthheight
loop_countbgcolorframe_countmodebg_abg_rbg_gbg_br*   r+   r,   s                 r   _openzWebPImageFile._open+   sv    -dgllnn== AE@V@V@X@X=vz7KF]
&	&]d"]d"\T!dN	"
dD$ $(tT":	,#=1,"fnnUU$
 m--f55}&&v..m%%f-- 	3'2DIm$ 	% $DIf 	#"DIe 	%     r   dict[int, Any] | Nonec                d    d| j         vrd S |                                                                 S )Nr+   )r4   getexif_get_merged_dictr;   s    r   _getexifzWebPImageFile._getexifN   s.    ""4||~~..000r   frameintc                B    |                      |          sd S || _        d S N)_seek_check_WebPImageFile__logical_framer;   rM   s     r   seekzWebPImageFile.seekS   s-    && 	F  %r   Tr-   boolc                f    |r| j                                          d| _        d| _        d| _        d S )Nr   )r1   r-   _WebPImageFile__physical_frame_WebPImageFile__loaded_WebPImageFile__timestamp)r;   r-   s     r   r:   zWebPImageFile._resetZ   s;     	"M!!! !r   tuple[bytes, int, int]c                   | j                                         }| xj        dz  c_        |:|                                  |                     d           d}t          |          |\  }}|| j        z
  }|| _        ||z  }|||fS )Nr   r   z(failed to decode next frame in WebP file)r1   get_nextrX   r:   rT   EOFErrorrZ   )r;   retmsgdata	timestampdurations         r   	_get_nextzWebPImageFile._get_nexta   s    m$$&&" ;KKMMMIIaLLL<C3-- it//$ 	X	Y((r   c                    | j         |k    rd S || j         k     r|                                  | j         |k     r!|                                  | j         |k     d S d S rP   )rX   r:   rd   rS   s     r   _seekzWebPImageFile._seekv   sj     E))F4(((KKMMM#e++NN #e++++++r   Image.core.PixelAccess | Nonec                   | j         | j        k    r|                     | j                   |                                 \  }}}|| j        d<   || j        d<   | j        | _         | j        r | j        r| j                                         t          |          | _        t          j
        dd| j        z   d| j                  g| _        t                                                      S )Nrb   rc   raw)r   r   r   )rY   rR   rf   rd   r4   r/   _exclusive_fpcloser   r	   _Tilesizer8   tilesuperload)r;   ra   rb   rc   	__class__s       r   rp   zWebPImageFile.load~   s    =D000JJt+,,, )-(8(8%D)X%.DIk"$,DIj! 0DM w  4-  dmmDG"0BAt|TTUDIww||~~r   posc                    d S rP    )r;   rr   s     r   	load_seekzWebPImageFile.load_seek   s    r   c                    | j         S rP   )rR   rK   s    r   tellzWebPImageFile.tell   s    ##r   )r   r!   )r   rG   )rM   rN   r   r!   )T)r-   rU   r   r!   )r   r[   )r   rg   )rr   rN   r   r!   )r   rN   )__name__
__module____qualname__formatformat_descriptionrY   rR   rF   rL   rT   r:   rd   rf   rp   ru   rw   __classcell__)rq   s   @r   r   r   %   s        F%HO!! !! !! !!F1 1 1 1
% % % %    ) ) ) )*        $   $ $ $ $ $ $ $ $r   r   imImage.Imagec                T    | j         dvr|                     | j        rdnd          } | S )N)r'   r   r   r   r   )rA   converthas_transparency_data)r~   s    r   _convert_framer      s2    	w---ZZ"":EFFIr   r/   	IO[bytes]filenamestr | bytesr!   c                ~	   | j                                         }t          |                    dg                     }d}| g|z   D ]}|t	          |dd          z  }|dk    rt          | ||           d S d}d|v r	|d         }ned| j        v r\| j        d         }t          |t                    r:| 	                                }|r||dz  |dz   dz           \  }	}
}|	|
|df}n|||df}| j                             d	| j                            d	d                    }| j                             d
d          }| j                             dd          }| j                             dd           }| j                             dd           }| j                             dd          }d}| j                             dd          }| j                             dd          }| j                             dd          }| j                             dd          }| j                             d          pd}| j                             dd          }t          |t          j                  r|                                }| j                             dd          }|rd}||rdnd}||rdnd}t          |t          t          f          r,t          |          dk    st          d |D                       sd| }t!          |          |\  }}}}|d z  |d!z  z  |d"z  z  |dz  z  }t#          j        | j        d         | j        d         |||||||	  	        }d} d}!|                                 }"	 | g|z   D ]}t	          |dd          }#t+          |#          D ]}$|                    |$           t/          |          }%|                    |%                                t5          |!          ||||           t          |t          t          f          r|!||          z  }!n|!|z  }!| dz  } 	 |                     |"           n# |                     |"           w xY w|                    d t5          |!          |||d           |                    |||          }&|&d#}t!          |          |                    |&           d S )$Nappend_imagesr   r5   r   )r   r   r   r   r&      r%   rc   r#   minimize_sizeFkminkmaxallow_mixedlosslessqualityP   alpha_qualityd   methodr*    r+   r,   	         r   c              3  6   K   | ]}d |cxk    odk     nc V  dS )r      Nrt   ).0vs     r   	<genexpr>z_save_all.<locals>.<genexpr>   s6      44A1<<<<C<<<<444444r   z:Background color is not an RGBA tuple clamped to (0-255): r$   r   r   1cannot write file as WebP (encoder returned None))encoderinfocopylistgetgetattr_saver4   
isinstancerN   
getpaletter   ExiftobytestuplelenallOSErrorr
   WebPAnimEncoderrm   rw   rangerT   r   addgetimroundassemblewrite)'r~   r/   r   r   r   totalimsr&   palettergbrc   r#   r   r   r   r   verboser   r   r   r   r*   r+   r,   r`   rC   rD   rE   rB   enc	frame_idxrb   cur_idxnfridxrM   ra   s'                                          r   	_save_allr      s   .%%''K"==>>M Etm# - -j!,,,zzb"h(4J{"" .

		 	 W\*
j#&& 	G mmooG G!*q.JNa3G"GH1aAs^

(*j#F
~!!*bgkk*a.H.HIIH>fa((DN&&>>M>fd++D>fd++D.$$]E::KG~!!*e44Hn  B//GN&&<<M^!,,F.$$]339rK>fb))D$
## ||~~
.

UB
'
'C  |#qq!|$rr1 zD%=11z??a4444444   X:WWcll (D$d"*,	:daiHJ 





 
C IIggiiG4-' 	 	C#z1--CSzz  &s++ KKMM)$$!   hu66 *)!44II)IQ		)		6 	 GGD%	""Hg}aHHH <<T3//D|AcllHHTNNNNNs   +B;P= =Qc                V   | j                             dd          }| j                             dd          }| j                             dd          }| j                             d          pd}| j                             d	d
          }t          |t          j                  r|                                }|                    d          r
|dd          }| j                             dd          }| j                             dd          }	| j                             d          rdnd}
t          |           } t          j	        | 
                                |t          |          t          |          ||	|
||	  	        }|d}t          |          |                    |           d S )Nr   Fr   r   r   r   r*   r   r+   r   s   Exif     r,   r   r   exactr   r   r   )r   r   r   r   r   r   
startswithr   r
   
WebPEncoder   floatr   r   )r~   r/   r   r   r   r   r*   r+   r,   r   r   ra   r`   s                r   r   r     s   ~!!*e44Hn  B//GN&&<<M.$$]339rK>fc**D$
## ||~~'' ABBx
.

UB
'
'C^!,,F##G,,3AA!E			B


gm
 
D |AcllHHTNNNNNr   z.webpz
image/webpN)r   r   r   r   )r~   r   r   r   )r~   r   r/   r   r   r   r   r!   )
__future__r   ior   typingr   r   r   r   r	   r
   r   ImportErrorr   r   r   r   r   r   register_openr{   register_saveregister_save_allregister_extensionregister_mimert   r   r   <module>r      s   " " " " " "                      II   III
      o$ o$ o$ o$ o$I' o$ o$ o$d   z z z zz   D  M(- A A A <E,e444EM0)<<<E]17;;;E,l;;;;;	< <s   ' 11