a
    çÝEbN*  ã                   @   sê   d dl mZ ddlmZmZ zddlmZ dZW n eyF   dZY n0 ddddœZdddœZ	d	d
d
dœZ
dd„ ZG dd„ dejƒZdd„ Zdd„ Ze ejee¡ eræe eje¡ ejrÊe eje¡ e ejd¡ e ejd¡ dS )é    )ÚBytesIOé   )ÚImageÚ	ImageFile)Ú_webpTF)ÚRGBXÚRGBAÚRGB)r	   r   r	   r   )s   VP8 s   VP8Xs   VP8Lc                 C   sL   | d d… dk}| dd… dk}| dd… t v }|rH|rH|rHtsDdS dS d S )	Né   s   RIFFé   é   s   WEBPé   zEimage file could not be identified because WEBP support not installedT)Ú_VP8_MODES_BY_IDENTIFIERÚ	SUPPORTED)ÚprefixZis_riff_file_formatZis_webp_fileZis_valid_vp8_mode© r   úS/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/PIL/WebPImagePlugin.pyÚ_accept   s    ÿr   c                       sj   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‡ fdd„Z‡ fdd„Z‡  ZS )ÚWebPImageFileZWEBPz
WebP imager   c                 C   s�  t js|t  | j ¡ ¡\}}}| _}}|r2|| jd< |r@|| jd< ||f| _t|ƒ| _dd| j	 d| jfg| _
d| _d| _d S t  | j ¡ ¡| _| j ¡ \}}}}}}	||f| _|| jd< |d	? d
@ |d? d
@ |d? d
@ |d
@ f\}
}}}||||
f| jd< || _| jdk| _|	dk�rdn|	| _|	| _g | _
| j d¡}| j d¡}| j d¡}|�r`|| jd< |�rp|| jd< |�r€|| jd< | jdd� d S )NÚicc_profileÚexifÚraw©r   r   r   r   FÚloopé   éÿ   r   r   Ú
backgroundr   r	   ZICCPZEXIFzXMP Úxmp)Úreset)r   ÚHAVE_WEBPANIMZ
WebPDecodeÚfpÚreadÚmodeÚinfoÚ_sizer   ÚsizeÚtileÚn_framesZis_animatedZWebPAnimDecoderÚ_decoderÚget_infoÚrawmodeZ	get_chunkÚ_reset)ÚselfÚdataÚwidthÚheightr   r   Z
loop_countÚbgcolorZframe_countr"   Úbg_aÚbg_rÚbg_gÚbg_br   r   r   r   Ú_open,   sN    ÿ








ü


zWebPImageFile._openc                 C   s   d| j vrd S |  ¡  ¡ S )Nr   )r#   ZgetexifZ_get_merged_dict©r,   r   r   r   Ú_getexif`   s    
zWebPImageFile._getexifc                 C   s   |   |¡sd S || _d S ©N)Z_seek_checkÚ_WebPImageFile__logical_frame©r,   Úframer   r   r   Úseeke   s    
zWebPImageFile.seekTc                 C   s$   |r| j  ¡  d| _d| _d| _d S )Nr   éÿÿÿÿ)r(   r   Ú_WebPImageFile__physical_frameÚ_WebPImageFile__loadedÚ_WebPImageFile__timestamp)r,   r   r   r   r   r+   l   s
    
zWebPImageFile._resetc                 C   sd   | j  ¡ }|  jd7  _|d u r:|  ¡  |  d¡ tdƒ‚|\}}|| j }|| _||8 }|||fS )Nr   r   z(failed to decode next frame in WebP file)r(   Zget_nextr>   r+   r<   ÚEOFErrorr@   )r,   Úretr-   Ú	timestampÚdurationr   r   r   Ú	_get_nexts   s    


zWebPImageFile._get_nextc                 C   s8   | j |krd S || j k r |  ¡  | j |k r4|  ¡  q d S r8   )r>   r+   rE   r:   r   r   r   Ú_seek‡   s    


zWebPImageFile._seekc                    sŠ   t jr€| j| jkr€|  | j¡ |  ¡ \}}}|| jd< || jd< | j| _| jr^| jr^| j 	¡  t
|ƒ| _dd| j d| jfg| _tƒ  ¡ S )NrC   rD   r   r   r   )r   r   r?   r9   rF   rE   r#   r    Z_exclusive_fpÚcloser   r%   r*   r&   ÚsuperÚload)r,   r-   rC   rD   ©Ú	__class__r   r   rI   �   s    



