
    \bj&                       d dl mZ d dl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Z
e
rd dlmZmZ 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   )Image	ImageFile)_webpTF)IOAnyRGBRGBA)s   VP8 s   VP8Xs   VP8Lprefixbytesreturn
bool | strc                    |                      d          }| dd         dk    }| dd         t          v }|r|r|rt          s	 dS dS dS )	Ns   RIFF      s   WEBP   zEimage file could not be identified because WEBP support not installedTF)
startswith_VP8_MODES_BY_IDENTIFIER	SUPPORTED)r   is_riff_file_formatis_webp_fileis_valid_vp8_modes       G/home/drrone/.local/lib/python3.11/site-packages/PIL/WebPImagePlugin.py_acceptr      st     ++G44!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                                         }t          |          sd}t          |          t	          j        |          | _        | j                                        \  | _        | j	        d<   }| _
        | _        |dz	  dz  |dz	  dz  |dz  |dz	  dz  f| j	        d<   | j
        dk    | _        | j        d	k    rd
n| j        | _        dddd                                D ]+\  }}| j                            |          x}r
|| j	        |<   ,|                     d           d S )Nznot a WEBP fileloopr      r      
backgroundr   RGBXr   ICCPEXIFzXMP )icc_profileexifxmpF)reset)fpreadr   SyntaxErrorr   WebPAnimDecoder_decoderget_info_sizeinfon_framesrawmodeis_animated_modeitems	get_chunk_reset)selfsmsgbgcolorkey
chunk_namevalues          r   _openzWebPImageFile._open-   s`   w"""GLLNNqzz 	##Cc""" -a00 M""$$ 	L
DIf%wt| ]d"\T!dN]d"	#
	,  =1,"lf44UU$,
 " 
  
 %''		' 	'OC
 //
;;;u '!&	# 	%     r   dict[int, Any] | Nonec                d    d| j         vrd S |                                                                 S )Nr+   )r5   getexif_get_merged_dictr=   s    r   _getexifzWebPImageFile._getexifQ   s.    ""4||~~..000r   frameintc                B    |                      |          sd S || _        d S N)_seek_check_WebPImageFile__logical_framer=   rK   s     r   seekzWebPImageFile.seekV   s-    && 	F  %r   Tr-   boolc                f    |r| j                                          d| _        d| _        d| _        d S )Nr   )r2   r-   _WebPImageFile__physical_frame_WebPImageFile__loaded_WebPImageFile__timestamp)r=   r-   s     r   r<   zWebPImageFile._reset]   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)r2   get_nextrV   r<   rR   EOFErrorrX   )r=   retr?   data	timestampdurations         r   	_get_nextzWebPImageFile._get_nextd   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 rN   )rV   r<   ra   rQ   s     r   _seekzWebPImageFile._seeky   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 )Nr_   r`   raw)r   r   r   )rW   rP   rc   ra   r5   r.   _exclusive_fpcloser   r   _Tilesizer7   tilesuperload)r=   r^   	__class__s     r   rm   zWebPImageFile.load   s    =D000JJt+,,, CG..BRBR?D$)K($)J*? 0DM w  4-  dmmDG"0BAt|TTUDIww||~~r   posc                    d S rN    )r=   ro   s     r   	load_seekzWebPImageFile.load_seek   s    r   c                    | j         S rN   )rP   rI   s    r   tellzWebPImageFile.tell   s    ##r   )r   r!   )r   rE   )rK   rL   r   r!   )T)r-   rS   r   r!   )r   rY   )r   rd   )ro   rL   r   r!   )r   rL   )__name__
__module____qualname__formatformat_descriptionrW   rP   rD   rJ   rR   r<   ra   rc   rm   rr   rt   __classcell__)rn   s   @r   r   r   '   s        F%HO"! "! "! "!H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   )modeconverthas_transparency_data)r{   s    r   _convert_framer      s2    	w---ZZ"":EFFIr   r.   	IO[bytes]filenamestr | bytesr!   c           
     Z	   | 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} 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   r6   r   )r   r   r   r   r&      r$   r`   r#   minimize_sizeFkminkmaxallow_mixedlosslessqualityP   alpha_qualityd   methodr*    r+   r,   	            c              3  6   K   | ]}d |cxk    odk     nc V  dS )r      Nrq   ).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_saver5   
isinstancerL   
getpaletter   ExiftobytestuplelenallOSErrorr   WebPAnimEncoderrj   rt   rangerR   r   addgetimroundassemblewrite)'r{   r.   r   r   r   totalimsr&   palettergbr`   r#   r   r   r   r   verboser   r   r   r   r*   r+   r,   r?   bg_rbg_gbg_bbg_aenc	frame_idxr_   cur_idxnfridxrK   r^   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   r   r   r   
WebPEncoder   floatr   r   )r{   r.   r   r   r   r   r*   r+   r,   r   r   r^   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   r   r   r   r   r   ImportErrorTYPE_CHECKINGtypingr	   r
   r   r   r   r   r   r   register_openrx   register_saveregister_save_allregister_extensionregister_mimerq   r   r   <module>r      s   " " " " " "              II   III        n$ n$ n$ n$ n$I' n$ n$ n$b   y y y yx   D  M(- A A A <E,e444EM0)<<<E]17;;;E,l;;;;;	< <s    ))