a
    &gh/-                     @  sP  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dl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 ]FZ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&< qVed,d-D ] Zd#d$e fed'e d&< qed.Zd/d0d1d2d3ZG d4d5 d5e	j	Zd6d7dd8dd9d:d;d<d=ddd>dd?d@ZdAdBdCdDdEdFdGZ e!ej"e e#ej"e  e$ej"dH dS )I    )annotationsN)IOAny   )Image	ImageFileImagePalette)DeferredError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16L16BzI;)Z32Sr      !   s"   ^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$r   float)sreturnc                 C  s*   z
t | W S  ty$   t|  Y S 0 d S N)int
ValueErrorr#   )r$    r)   a/mounts/lovelace/software/anaconda3/envs/metaDMG/lib/python3.9/site-packages/PIL/ImImagePlugin.pynumberl   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v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r|d d }n|dr|d d }zt|}W n6 tjy } zd}t||W Y d }~n
d }~0 0 |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 }qPd|dd }t|qP|s2d}t|| jt | _| jt | _|rl|d
sl| j d}qJ|s~d}t|t| jv r| j d}d}	d}
tdD ]N}|| ||d    kr||d  krn n|| |krd}
nd}	q| j dv rd|	r"|
sbt!|d d | _"n@| j dv r<d | _| _n| j dv rTd| _d| _t#$d || _%n"| j d!kr|	r||
st!|| _"d| _&| j '  | _(}| j | _)| jd"rzJt*| jdd  }|d#vrt+,d$d%| j- ||d&d'ddfg| _.W d S W n t/y   Y n0 | jd(v r| j-d | j-d  }t+,d)d%| j- |d*t+,d)d%| j- || d+t+,d)d%| j- |d|  d,g| _.n"t+,d)d%| j- || jddfg| _.d S )-N   
d   znot an IM filer   r   )   r0   r             s   
r!   zlatin-1replace*,zSyntax error in IM header: asciizNot an IM filezFile truncatedi      r0   )r   r   r   PA)r   r   r   )r   r;   r;   r   r   r   r   )          bitr   r   r<      )r   r   raw)Gr   r5   )Rr   r5   )Br   r5   )0fpreadSyntaxErrorseekinfoMODESIZEFRAMESrawmodereadlinelenendswithsplitmatchreerrorgroupdecodeSCALEr6   tuplemapr+   OPENCOMMENTappendTAGS_size_mode
startswithLUTrangemodelistZlutr   rB   paletteframetell_ImImageFile__offset_fpr'   r   _Tilesizetiler(   )selfmsgnr$   mekvrf   Z	greyscaleZlinearioffsbitsrl   r)   r)   r*   _open|   s    




 





0



zImImageFile._openr'   c                 C  s
   | j t S r&   rJ   rM   rn   r)   r)   r*   n_frames  s    zImImageFile.n_framesboolc                 C  s   | j t dkS )Nr   ry   rz   r)   r)   r*   is_animated  s    zImImageFile.is_animated)rg   r%   c                 C  s   |  |sd S t| jtr"| jj|| _| jdkr8d}ndt| j }| jd | d d | jd  }| j	||  }| j| _
tdd| j || jddfg| _d S )	Nr   r   r<   r      rB   r@   r5   )Z_seek_check
isinstancerj   r	   exrg   rd   rP   rl   ri   rF   r   rk   rN   rm   )rn   rg   rw   rl   rv   r)   r)   r*   rI   #  s    

 zImImageFile.seekc                 C  s   | j S r&   )rg   rz   r)   r)   r*   rh   9  s    zImImageFile.tellN)__name__
__module____qualname__formatformat_descriptionZ!_close_exclusive_fp_after_loadingrx   propertyr{   r}   rI   rh   r)   r)   r)   r*   r,   w   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   r;   r   r   r   r   r   r   r   r   r   r   zImage.Imagez	IO[bytes]zstr | bytesr-   )imrF   filenamer%   c                 C  s  zt | j \}}W n< tyN } z$d| j d}t||W Y d }~n
d }~0 0 | 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| jd  dd |d| dd | jdv r4|d |dd|   d  | jdv r| jdd}
t|
d }d}tdD ]2}||
|| ||d   7 }|dd|  7 }q|| t| |tdd| j d|ddfg d S )NzCannot save z images as IMframesr   zImage type: z image
r9    \   zName: z
zImage size (x*y): r   r7   zFile size (no of images): )r   r;   s   Lut: 1
r2   i  r3   r   r   rA       r:   rB   r@   r5   )SAVErd   KeyErrorr(   Zencoderinfogetwriteencoder   bytesrW   ospathsplitextbasenamejoinrP   rl   rh   r   Z
getpaletterc   r   _saverk   )r   rF   r   Z
image_typerN   rr   ro   r   nameextZ
im_palettecolorsrf   ru   r)   r)   r*   r   V  s:     

*

 r   z.im)%
__future__r   r   rT   typingr   r   r   r   r   r   Z_utilr	   r\   ZDATEZ	EQUIPMENTrM   rb   NAMErX   rL   rK   r^   r[   ru   rc   jcompilerR   r+   r,   r   r   Zregister_openr   Zregister_saveZregister_extensionr)   r)   r)   r*   <module>   s    $
 N,