U
    É|jp+  ã                   @  sB  d dl mZ d dlZd dlZd dlmZmZ ddlmZm	Z	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 ]8Zd"d#e› �fed$e› d%�< d"d#e› �fed&e› d%�< qÀd'D ]DZd(e› �d(e› �fed$e› d%�< d(e› �d(e› �fed&e› d%�< qþd)D ]:Zd*d(e› �fed$e› d%�< d*d(e› �fed&e› d%�< �qHed+d,ƒD ] Zd"d#e› �fed&e› d%�< �qŽe d-¡Zd.d/d0œd1d2„ZG d3d4„ d4e	j	ƒZd5d6dd7dd8d9d:d;d<ddd=dd>d?œZd@dAdBdCdDœdEdF„Ze ej e¡ e !ej e¡ e "ej dG¡ dS )Hé    )ÚannotationsN)ÚIOÚAnyé   )ÚImageÚ	ImageFileÚImagePaletteÚ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)r   ú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   úF;zL z imagezL*)r   Z16LZ16BzI;)Z32Sr   é   é!   s"   ^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$r   Úfloat)ÚsÚreturnc                 C  s,   z
t | ƒW S  tk
r&   t| ƒ Y S X d S ©N)ÚintÚ
ValueErrorr!   )r"   © r'   ú5/tmp/pip-unpacked-wheel-v6wcnnki/PIL/ImImagePlugin.pyÚnumberk   s    
r)   c                   @  sh   e Zd ZdZdZdZddœdd„Zeddœd	d
„ƒZeddœdd„ƒZ	dddœdd„Z
ddœdd„ZdS )ÚImImageFileZIMzIFUNC Image MemoryFÚNone)r#   c              
   C  s¬  d| j  d¡krd}t|ƒ‚| j  d¡ d}d| jt< d| jt< d| jt< d| _| j  d¡}|dkrfqP|rz|d	ksz|d
kr~�q*|| j  	¡  }t
|ƒdkr¤d}t|ƒ‚|dd … dkrÂ|d d… }n|dd … dkrÞ|d d… }zt |¡}W n4 tjk
�r  } zd}t|ƒ|‚W 5 d }~X 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�rºt| \}| _|tk�rð|| jk�râ| j|  |¡ n|g| j|< n
|| j|< |tk�r(|d7 }qPd| dd¡› �}t|ƒ‚qP|�s<d}t|ƒ‚| jt | _| jt | _|�r||d d… d
k�r|| j  d¡}�qT|�sŽd}t|ƒ‚t| jk�r–| j  d¡}d}	d}
tdƒD ]N}|| ||d    k�ræ||d  k�rþn n|| |k�rd}
nd}	�q¶| jdk�rt|	�r2|
�srt|d d… ƒ| _ n@| jdk�rLd | _| _n| jdk�rdd| _d| _t! "d |¡| _#n"| jd!k�r–|	�rŒ|
�s–t|ƒ| _ d| _$| j  %¡  | _&}| j | _'| jd d… d"k�r&zFt(| jdd … ƒ}|d#k�rd$d%| j) ||d&d'ddffg| _*W d S W n t+k
�r$   Y nX | jd(k�rŠ| 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 )-Nó   
é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   ÚPA)r   r   r   )r   r9   r9   r   r   r   r   )é   é   é    Úbit©r   r   r:   é   )r   r   Úraw)ÚGr   r3   )ÚRr   r3   )ÚBr   r3   ),ÚfpÚreadÚSyntaxErrorÚseekÚinfoÚMODEÚSIZEÚFRAMESÚrawmodeÚreadlineÚlenÚsplitÚmatchÚreÚerrorÚgroupÚdecodeÚSCALEr4   ÚtupleÚmapr)   ÚOPENÚCOMMENTÚappendÚTAGSÚ_sizeÚ_modeÚLUTÚrangeÚmodeÚlistZlutr   r@   ÚpaletteÚframeÚtellÚ_ImImageFile__offsetÚ_fpr%   ÚsizeÚtiler&   )ÚselfÚmsgÚnr"   ÚmÚeÚkÚvrb   Z	greyscaleZlinearÚiÚoffsÚbitsrg   r'   r'   r(   Ú_open{   sÂ    








0

 
ýzImImageFile._openr%   c                 C  s
   | j t S r$   ©rH   rK   ©ri   r'   r'   r(   Ún_frames  s    zImImageFile.n_framesÚboolc                 C  s   | j t dkS )Nr   rt   ru   r'   r'   r(   Úis_animated  s    zImImageFile.is_animated)rc   r#   c                 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>   r3   )
Z_seek_checkrc   r`   rN   rg   re   rf   rD   rL   rh   )ri   rc   rr   rg   rq   r'   r'   r(   rG     s    

 zImImageFile.seekc                 C  s   | j S r$   )rc   ru   r'   r'   r(   rd   ,  s    zImImageFile.tellN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionZ!_close_exclusive_fp_after_loadingrs   Úpropertyrv   rx   rG   rd   r'   r'   r'   r(   r*   v   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)ÚRGBXr   )ZYCCr   )r   r   r   r   r9   r   r�   r‚   rƒ   r   r   r   r„   r   r   zImage.Imagez	IO[bytes]zstr | bytesr+   )ÚimrD   Úfilenamer#   c              
   C  sÐ  zt | j \}}W n: tk
rL } zd| j› d�}t|ƒ|‚W 5 d }~X Y nX | j dd¡}| d|› d� d¡¡ |rÚt|t	ƒrŒ| 
d¡}tj tj |¡¡\}}	d |d d	t|	ƒ … |	g¡}| d
|› d� d¡¡ | d| j  d¡¡ | d|› d� d¡¡ | jdk�r| d¡ | dd| ¡   d ¡ | jdk�r¨| j dd¡}
t|
ƒd }d}tdƒD ]2}||
|| ||d  … 7 }|dd|  7 }�qj| |¡ t | |dd| j d|ddffg¡ d S )NzCannot save z images as IMÚframesr   zImage type: z image
r7   Ú é\   zName: z
zImage size (x*y): %d*%d
zFile size (no of images): )r   r9   s   Lut: 1
r0   iÿ  r1   r   r   r?   ó    r8   r@   r>   r   r3   )ÚSAVEr`   ÚKeyErrorr&   ZencoderinfoÚgetÚwriteÚencodeÚ
isinstanceÚbytesrT   ÚosÚpathÚsplitextÚbasenameÚjoinrN   rg   rd   r…   Z
getpaletter_   r   Ú_save)r…   rD   r†   Z
image_typerL   rm   rj   r‡   ÚnameÚextZ
im_paletteÚcolorsrb   rp   r'   r'   r(   r—   I  s6    



r—   z.im)#Ú
__future__r   r’   rQ   Útypingr   r   rˆ   r   r   r   rY   ZDATEZ	EQUIPMENTrK   r^   ÚNAMErU   rJ   rI   r[   rX   rp   r_   ÚjÚcompilerO   r)   r*   r‹   r—   Zregister_openr}   Zregister_saveZregister_extensionr'   r'   r'   r(   Ú<module>   s²            ÷è "
 Bð*