o
    * iA                     @  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   ^/home/app/PaddleOCR-VL-test/.venv_paddleocr/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 )FliImageFileZ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rt|d}d }t|D ]5}|d ur| j |d tj | j d}t|d}	|	dv r| ||	dkrdnd  n	t	|}|s nqt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   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'   magicrE   Znumber_of_subchunks
chunk_size_Z
chunk_typer   r   r   _open1   s\   




zFliImageFile._openrE   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   )r6   r=   r   r7   r   )
rJ   rE   rR   ierK   nr1   r2   r3   r   r   r   rB   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   )Z_seek_checkrF   _seekr=   )rJ   rW   fr   r   r   r?      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   r5   r   r   zcannot seek to frame r   zmissing frame sizeZfli)r   r   )
isinstancerG   r   exrF   r?   rI   r>   load
ValueErrorr6   r7   EOFErrorr;   Zdecodermaxblockr   Z_TilesizeZtile)rJ   rW   rL   rK   Z	framesizer   r   r   rX      s*   
zFliImageFile._seekc                 C  s   | j S r0   )rF   )rJ   r   r   r   rH      s   zFliImageFile.tellN)r   r   )rE   rQ   rR   rS   r   r   )rW   rS   r   r   )r   rS   )__name__
__module____qualname__formatformat_descriptionZ!_close_exclusive_fp_after_loadingrP   rB   r?   rX   rH   r   r   r   r   r   ,   s    

B

	 r   z.fliz.flc)r   r   r   r   )
__future__r   r@    r   r   r   _binaryr   r   r   r;   r
   Z_utilr   r   r   Zregister_openrc   Zregister_extensionsr   r   r   r   <module>   s   
 