o
    Z#ûa¤  ã                   @   sx   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 )é   )ÚImageÚ	ImageFileÚImagePalette)Úi16le)Úi32le©Úo8c                 C   s   t | ƒdkot| dƒdv S )Né   é   )é¯  i¯  )ÚlenÚi16)Úprefix© r   ú4/usr/lib/python3/dist-packages/PIL/FliImagePlugin.pyÚ_accept   s   r   c                   @   sH   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d„ ZdS )ÚFliImageFileÚFLIzAutodesk FLI/FLC AnimationFc                 C   sˆ  | j  d¡}t|ƒrt|dƒdv r|dd… dkstdƒ‚t|dƒ| _| jd	k| _d
| _t|dƒt|dƒf| _t	|dƒ}t|dƒ}|dkrK|d d }|| j
d< dd„ tdƒD ƒ}| j  d¡}d| _t|dƒdkrw| jt	|ƒ | _| j  d¡}t|dƒdkrŸ| j  d¡}t|dƒdkr’|  |d¡ nt|dƒdkrŸ|  |d¡ 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   c                 S   s*   g | ]\}}}t |ƒt |ƒ t |ƒ ‘qS r   r   )r    ÚrÚgÚbr   r   r   r"   Y   s   * ÚRGBó    éÿÿÿÿ)ÚfpÚreadr   r   ÚSyntaxErrorÚn_framesÚis_animatedÚmodeÚ_sizeÚi32ÚinfoÚrangeÚ_FliImageFile__offsetÚ_paletter   ÚrawÚjoinÚpaletteÚ_FliImageFile__frameÚ_FliImageFile__fpÚtellÚ_FliImageFile__rewindÚseek)ÚselfÚsr   Úmagicr:   r   r   r   Ú_open+   sB   ÿ


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   )
r@   r:   ÚshiftÚiÚerA   Únr&   r'   r(   r   r   r   r7   b   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   )r@   ÚframeÚfr   r   r   r?   t   s   


ÿzFliImageFile.seekc                 C   s°   |dkrd| _ | j | j¡ d| _n|  ¡  || j d kr$td|› �ƒ‚|| _ | 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<   r?   r>   r6   ÚloadÚ
ValueErrorr,   r-   ÚEOFErrorr3   ÚdecodermaxblockÚsizeÚtile)r@   rJ   rA   Ú	framesizer   r   r   rI   }   s"   zFliImageFile._seekc                 C   s   | j S ©N)r;   ©r@   r   r   r   r=   ™   s   zFliImageFile.tellc                 C   sP   z#z| j | jkr| j  ¡  W n	 ty   Y nw W d | _ d S W d | _ d S d | _ w rT   )r<   r,   ÚcloseÚAttributeErrorrU   r   r   r   Ú
_close__fpœ   s   
€ÿ€
þzFliImageFile._close__fpN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingrC   r7   r?   rI   r=   rX   r   r   r   r   r   %   s    7	r   z.fliz.flcN)Ú r   r   r   Ú_binaryr   r   r   r3   r   r   r   Úregister_openr\   Úregister_extensionsr   r   r   r   Ú<module>   s   	 