o
    svXj[  ã                   @   s€   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„ ZG d	d
„ d
ejƒZe ejee¡ e ejddg¡ dS )é    Né   )ÚImageÚ	ImageFileÚImagePalette)Úi16le)Úi32le©Úo8c                 C   s(   t | ƒdkot| dƒdv ot| dƒdv S )Né   é   )é¯  i¯  é   )r   é   )ÚlenÚi16)Úprefix© r   úO/var/www/html/myproject/venv/lib/python3.10/site-packages/PIL/FliImagePlugin.pyÚ_accept   s
   ÿýr   c                   @   s@   e Zd ZdZdZdZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dS )ÚFliImageFileÚFLIzAutodesk FLI/FLC AnimationFc           
      C   s¾  | j  d¡}t|ƒ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rF|d d }|| j
d< dd„ tdƒD ƒ}| j  d¡}d| _t|dƒdkrr| 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„dd„ |D ƒ}t 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>F   s    z&FliImageFile._open.<locals>.<listcomp>é   i ñ  iúñ  )r   é   r$   é   r   c                 S   s*   g | ]\}}}t |ƒt |ƒ t |ƒ ‘qS r   r   )r    ÚrÚgÚbr   r   r   r"   a   s   * ÚRGBó    éÿÿÿÿ)Ú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   Úmagicr=   Únumber_of_subchunksÚ
chunk_sizeÚ_Ú
chunk_typer   r   r   Ú_open/   sP   




ÿzFliImageFile._openc           
      C   s¶   d}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 }q4qd S )Nr   r%   r   r#   r   )r5   r   r,   r-   r   )
rB   r=   ÚshiftÚiÚerC   Únr&   r'   r(   r   r   r   r:   j   s    
ûùzFliImageFile._palettec                 C   sJ   |   |¡sd S || jk r|  d¡ t| jd |d ƒD ]}|  |¡ qd S )Nr   r   )Ú_seek_checkr>   Ú_seekr5   )rB   ÚframeÚfr   r   r   r7   |   s   


ÿzFliImageFile.seekc                 C   s´   |dkrd| _ | j | j¡ d| _n|  ¡  || j d kr&d|› �}t|ƒ‚|| _ | j| _| j | j¡ | j d¡}|s>t	‚t
|ƒ}|| _dd| j | jd fg| _|  j|7  _d S )	Nr   r+   r   r   zcannot seek to frame r   Úfli)r   r   )r>   r?   r7   rA   r6   ÚloadÚ
ValueErrorr,   r-   ÚEOFErrorr3   ÚdecodermaxblockÚsizeÚtile)rB   rQ   rD   rC   Ú	framesizer   r   r   rP   …   s$   
zFliImageFile._seekc                 C   s   | j S )N)r>   )rB   r   r   r   r@   ¢   s   zFliImageFile.tellN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingrJ   r:   r7   rP   r@   r   r   r   r   r   *   s    ;	r   z.fliz.flc)r8   Ú r   r   r   Ú_binaryr   r   r   r3   r	   r   r   Úregister_openr^   Úregister_extensionsr   r   r   r   Ú<module>   s   