a
    ç´«j²  ã                   @  s    d dl mZ d dlZddlmZmZmZ ddlmZ	 ddlm
Z ddlmZ ddlmZ d	d
dœdd„ZG dd„ dejƒZe ejee¡ e ejddg¡ dS )é    )ÚannotationsNé   )ÚImageÚ	ImageFileÚImagePalette)Úi16le)Úi32le©Úo8)ÚDeferredErrorÚbytesÚbool)ÚprefixÚreturnc                 C  s(   t | ƒdko&t| dƒdv o&t| dƒdv S )Né   é   )é¯  i¯  é   )r   é   )ÚlenÚi16)r   © r   úQ/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/PIL/FliImagePlugin.pyÚ_accept   s
    ÿýr   c                   @  sf   e Zd ZdZdZdZddœdd„Zdd	dd
œdd„Zd	ddœdd„Zd	ddœdd„Z	d	dœdd„Z
dS )ÚFliImageFileZFLIzAutodesk FLI/FLC AnimationFÚNone)r   c           
      C  sØ  | j  d¡}t|ƒr$|dd… dks0d}t|ƒ‚t|dƒ| _| jdk| _d| _t|d	ƒt|d
ƒf| _t	|dƒ}t|dƒ}|dkrŒ|d d }|| j
d< dd„ tdƒD ƒ}| j  d¡}d| _t|dƒdkrò| jt	|ƒ | _| j  | j¡ | j  d¡}t|dƒdk�r’t|dƒ}d }t|ƒD ]x}|d u�r:| j  |d tj¡ | j  d¡}t|dƒ}	|	dv �rz|  ||	dk�rndnd¡  �q’t	|ƒ}|�s �q’�qt dd dd„ |D ƒ¡¡| _d| _| j | _| j  ¡ | _|  d¡ d S )Né€   é   é   s     znot an FLI/FLC filer   r   ÚPé   é
   é   r   r   iè  éF   Údurationc                 S  s   g | ]}|||f‘qS r   r   )Ú.0Úar   r   r   Ú
<listcomp>H   ó    z&FliImageFile._open.<locals>.<listcomp>é   i ñ  iúñ  )r   é   r*   é   r   ÚRGBr(   c                 s  s,   | ]$\}}}t |ƒt |ƒ t |ƒ V  qd S ©Nr	   )r%   ÚrÚgÚbr   r   r   Ú	<genexpr>e   r(   z%FliImageFile._open.<locals>.<genexpr>éÿÿÿÿ)ÚfpÚreadr   ÚSyntaxErrorr   Zn_framesZis_animatedÚ_modeÚ_sizeÚi32ÚinfoÚrangeÚ_FliImageFile__offsetÚseekÚosÚSEEK_CURÚ_paletter   ÚrawÚjoinÚpaletteÚ_FliImageFile__frameÚ_fpÚtellÚ_FliImageFile__rewind)
ÚselfÚsÚmsgr$   ÚmagicrB   Znumber_of_subchunksÚ
chunk_sizeÚ_Z
chunk_typer   r   r   Ú_open1   sR    







ÿzFliImageFile._openzlist[tuple[int, int, int]]Úint)rB   Úshiftr   c           
      C  s¶   d}t t| j d¡ƒƒD ]˜}| j d¡}||d  }|d }|dkrHd}| j |d ¡}t dt|ƒdƒD ]F}|| |> }||d  |> }||d  |> }	|||	f||< |d7 }qhqd S )Nr   r+   r   r)   r   )r:   r   r3   r4   r   )
rG   rB   rO   ÚiÚerH   Únr.   r/   r0   r   r   r   r?   n   s    zFliImageFile._palette)Úframer   c                 C  sJ   |   |¡sd S || jk r"|  d¡ t| jd |d ƒD ]}|  |¡ q6d S )Nr   r   )Z_seek_checkrC   Ú_seekr:   )rG   rS   Úfr   r   r   r<   €   s    


zFliImageFile.seekc                 C  sÒ   t | jtƒr| jj‚|dkr8d| _| j | j¡ d| _n|  ¡  || jd kr`d|› �}t	|ƒ‚|| _| j| _
| j
 | j¡ | j
 d¡}|s˜d}t|ƒ‚t|ƒ}|| _t dd	| j | j¡g| _|  j|7  _d S )
Nr   r2   r   r   zcannot seek to frame r   zmissing frame sizeZfli)r   r   )Ú
isinstancerD   r   ÚexrC   r<   rF   r;   ÚloadÚ
ValueErrorr3   r4   ÚEOFErrorr8   Zdecodermaxblockr   Z_TileÚsizeZtile)rG   rS   rI   rH   Z	framesizer   r   r   rT   ‰   s*    
zFliImageFile._seekc                 C  s   | j S r-   )rC   )rG   r   r   r   rE   ©   s    zFliImageFile.tellN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionZ!_close_exclusive_fp_after_loadingrM   r?   r<   rT   rE   r   r   r   r   r   ,   s   =	 r   z.fliz.flc)Ú
__future__r   r=   Ú r   r   r   Ú_binaryr   r   r   r8   r
   Z_utilr   r   r   Zregister_openr_   Zregister_extensionsr   r   r   r   Ú<module>   s    