U
    ڲgp+                     @  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%< qd'D ]DZd(e d(e fed$e d%< d(e d(e fed&e d%< qd)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%< qe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-xela2va7/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rd}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rt| \}| _|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|sd}t|t| jkr| j d}d}	d}
tdD ]N}|| ||d    kr||d  krn 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|
st|| _ 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 |rt|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*