a
    ç´«j"#  ã                   @  s6  d dl mZ d dlZd dlmZ d dlmZ ddlmZm	Z	m
Z
 zddlmZ dZW n eyj   d	ZY n0 d
Zd Zdddœdd„Zdddœdd„Zddœdd„ZG dd„ de
j
ƒZdddddœd d!„Zd)dddd"dd#œd$d%„Ze	 ejee¡ e�r2e	 eje¡ e	 eje¡ e	 ejd&d'g¡ e	 ejd(¡ dS )*é    )ÚannotationsN)ÚBytesIO)ÚIOé   )ÚExifTagsÚImageÚ	ImageFile)Ú_avifTFÚautoÚstrz
str | None)Ú
codec_nameÚreturnc                 C  sJ   t  ¡ }| d¡D ]2}| d¡d | kr| d¡d  d¡d   S qd S )Nz, z [r   ú:éÿÿÿÿú )r	   Zcodec_versionsÚsplit)r   ÚversionsÚversion© r   úR/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/PIL/AvifImagePlugin.pyÚget_codec_version   s
    r   Úbytesz
bool | str)Úprefixr   c                 C  s8   | dd… dkrdS | dd… }|dv r4t s0dS dS dS )	Né   é   s   ftypFé   )s   avifs   aviss   mif1s   msf1zEimage file could not be identified because AVIF support not installedT)Ú	SUPPORTED)r   Zmajor_brandr   r   r   Ú_accept   s    ÿr   Úint©r   c                   C  s0   t rt S ttdƒr tt d¡ƒS t ¡ p*dS d S )NÚsched_getaffinityr   r   )ÚDEFAULT_MAX_THREADSÚhasattrÚosÚlenr    Ú	cpu_countr   r   r   r   Ú_get_default_max_threads8   s
    
r&   c                      sj   e Zd ZdZdZdZddœdd„Zddd	œd
d„Zddœ‡ fdd„Zdddœdd„Z	ddœdd„Z
‡  ZS )ÚAvifImageFileZAVIFz
AVIF imager   ÚNoner   c                 C  sü   t sd}t|ƒ‚tdkr.t t¡s.d}t|ƒ‚t | j ¡ tt	ƒ ¡| _
| j
 ¡ \| _| _| _}}}}| jdk| _|r~|| jd< |rŒ|| jd< |dks˜|ràt ¡ }|rÀ| |¡ | tjjd¡}nd}||krà||tjj< | ¡ }|rî|| jd< |  d¡ d S )	NzAimage file could not be opened because AVIF support not installedr
   zInvalid opening codecr   Úicc_profileÚxmpÚexifr   )r   ÚSyntaxErrorÚDECODE_CODEC_CHOICEr	   Zdecoder_codec_availableÚ
ValueErrorZAvifDecoderÚfpÚreadr&   Ú_decoderÚget_infoÚ_sizeÚn_framesÚ_modeZis_animatedÚinfor   ÚExifÚloadÚgetr   ÚBaseÚOrientationÚtobytesÚseek)ÚselfÚmsgZiccr+   Úexif_orientationr*   Ú	exif_dataZoriginal_orientationr   r   r   Ú_openF   s@    ÿýÿ



zAvifImageFile._openr   )Úframer   c                 C  s4   |   |¡sd S || _t dd| j d| j¡g| _d S )NÚraw)r   r   r   )Z_seek_checkÚ_AvifImageFile__framer   Z_TileÚsizeÚmodeÚtile)r>   rC   r   r   r   r=   o   s    
zAvifImageFile.seekzImage.core.PixelAccess | Nonec                   sr   | j rh| j | j¡\}}}}td||  ƒ| jd< td||  ƒ| jd< | jr^| jr^| j ¡  t	|ƒ| _t
ƒ  ¡ S )Niè  Ú	timestampÚduration)rH   r1   Z	get_framerE   Úroundr6   r/   Z_exclusive_fpÚcloser   Úsuperr8   )r>   ÚdataZ	timescaleZpts_in_timescalesZduration_in_timescales©Ú	__class__r   r   r8   w   s    ÿ


