a
    ֶ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   b/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-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 )FliImageFileZFLIzAutodesk FLI/FLC AnimationFc                 C   s  | j d}t|r2t|ddv r2|dd dks:td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rD| j d}t|ddkr(| |d nt|ddkrD| |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       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   r"   ZRGBr"   )fpreadr   r   SyntaxErrorZn_framesZis_animatedmode_sizei32inforange_FliImageFile__offset_paletter   rawjoinpalette_FliImageFile__frame_FliImageFile__fptell_FliImageFile__rewindseek)selfsr   magicr6   r   r   r   _open+   sF    


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   )r1   r   r*   r+   r   )
r<   r6   shiftier=   nr&   r'   r(   r   r   r   r3   b   s    zFliImageFile._palettec                 C   sJ   |  |sd S || jk r"| d t| jd |d D ]}| | q6d S )Nr   r   )Z_seek_checkr7   _seekr1   )r<   framefr   r   r   r;   t   s    


zFliImageFile.seekc                 C   s   |dkr$d| _ | j| j d| _n|   || j d krHtd| || _ | j| _| j| j | jd}|sxt	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   )r7   r8   r;   r:   r2   load
ValueErrorr*   r+   EOFErrorr/   ZdecodermaxblocksizeZtile)r<   rE   r=   Z	framesizer   r   r   rD   }   s"    zFliImageFile._seekc                 C   s   | j S N)r7   r<   r   r   r   r9      s    zFliImageFile.tellc                 C   sF   z8z| j | jkr| j   W n ty.   Y n0 W d | _ nd | _ 0 d S rK   )r8   r*   closeAttributeErrorrL   r   r   r   
_close__fp   s    zFliImageFile._close__fpN)__name__
__module____qualname__formatformat_descriptionZ!_close_exclusive_fp_after_loadingr?   r3   r;   rD   r9   rO   r   r   r   r   r   %   s   7	r   z.fliz.flcN) r   r   r   _binaryr   r   r   r/   r   r   r   Zregister_openrS   Zregister_extensionsr   r   r   r   <module>   s   	 