o
    Z#ûaé)  ã                   @   sV  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i dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“d#d$“d%d&“d'd(“d)d*“d+d,d-d.d/œ¥Zd0D ]Zd1d2e› �fed3e› d4�< d1d2e› �fed5e› d4�< qvd6D ]"Zd7e› �d7e› �fed3e› d4�< d7e› �d7e› �fed5e› d4�< q•d8D ]Zd9d7e› �fed3e› d4�< d9d7e› �fed5e› d4�< qºed:d;ƒD ]Zd1d2e› �fed5e› d4�< qÜe d<¡Zd=d>„ ZG d?d@„ d@ejƒZdAdBd(dCd*dDdEdFdGdHdd+d,d-dIdJœZdKdL„ Ze eje¡ e eje¡ e ejdM¡ dS )Né    Né   )ÚImageÚ	ImageFileÚImagePaletteÚCommentÚDatezDigitalization equipmentzFile size (no of images)ÚLutÚNamezScale (x,y)zImage size (x*y)z
Image typez	0 1 image)Ú1r
   z	L 1 imagezGreyscale image)ÚLr   zGrayscale imagez	RGB image)ÚRGBúRGB;Lz	RLB image)r   ÚRLBz	RYB imagezB1 imagezB2 image)ÚPzP;2zB4 image)r   zP;4z
X 24 image)r   r   zL 32 S image)ÚIzI;32zL 32 F image)ÚFzF;32z
RGB3 image)r   úRGB;Tz
RYB3 image)r   úRYB;TzLA image)ÚLAzLA;LzPA image)r   úPA;L)ÚRGBAzRGBA;L)ÚRGBXzRGBX;L)ÚCMYKzCMYK;L)ÚYCbCrúYCbCr;L)z
RGBA imagez
RGBX imagez
CMYK imagez	YCC image)Ú8Ú8SÚ16Ú16SÚ32Ú32Fr   úF;zL z imagezL*)r   Ú16LÚ16BzI;)Ú32Sr   é   é!   s"   ^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$c                 C   s&   zt | ƒW S  ty   t| ƒ Y S w ©N)ÚintÚ
ValueErrorÚfloat)Ús© r,   ú3/usr/lib/python3/dist-packages/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 )ÚImImageFileÚIMzIFUNC Image MemoryFc              
   C   sŒ  d| j  d¡vrtdƒ‚| j  d¡ d}d| jt< d| jt< d| jt< d| _	 | j  d¡}|d	kr2q&|r<|d
ks<|dkr=nÁ|| j  	¡  }t
|ƒdkrNtdƒ‚|dd … dkr]|d d… }n|dd … dkrk|d d… }zt |¡}W n tjy„ } ztdƒ|‚d }~ww |ró| dd¡\}}| dd¡}| dd¡}|tttfv r½| dd¡}ttt| d¡ƒƒ}t
|ƒdkr¼|d }n|tkrÌ|tv rÌt| \}| _|tkrå|| jv rÞ| j|  |¡ n|g| j|< n|| j|< |tv rò|d7 }n
td| dd¡ ƒ‚q'|�stdƒ‚| jt | _| jt | _|�r/|dd… dk�r/| j  d¡}|�r/|dd… dk�s|�s6tdƒ‚t| jv �r»| j  d¡}d}d}	tdƒD ](}
||
 ||
d    k�rb||
d  k�ron n||
 |
