o
    ë6WjA  ã                   @  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„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ÚprefixÚbytesÚreturnÚboolc                 C  s(   t | ƒdkot| dƒdv ot| dƒdv S )Né   é   )é¯  i¯  é   )r   é   )ÚlenÚi16)r   © r   úa/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/PIL/FliImagePlugin.pyÚ_accept   s
   ÿýr   c                   @  sJ   e Zd ZdZdZdZddd„Zddd„Zddd„Zddd„Z	ddd„Z
dS )ÚFliImageFileÚFLIzAutodesk FLI/FLC AnimationFr   ÚNonec           
      C  sî  | j d usJ ‚| j  d¡}t|ƒr)|dd… dkr)|dd… dkr)|dd … d	ks/d
}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  | jt	|ƒ ¡ | j  d¡}t|dƒdkrÔt|dƒ}d }t|ƒD ]5}|d ur®| j  |d tj¡ | j  d¡}t|dƒ}	|	dv rË|  ||	dkrÆdnd¡  n	t	|ƒ}|sÓ nqžt dd  d!d"„ |D ƒ¡¡| _d#| _| j | _| j  ¡ | _|  d¡ d S )$Né€   é   é   s     é*   éP   s&                                         éX   s(                                           znot an FLI/FLC fileé   r   ÚPé   é
   r   r   r   iè  éF   Údurationc                 S  s   g | ]}|||f‘qS r   r   )Ú.0Úar   r   r   Ú
<listcomp>N   s    z&FliImageFile._open.<locals>.<listcomp>é   i ñ  iúñ  )r   é   r-   é   r   ÚRGBó    c                 s  s.   � | ]\}}}t |ƒt |ƒ t |ƒ V  qd S ©Nr	   )r)   ÚrÚgÚbr   r   r   Ú	<genexpr>j   s   €, z%FliImageFile._open.<locals>.<genexpr>éÿÿÿÿ)ÚfpÚreadr   ÚSyntaxErrorr   Ún_framesÚ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(   ÚmagicrH   Únumber_of_subchunksÚ
chunk_sizeÚ_Ú
chunk_typer   r   r   Ú_open1   s\   ÿ




ÿÿzFliImageFile._openrH   úlist[tuple[int, int, int]]ÚshiftÚintc           
      C  sÄ   d}| j d us	J ‚tt| j  d¡ƒƒD ]L}| j  d¡}||d  }|d }|dkr+d}| j  |d ¡}tdt|ƒdƒD ]#}|| |> }||d  |> }||d  |> }	|||	f||< |d7 }q;qd S )Nr   r.   r   r,   r   )r7   r@   r   r8   r   )
rM   rH   rW   ÚiÚerN   Únr2   r3   r4   r   r   r   rE   s   s"   
ûùzFliImageFile._paletteÚframec                 C  sJ   |   |¡sd S || jk r|  d¡ t| jd |d ƒD ]}|  |¡ qd S )Nr   r   )Ú_seek_checkrI   Ú_seekr@   )rM   r\   Úfr   r   r   rB   †   s   


ÿzFliImageFile.seekc                 C  sÒ   t | jtƒr
| jj‚|dkrd| _| j | j¡ d| _n|  ¡  || jd kr0d|› �}t	|ƒ‚|| _| j| _
| j
 | j¡ | j
 d¡}|sLd}t|ƒ‚t|ƒ}|| _t dd	| j | j¡g| _|  j|7  _d S )
Nr   r6   r   r   zcannot seek to frame r   zmissing frame sizeÚfli)r   r   )Ú
isinstancerJ   r   ÚexrI   rB   rL   rA   ÚloadÚ
ValueErrorr7   r8   ÚEOFErrorr>   Údecodermaxblockr   Ú_TileÚsizeÚtile)rM   r\   rO   rN   Ú	framesizer   r   r   r^   �   s*   
zFliImageFile._seekc                 C  s   | j S r1   )rI   )rM   r   r   r   rK   ¯   s   zFliImageFile.tellN)r   r   )rH   rV   rW   rX   r   r   )r\   rX   r   r   )r   rX   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingrU   rE   rB   r^   rK   r   r   r   r   r   ,   s    

B

	 r   z.fliz.flc)r   r   r   r   )Ú
__future__r   rC   Ú r   r   r   Ú_binaryr   r   r   r>   r
   Ú_utilr   r   r   Úregister_openrn   Úregister_extensionsr   r   r   r   Ú<module>   s   
 