a
    ¥Q•h\  ã                   @   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   úK/var/www/sistema_ama/venv/lib/python3.9/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 )ÚFliImageFileZFLIzAutodesk FLI/FLC AnimationFc           
      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  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 �rl|  ||	dk�r`dnd¡  �q„t	|ƒ}|�s
 �q„�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   ó    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   r"   ÚRGBr"   éÿÿÿÿ)Ú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<   Znumber_of_subchunksÚ
chunk_sizeÚ_Ú
chunk_typer   r   r   Ú_open/   sN    







zFliImageFile._openc           
      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   )r4   r   r+   r,   r   )
rA   r<   ÚshiftÚiÚerB   Únr&   r'   r(   r   r   r   r9   j   s    zFliImageFile._palettec                 C   sJ   |   |¡sd S || jk r"|  d¡ t| jd |d ƒD ]}|  |¡ q6d S )Nr   r   )Ú_seek_checkr=   Ú_seekr4   )rA   ÚframeÚfr   r   r   r6   |   s    


zFliImageFile.seekc                 C   s´   |dkr$d| _ | j | j¡ d| _n|  ¡  || j d krLd|› �}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   Zfli)r   r   )r=   r>   r6   r@   r5   ÚloadÚ
ValueErrorr+   r,   ÚEOFErrorr2   ÚdecodermaxblockÚsizeÚtile)rA   rO   rC   rB   Z	framesizer   r   r   rN   …   s$    
zFliImageFile._seekc                 C   s   | j S )N)r=   )rA   r   r   r   r?   ¢   s    zFliImageFile.tellN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingrH   r9   r6   rN   r?   r   r   r   r   r   *   s   ;	r   z.fliz.flc)r7   Ú r   r   r   Ú_binaryr   r   r   r2   r	   r   r   Úregister_openrZ   Úregister_extensionsr   r   r   r   Ú<module>   s   