B
    1\)                 @   sp   d dl mZmZmZ d dlmZmZmZ	m
Z
 d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)i8i16lei32leo8z0.2c             C   s    t | dkot| dd dkS )N      )i  i  )leni16)prefix r   1lib/python3.7/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edd	 Z	e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|dd }|dkrHt|dd dkrH|dd	 d
ksPtdt|dd | _d| _t|dd t|dd f| _t|dd }|dkr|d d }|| jd< dd t	dD }| j d}d| _
t|dd dkr| j
t| | _
| j d}t|dd dkrv| j d}t|dd dkrT| |d n"t|dd dkrv| |d dd |D }tdd|| _d| _| j | _| j  | _| d d S ) N   r
   r	   )i  i        )             s     znot an FLI/FLC file   P
      i  i  F   durationc             S   s   g | ]}|||fqS r   r   ).0ar   r   r   
<listcomp>B   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!   U   s    ZRGB    )fpreadr   SyntaxError_FliImageFile__framecountmodeZ_sizei32inforange_FliImageFile__offset_paletter   rawjoinpalette_FliImageFile__frame_FliImageFile__fptell_FliImageFile__rewindseek)selfsmagicr   r6   r   r   r   _open*   s>    "
zFliImageFile._openc       
      C   s   d}xt t| jdD ]}| jd}|t|d  }t|d }|dkrRd}| j|d }xft dt|dD ]R}t|| |> }t||d  |> }t||d  |> }	|||	f||< |d7 }qtW qW d S )Nr   r$   r   r"   r   )r1   r   r*   r+   r   r   )
r<   r6   shiftier=   nr%   r&   r'   r   r   r   r3   ^   s    zFliImageFile._palettec             C   s   | j S )N)r-   )r<   r   r   r   n_framesp   s    zFliImageFile.n_framesc             C   s
   | j dkS )Nr   )r-   )r<   r   r   r   is_animatedt   s    zFliImageFile.is_animatedc             C   sN   |  |sd S || jk r"| d x&t| jd |d D ]}| | q8W d S )Nr   r   )Z_seek_checkr7   _seekr1   )r<   framefr   r   r   r;   x   s    


zFliImageFile.seekc             C   s   |dkr$d| _ | j| j d| _n|   || j d krFtd| || _ | j| _| j| j | jd}|svt	t
|}|| _dd| j | jd fg| _|  j|7  _d S )	Nr   r)   r   r   zcannot seek to frame %dr
   Zfli)r   r   )r7   r8   r;   r:   r2   load
ValueErrorr*   r+   EOFErrorr/   ZdecodermaxblocksizeZtile)r<   rG   r=   Z	framesizer   r   r   rF      s"    zFliImageFile._seekc             C   s   | j S )N)r7   )r<   r   r   r   r9      s    zFliImageFile.tellc             C   sB   z4y| j | jkr| j   W n tk
r0   Y nX W d d | _ X d S )N)r8   r*   closeAttributeError)r<   r   r   r   
_close__fp   s    
zFliImageFile._close__fpN)__name__
__module____qualname__formatZformat_descriptionZ!_close_exclusive_fp_after_loadingr?   r3   propertyrD   rE   r;   rF   r9   rO   r   r   r   r   r   $   s   4	r   z.fliz.flcN) r   r   r   Z_binaryr   r   r   r   r/   r   __version__r   r   Zregister_openrS   Zregister_extensionsr   r   r   r   <module>   s    