zAvifImageFile.load)Úposr   c                 C  s   d S ©Nr   )r>   rQ   r   r   r   Ú	load_seek†   s    zAvifImageFile.load_seekc                 C  s   | j S rR   )rE   )r>   r   r   r   Útell‰   s    zAvifImageFile.tell)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionrE   rB   r=   r8   rS   rT   Ú__classcell__r   r   rO   r   r'   A   s   )r'   zImage.Imagez	IO[bytes]zstr | bytesr(   )Úimr/   Úfilenamer   c                 C  s   t | ||dd� d S )NT)Úsave_all)Ú_save)r[   r/   r\   r   r   r   Ú	_save_all�   s    r_   Úbool)r[   r/   r\   r]   r   c           %      C  s¨  | j  ¡ }|r t| dg ¡ƒ}ng }d}| g| D ]}|t|ddƒ7 }q2| dd¡}t|tƒrn|dk sn|dkrzd}	t|	ƒ‚| d	d¡}
| d
d¡}| dd¡}| dtƒ ¡}| dd¡}|dkrÖt	 
|¡sÖd}	t|	ƒ‚| dd¡}| dd¡}| dd¡}t| dd¡ƒ}t| d||  k�o&dkn  ¡ƒ}| d| j d¡¡}d}| d¡ }�rÄt|tjƒ�rl|}nt ¡ }| |¡ tjj|v �r®| tjj¡}|�r¨| ¡ nd}nt|tjƒ�rÄ| ¡ }| d¡}t|tƒ�rä| d¡}| d¡}|d u�rVt|tƒ�r| ¡ }zt|ƒ}W n t�y0   d}Y n0 td d!„ |D ƒƒ}|�rVd"}	t|	ƒ‚t	 | j|||||||||||�pzd|�p‚d||�pŒd|¡}d}d}|  ¡ }|dk}zÄ| g| D ]ª}t|ddƒ} t| ƒD ]Ž}!|  |!¡ |}"|j!}#|j!d#v�r|j"�rþd$nd%}#| #|#¡}"t|
ttfƒ�r&|
| }n|
}| $|" d&|#¡||"j|#|¡ |d7 }|�sÎ �q¶�qÎ�q¶W |   |¡ n|   |¡ 0 | %¡ }$|$d u �ršd'}	t&|	ƒ‚| '|$¡ d S )(NÚappend_imagesr   r4   r   ÚqualityéK   éd   zInvalid quality settingrJ   Úsubsamplingz4:2:0Úspeedé   Úmax_threadsÚcodecr
   zInvalid saving codecÚrangeÚfullZ	tile_rowsZ	tile_colsÚalpha_premultipliedFÚ
autotilingr)   r+   ó    r*   zutf-8ÚadvancedTc                 s  s&   | ]}t |tƒ pt|ƒd kV  qdS )é   N)Ú
isinstanceÚtupler$   )Ú.0Úvr   r   r   Ú	<genexpr>Í   rn   z_save.<locals>.<genexpr>zcadvanced codec options must be a dict of key-value string pairs or a series of key-value two-tuples>   ÚRGBAÚRGBrv   rw   rD   z1cannot write file as AVIF (encoder returned None))(ZencoderinfoÚcopyÚlistr9   Úgetattrrq   r   r.   r&   r	   Zencoder_codec_availabler`   r6   r   r7   r8   r   r:   r;   Úpopr<   r   ÚencodeÚdictÚitemsrr   Ú	TypeErrorÚanyZAvifEncoderrF   rT   rj   r=   rG   Zhas_transparency_dataÚconvertÚaddÚfinishÚOSErrorÚwrite)%r[   r/   r\   r]   r6   ra   ÚtotalZimsrb   r?   rJ   re   rf   rh   ri   Zrange_Ztile_rows_log2Ztile_cols_log2rl   rm   r)   r@   r+   rA   r*   ro   ÚinvalidÚencZ	frame_idxZframe_durationZcur_idxZis_single_frameZnfrÚidxrC   ÚrawmoderN   r   r   r   r^   ‘   sÎ    
&





ÿð



û	
r^   z.avifz.avifsz
image/avif)F)Ú
__future__r   r#   Úior   Útypingr   Ú r   r   r   r	   r   ÚImportErrorr-   r!   r   r   r&   r'   r_   r^   Zregister_openrX   Zregister_saveZregister_save_allZregister_extensionsZregister_mimer   r   r   r   Ú<module>   s2   
	L ÿ 