U
    &^(                     @   s  d dl Z ddlmZmZmZ ddlmZ dZdZdZ	dZ
d	Zd
ZdZdZdZed ed e	d e
d ed ed ed ed ed i	ZddddddddddddddddddddddZd D ],Zd!d"e fed#e < d!d"e fed$e < qd%D ]4Zd&e d&e fed#e < d&e d&e fed$e < qd'D ].Zd(d&e fed#e < d(d&e fed$e < qed)d*D ]Zd!d"e fed$e < qNe d+Zd,d- ZG d.d/ d/ejZd0d1dd2dd3d4d5d6d7ddddd8d9Zd:d; Zeeje eeje eejd< dS )=    N   )Image	ImageFileImagePalettei8CommentDatezDigitalization equipmentzFile size (no of images)ZLutNamezScale (x,y)zImage size (x*y)z
Image type)1r   )Lr   )RGBRGB;L)r   ZRLB)PzP;2)r   zP;4)r   r   )IzI;32)FzF;32)r   RGB;T)r   RYB;T)LAzLA;L)r   PA;L)RGBAzRGBA;L)RGBXzRGBX;L)CMYKzCMYK;L)YCbCrYCbCr;L)z	0 1 imagez	L 1 imagezGreyscale imagezGrayscale imagez	RGB imagez	RLB imagez	RYB imagezB1 imagezB2 imagezB4 imagez
X 24 imagezL 32 S imagezL 32 F imagez
RGB3 imagez
RYB3 imagezLA imagezPA imagez
RGBA imagez
RGBX imagez
CMYK imagez	YCC image)8Z8S16Z16SZ32Z32Fr   zF;%sz
L %s imagez
L*%s image)r   Z16LZ16BzI;%s)Z32Sr      !   s"   ^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$c                 C   s,   z
t | W S  tk
r&   t|  Y S X d S N)int
ValueErrorfloat)s r$   5/tmp/pip-install-a1j0c_p1/Pillow/PIL/ImImagePlugin.pynumberj   s    
r&   c                   @   sP   e Zd ZdZdZdZdd Zedd Zedd	 Z	d
d Z
dd Zdd ZdS )ImImageFileZIMzIFUNC Image MemoryFc                 C   s  d| j dkrtd| j d d}d| jt< d| jt< d| jt< d| _| j d}|dkrbqL|rv|d	ksv|d
krzq|| j 	  }t
|dkrtd|dd  dkr|d d }n|dd  dkr|d d }zt|}W n  tjk
r   tdY nX |r|dd\}}|dd}|dd}|tttfkr||dd}ttt|d}t
|dkr|d }n"|tkr|tkrt| \}| _|tkr|| jkr| j| | n|g| j|< n
|| j|< |tkr|d7 }qLtd|dd qL|std| jt | _| jt | _|rV|dd d
krV| j d}q.|sdtdt| jkr|| j d}d}d}tdD ]R}	||	 ||	d    kr||	d  krn nt||	 |	krd}nd}q| jdkrT|r|sRdd |d d D | _n@| jdkr,d | _| _n| jdkrDd | _d!| _t !d"|| _"n(| jd#kr||rl|s|d$d |D | _d| _#| j $  | _%}
| j | _&| jd d d%krzFt'| jdd  }|d&krd'd(| j( |
|d)d*ddffg| _)W d S W n t*k
r
   Y nX | jd+krp| j(d | j(d  }d,d(| j( |
d-fd,d(| j( |
| d.fd,d(| j( |
d|  d/fg| _)nd,d(| j( |
| jddffg| _)d S )0N   
d   znot an IM filer   r   )   r*   r             s   
r   zlatin-1replace*,zSyntax error in IM header: asciizNot an IM filezFile truncatedi      r*   )r   r   r   PAc                 S   s   g | ]}t |qS r$   r   .0cr$   r$   r%   
<listcomp>   s     z%ImImageFile._open.<locals>.<listcomp>)r   r   r   )r   r5   r5   r   r   r   c                 S   s   g | ]}t |qS r$   r   r6   r$   r$   r%   r9      s     zF;)          bitr   r   r:      )r   r   raw)Gr   r/   )Rr   r/   )Br   r/   )+fpreadSyntaxErrorseekinfoMODESIZEFRAMESrawmodereadlinelensplitmatchreerrorgroupdecodeSCALEr0   tuplemapr&   OPENCOMMENTappendTAGS_sizemodeLUTranger   Zlutr   r@   paletteframetell_ImImageFile__offset_ImImageFile__fpr    sizetiler!   )selfnr#   mkvr`   Z	greyscaleZlinearioffsbitsre   r$   r$   r%   _open{   s    







0
 
zImImageFile._openc                 C   s
   | j t S r   rH   rK   rg   r$   r$   r%   n_frames  s    zImImageFile.n_framesc                 C   s   | j t dkS )Nr   rp   rq   r$   r$   r%   is_animated  s    zImImageFile.is_animatedc                 C   s   |  |sd S || _| jdkr$d}ndt| j }| jd | d d | jd  }| j||  }| j| _dd| j || jddffg| _	d S )	Nr   r   r:   r      r@   r>   r/   )
Z_seek_checkra   r]   rN   re   rc   rd   rD   rL   rf   )rg   ra   rn   re   rm   r$   r$   r%   rG     s    

 zImImageFile.seekc                 C   s   | j S r   )ra   rq   r$   r$   r%   rb   -  s    zImImageFile.tellc                 C   sB   z4z| j | jkr| j   W n tk
r0   Y nX W 5 d | _ X d S r   )rd   rD   closeAttributeErrorrq   r$   r$   r%   
_close__fp0  s    
zImImageFile._close__fpN)__name__
__module____qualname__formatformat_descriptionZ!_close_exclusive_fp_after_loadingro   propertyrr   rs   rG   rb   rw   r$   r$   r$   r%   r'   u   s    

r'   )z0 1r   )	Greyscaler   )r~   r   )zL 32SzI;32S)zL 16I;16)zL 16LI;16L)zL 16BI;16B)zL 32FzF;32F)ZYCCr   )r   r   r   r   r5   r   r   r   r   r   r   r   r   r   r   c              
   C   s  zt | j \}}W n" tk
r4   td| j Y nX | jdd}|d| d |rp|d| d |d| j d |d| d | jd	kr|d
 |dd|	   d  | jd	kr|| j
dd t| |dd| j d|ddffg d S )NzCannot save %s images as IMframesr   zImage type: %s image
r3   z
Name: %s
zImage size (x*y): %d*%d
zFile size (no of images): %d
)r   r5   s   Lut: 1
r,   i  r-   r   r   r@   r>   r   r/   )SAVEr]   KeyErrorr!   Zencoderinfogetwriteencodere   rb   imZ
getpaletter   _save)r   rD   filenameZ
image_typerL   r   r$   r$   r%   r   S  s     


r   z.im)rQ    r   r   r   _binaryr   rY   ZDATEZ	EQUIPMENTrK   r^   NAMErU   rJ   rI   r[   rX   rl   r_   compilerO   r&   r'   r   r   Zregister_openr{   Zregister_saveZregister_extensionr$   r$   r$   r%   <module>   s            
 M