U
    ڲg                     @  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	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bytesbool)prefixreturnc                 C  s(   t | dko&t| ddko&t| ddkS )N      )  i     )r      )leni16)r    r   6/tmp/pip-unpacked-wheel-xela2va7/PIL/FliImagePlugin.py_accept   s
    r   c                   @  sV   e Zd ZdZdZdZdd Zdd Zdd	d
ddZdd	d
ddZ	dd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 | j | j d}t|ddkrt|d}d }t|D ]x}|d k	r:| j |d tj | j d}t|d}	|	dkrz| ||	dkrndnd  qt	|}|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>G   s     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%   c   s     ZRGB    )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"   magicr=   Znumber_of_subchunks
chunk_size_Z
chunk_typer   r   r   _open0   sP    







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   )r5   r   r.   r/   r   )
rB   r=   shiftierC   nr)   r*   r+   r   r   r   r:   l   s    zFliImageFile._paletteintNone)framer   c                 C  sJ   |  |sd S || jk r"| d t| jd |d D ]}| | q6d S )Nr   r   )Z_seek_checkr>   _seekr5   )rB   rO   fr   r   r   r7   ~   s    


zFliImageFile.seekc                 C  s   |dkr$d| _ | j| j d| _n|   || j d krLd| }t||| _ | j| _| j| j | jd}|sd}t	|t
|}|| _dd	| j | jd fg| _|  j|7  _d S )
Nr   r-   r   r   zcannot seek to frame r   zmissing frame sizeZfli)r   r   )r>   r?   r7   rA   r6   load
ValueErrorr.   r/   EOFErrorr3   ZdecodermaxblocksizeZtile)rB   rO   rD   rC   Z	framesizer   r   r   rP      s&    
zFliImageFile._seek)r   c                 C  s   | j S )N)r>   )rB   r   r   r   r@      s    zFliImageFile.tellN)__name__
__module____qualname__formatformat_descriptionZ!_close_exclusive_fp_after_loadingrH   r:   r7   rP   r@   r   r   r   r   r   +   s   <	r   z.fliz.flc)
__future__r   r8    r   r   r   _binaryr   r   r   r3   r
   r   r   Zregister_openrY   Zregister_extensionsr   r   r   r   <module>   s    