o
    pcz*                     @   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CommentZDatezDigitalization equipmentzFile size (no of images)Z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
   Z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)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]*$c                 C   s&   zt | W S  ty   t|  Y S w N)int
ValueErrorfloat)s r"   1lib/python3.10/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vrd}t|| j d d}d| jt< d| jt< d| jt< d| _	 | j d}|d	kr4q(|r>|d
ks>|dkr?n|| j 	  }t
|dkrRd}t||dd  dkra|d d }n|dd  dkro|d d }zt|}W n tjy } zd}t||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d|dd }t|q)|sd}t|| jt | _| jt | _|r9|d d dkr9| j d}|r9|d d dks'|sBd}t|t| jv r| j d}d}	d}
tdD ](}|| ||d    krn||d  kr{n n|| |kryd}
qVd}	qV| 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rd%d&| j( ||d'd(ddffg| _)W d S W n
 t*y   Y nw | jd)v rA| 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	   )   r(   r   T          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   r3   r3   r   r   r
   r   )          bitr   r   r4      )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SCALEr.   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bitsr`   r"   r"   r#   _open{   s   





A0

 
"zImImageFile._openc                 C   s
   | j t S r   rB   rE   rb   r"   r"   r#   n_frames  s   
zImImageFile.n_framesc                 C   s   | j t dkS )Nr   rm   rn   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   r4   r      r:   r8   r-   )
Z_seek_checkr\   rW   rH   r`   r^   r_   r>   rF   ra   )rb   r\   rk   r`   rj   r"   r"   r#   rA     s   

 "zImImageFile.seekc                 C   s   | j S r   )r\   rn   r"   r"   r#   r]   1  s   zImImageFile.tellN)__name__
__module____qualname__formatZformat_descriptionZ!_close_exclusive_fp_after_loadingrl   propertyro   rp   rA   r]   r"   r"   r"   r#   r%   u   s     

r%   )z0 1r   )	Greyscaler	   )rw   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   r3   r   rx   ry   rz   r   r
   r   r   r   r   c              
   C   s  z	t | j \}}W n ty! } zd| j d}t||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}tdD ]}||
|| ||d   7 }|dd|  7 }q|| 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
r1    \   zName: z
zImage size (x*y): %d*%d
zFile size (no of images): )r   r3   s   Lut: 1
r*   i  r+   r
   r   r9       r2   r:   r8   r   r-   )SAVErW   KeyErrorr   ZencoderinfogetwriteencodeospathsplitextbasenamejoinrH   r`   r]   imZ
getpaletterY   r   _save)r   r>   filenameZ
image_typerF   rf   rc   r{   nameextZ
im_paletteZcolorsr[   ri   r"   r"   r#   r   N  s6   




(r   z.im)r   rK   r|   r   r   r   rS   ZDATEZ	EQUIPMENTrE   rX   NAMErO   rD   rC   rU   rR   ri   rY   compilerI   r$   r%   r   r   Zregister_openru   Zregister_saveZregister_extensionr"   r"   r"   r#   <module>   s   	
 "
 H)