U
    ­A›ds*  ã                   @   s  d dl Z d dl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#�< �q,ed)d*ƒD ] Zd d!e› �fed$e› d#�< �qre 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Ú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   úF;zL z imagezL*)r   Z16LÚ16BzI;)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$   úJ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/PIL/ImImagePlugin.pyÚnumberj   s    
r&   c                   @   sH   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S )ÚImImageFileZIMzIFUNC Image MemoryFc              
   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 | _|�rz|d d… d
k�rz| j  d¡}�qR|�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�rr|	�r0|
�spt|d d… ƒ| _n@| jdk�rJd | _| _n| jdk�rbd| _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   r5   r5   r   r   r   r   )é   é   é    Úbit©r   r   r6   é   )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ÚrangeÚlistZlutr   r<   ÚpaletteÚframeÚtellÚ_ImImageFile__offsetÚ_fpr    ÚsizeÚtiler!   )ÚselfÚmsgÚnr#   ÚmÚeÚkÚvr]   Z	greyscaleZlinearÚiÚoffsÚbitsrb   r$   r$   r%   Ú_openz   sÂ    








0

 
ýzImImageFile._openc                 C   s
   | j t S r   ©rD   rG   ©rd   r$   r$   r%   Ún_frames  s    zImImageFile.n_framesc                 C   s   | j t dkS )Nr   ro   rp   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   r6   r   é   r<   r:   r/   )
Z_seek_checkr^   rY   rJ   rb   r`   ra   r@   rH   rc   )rd   r^   rm   rb   rl   r$   r$   r%   rC     s    

 zImImageFile.seekc                 C   s   | j S r   )r^   rp   r$   r$   r%   r_   +  s    zImImageFile.tellN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionZ!_close_exclusive_fp_after_loadingrn   Úpropertyrq   rr   rC   r_   r$   r$   r$   r%   r'   u   s    

r'   )z0 1r	   )Ú	Greyscaler
   )rz   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
rL } zd| j› d�}t|ƒ|‚W 5 d }~X Y nX | j dd¡}| d|› d� d¡¡ |rÆ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 }�qV| |¡ 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
r3   Ú é\   zName: z
zImage size (x*y): %d*%d
zFile size (no of images): )r   r5   s   Lut: 1
r,   iÿ  r-   r   r   r;   ó    r4   r<   r:   r   r/   )ÚSAVErY   ÚKeyErrorr!   ZencoderinfoÚgetÚwriteÚencodeÚosÚpathÚsplitextÚbasenameÚjoinrJ   rb   r_   ÚimZ
getpaletter[   r   Ú_save)rŒ   r@   ÚfilenameZ
image_typerH   rh   re   r~   ÚnameÚextZ
im_paletteÚcolorsr]   rk   r$   r$   r%   r�   H  s2    

r�   z.im)r‡   rM   r   r   r   r   rU   ZDATEZ	EQUIPMENTrG   rZ   ÚNAMErQ   rF   rE   rW   rT   rk   r[   ÚcompilerK   r&   r'   r‚   r�   Zregister_openrw   Zregister_saveZregister_extensionr$   r$   r$   r%   Ú<module>   s®            ÷è "
 Bð(