k�rmd}	�qJd}�qJ| jdv �rª|�r‰|	�sˆt|d d… ƒ| _n2| jdv �r–d | _| _n| jdv �r¢d| _d | _t  !d!|¡| _"n| jd"k�r»|�r¶|	�s»t|ƒ| _d| _#| j  $¡  | _%}| j | _&| jd d… d#k�rz#t'| jdd … ƒ}|d$v�röd%d&| j( ||d'd(ddffg| _)W d S W n
 t*�y   Y nw | jd)v �r5| j(d | j(d  }d*d&| j( |d+fd*d&| j( || d,fd*d&| j( |d|  d-fg| _)d S d*d&| j( || jddffg| _)d S ).Nó   
éd   znot an IM filer   r   )é   r3   r   Tó   ó    ó   éþÿÿÿs   
éÿÿÿÿr%   zlatin-1ÚreplaceÚ*ú,zSyntax error in IM header: ÚasciizNot an IM filezFile truncatedi   é   r3   )r   r   r   ÚPA)r   r   r   )r   r>   r>   r   r   r   r!   )é   é   é    Úbit©r   r   r?   é   )r   r   Úraw)ÚGr   r8   )ÚRr   r8   )ÚBr   r8   )+ÚfpÚreadÚSyntaxErrorÚseekÚinfoÚMODEÚSIZEÚFRAMESÚrawmodeÚreadlineÚlenÚsplitÚmatchÚreÚerrorÚgroupÚdecodeÚSCALEr9   ÚtupleÚmapr.   ÚOPENÚCOMMENTÚappendÚTAGSÚ_sizeÚmodeÚLUTÚrangeÚlistÚlutr   rE   ÚpaletteÚframeÚtellÚ_ImImageFile__offsetÚ_ImImageFile__fpr(   ÚsizeÚtiler)   )ÚselfÚnr+   ÚmÚeÚkÚvrg   Ú	greyscaleÚlinearÚiÚoffsÚbitsrl   r,   r,   r-   Ú_open{   sÐ   



€ÿ€

€ÿÄ@ÿ0€€

 þÿ
ý"zImImageFile._openc                 C   s
   | j t S r'   ©rM   rP   ©rn   r,   r,   r-   Ún_frames  s   
zImImageFile.n_framesc                 C   s   | j t dkS )Nr   rz   r{   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   é   rE   rC   r8   )
Ú_seek_checkrh   rb   rS   rl   rj   rk   rI   rQ   rm   )rn   rh   rx   rl   rw   r,   r,   r-   rL     s   

 "zImImageFile.seekc                 C   s   | j S r'   )rh   r{   r,   r,   r-   ri   -  s   zImImageFile.tellc                 C   sP   z#z| j | jkr| j  ¡  W n	 ty   Y nw W d | _ d S W d | _ d S d | _ w r'   )rk   rI   ÚcloseÚAttributeErrorr{   r,   r,   r-   Ú
_close__fp0  s   
€ÿ€
þzImImageFile._close__fpN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingry   Úpropertyr|   r}   rL   ri   r‚   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)ÚYCCr   )r
   r   r   r   r>   r   r‹   rŒ   r�   r   r   r   r   r   r   c           	   
   C   sZ  z	t | j \}}W n ty } z
td| j› d�ƒ|‚d }~ww | 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v r}| d¡ | dd| ¡   d ¡ | jdv r™| | j dd¡¡ 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
r<   Ú é\   zName: z
zImage size (x*y): %d*%d
zFile size (no of images): )r   r>   s   Lut: 1
r5   iÿ  r6   r   r   rE   rC   r   r8   )ÚSAVErb   ÚKeyErrorr)   ÚencoderinfoÚgetÚwriteÚencodeÚosÚpathÚsplitextÚbasenameÚjoinrS   rl   ri   ÚimÚ
getpaletter   Ú_save)	r�   rI   ÚfilenameÚ
image_typerQ   rq   r�   ÚnameÚextr,   r,   r-   rŸ   S  s(   €ÿ


(rŸ   z.im)r˜   rV   r�   r   r   r   r^   ÚDATEÚ	EQUIPMENTrP   rc   ÚNAMErZ   rO   rN   r`   r]   rv   rd   ÚcompilerT   r.   r/   r’   rŸ   Úregister_openr†   Úregister_saveÚregister_extensionr,   r,   r,   r-   Ú<module>   sÂ   ÷þýüûúùø	÷
öõôóòðïíìè "
 Mð"