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< qd8D ]Zd9d7e fed3e d4< d9d7e fed5e d4< qed:d;D ]Zd1d2e fed5e d4< qe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 rt| \}| _|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|	st|d d | _n2| jdv rd | _| _n| jdv rd| _d | _t !d!|| _"n| jd"kr|r|	st|| _d| _#| j $  | _%}| j | _&| jd d d#krz#t'| jdd  }|d$vrd%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"