zWebPImageFile.loadc                    s   t jstƒ  ¡ S | jS r8   )r   r   rH   Útellr9   r6   rJ   r   r   rL   ¢   s    
zWebPImageFile.tell)T)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr?   r9   r5   r7   r<   r+   rE   rF   rI   rL   Ú__classcell__r   r   rJ   r   r   %   s   4
r   c           '      C   sØ  | j  ¡ }t| dg ¡ƒ}d}| g| D ]}|t|ddƒ7 }q(|dkrVt| ||ƒ d S d}d|v rl|d }nTd| jv rÀ| jd }t|tƒrÀ|  	¡ }|rÀ||d |d d … \}	}
}|	|
|df}| j  d| j 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¡�pZd}| j  dd¡}t|t
jƒ�r€| ¡ }| j  dd¡}|�r˜d}|d u �r°|�r¬dnd}|d u �rÈ|�rÄdnd}t|ttfƒ�rút|ƒdk�sútdd„ |D ƒƒ�s
tdt|ƒ ƒ‚|\}}}}|d> |d> B |d > B |d> B }t | jd | jd |||||||¡	}d}d}|  ¡ } �z| g| D ]ü}t|ddƒ}!t|!ƒD ]à}"| |"¡ | ¡  |}#|j}$|jtv�rd!|jv �pîd"|jv �pî|jd#k�oîd!|j ¡ v }%|%�rúd$nd%}$| |$¡}#|$d%k�rd&}$| |# d'|$¡||#jd |#jd |$|||¡ t|ttfƒ�r`||| 7 }n||7 }|d7 }�q’�qzW |  | ¡ n|  | ¡ 0 | d |ddd||d¡ | |||¡}&|&d u �rÊtd(ƒ‚|  |&¡ d S ))NÚappend_imagesr   r'   r   )r   r   r   r   r   é   rD   r   Úminimize_sizeFÚkminÚkmaxÚallow_mixedÚlosslessÚqualityéP   Úmethodr   Ú r   r   é	   é   é   r
   c                 s   s   | ]}|d ko|dk V  qdS )r   é   Nr   )Ú.0Úvr   r   r   Ú	<genexpr>ß   ó    z_save_all.<locals>.<genexpr>z<Background color is not an RGBA tuple clamped to (0-255): %sr   r   r   ÚAÚaÚPr   r	   r   r   ú1cannot write file as WebP (encoder returned None))!ÚencoderinfoÚcopyÚlistÚgetÚgetattrÚ_saver#   Ú
isinstanceÚintZ
getpaletter   ÚExifÚtobytesÚtupleÚlenÚallÚOSErrorÚstrr   ZWebPAnimEncoderr%   rL   Úranger<   rI   r"   Ú_VALID_WEBP_MODESÚimZgetpalettemodeÚconvertÚaddÚassembleÚwrite)'r{   r    Úfilenamerj   rS   ÚtotalZimsr   ÚpaletteÚrÚgÚbrD   r   rU   rV   rW   rX   ÚverboserY   rZ   r\   r   r   r   r2   r3   r4   r1   ÚencZ	frame_idxrC   Zcur_idxZnfrÚidxr;   r*   Úalphar-   r   r   r   Ú	_save_all©   sÐ    






ÿ
þýÿÿ ÷
ÿý


ø
rŠ   c                 C   sþ   | j  dd¡}| j  dd¡}| j  d¡p*d}| j  dd¡}t|tjƒrN| ¡ }| j  dd¡}| j  d	d
¡}| jtvr®d| jv pšd| jv pš| jdkošd| jv }	|  	|	r¨dnd¡} t
 |  ¡ | jd | jd |t|ƒ| j||||¡
}
|
d u rðtdƒ‚| |
¡ d S )NrY   FrZ   r[   r   r]   r   r   r\   r
   rf   rg   rh   Ztransparencyr   r	   r   r   ri   )rj   rm   rp   r   rr   rs   r"   Ú_VALID_WEBP_LEGACY_MODESr#   r|   r   Z
WebPEncoder%   Úfloatrw   r   )r{   r    r€   rY   rZ   r   r   r   r\   r‰   r-   r   r   r   ro   5  s<    

ÿýöro   z.webpz
image/webpN)Úior   r]   r   r   r   r   ÚImportErrorrz   r‹   r   r   r   rŠ   ro   Zregister_openrP   Zregister_saver   Zregister_save_allZregister_extensionZregister_mimer   r   r   r   Ú<module>   s2   

ý  $