o
     ¼Îhõ  ã                	   @  sì   d dl mZ d dlZd dlZd dlmZ ddlmZmZ ddl	m
Z ddl	mZ d%dd„ZdddddddddœZG dd„ dejƒZd&dd„ZG d d!„ d!ejƒZe d"e¡ e ejee¡ e eje¡ e ejd#¡ e ejg d$¢¡ dS )'é    )ÚannotationsN)ÚIOé   )ÚImageÚ	ImageFile)Úi16be)Úo8ÚprefixÚbytesÚreturnÚboolc                 C  s   t | ƒdkot| ƒdkS )Né   éÚ  )ÚlenÚi16)r	   © r   úX/home/www/facesmatcher.com/frenv_anti/lib/python3.10/site-packages/PIL/SgiImagePlugin.pyÚ_accept"   s   r   ÚLúL;16BÚRGBzRGB;16BÚRGBAzRGBA;16B))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   é   r   )r   r   r   )r   r   é   )r   r   r   c                   @  s   e Zd ZdZdZddd„ZdS )	ÚSgiImageFileZSGIzSGI Image File Formatr   ÚNonec                 C  s~  | j d usJ ‚d}| j  |¡}t|ƒsd}t|ƒ‚|d }|d }t|dƒ}t|dƒ}t|dƒ}t|dƒ}	z	t|||	f }
W n tyK   d	}t|ƒ‚w ||f| _|
 d
¡d | _	| j
dkrad| _d}|dkr§|| | }|dkr„t dd| j || j
d|f¡g| _d S g | _|}| j
D ]}| j t dd| j ||d|f¡¡ ||7 }qŒd S |dkr½t dd| j ||
||f¡g| _d S d S )Né   zNot an SGI image filer   r   r   é   é   é
   úUnsupported SGI image modeú;r   r   z	image/rgbéÿÿÿÿÚSGI16)r   r   Úrawr   Zsgi_rle)ÚfpÚreadr   Ú
ValueErrorr   ÚMODESÚKeyErrorÚ_sizeÚsplitÚ_modeÚmodeZcustom_mimetyper   Z_TileÚsizeZtileÚappend)ÚselfZheadlenÚsÚmsgÚcompressionÚbpcÚ	dimensionÚxsizeÚysizeÚzsizeÚrawmodeÚorientationÚpagesizeÚoffsetÚlayerr   r   r   Ú_open8   sb   



þ


ü
ÿ	
ÿÿ
úÿ
ÿÿzSgiImageFile._openN)r   r   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr>   r   r   r   r   r   4   s    r   ÚimúImage.Imager%   ú	IO[bytes]Úfilenameústr | bytesr   c              	   C  sø  | j dvrd}t|ƒ‚| j}| dd¡}|dvrd}t|ƒ‚d}d}d	}| j\}	}
t| j ƒ}| j d
kr<|
dkr9dnd}nd}d	}d}tj tj 	|¡¡d	 }t
|tƒrY| dd¡}d	}| t d|¡¡ | t|ƒ¡ | t|ƒ¡ | t d|¡¡ | t d|	¡¡ | t d|
¡¡ | t d|¡¡ | t d|¡¡ | t d|¡¡ | t dd¡¡ | t d|¡¡ | t dd¡¡ | t d|¡¡ | t dd¡¡ d
}|dkrÝd}|  ¡ D ]}| | d|d	|¡¡ qát|dƒrú| ¡  d S d S )N>   r   r   r   r    r4   r   )r   r   z%Unsupported number of bytes per pixelr"   r   r   r   r   r   éÿ   ÚasciiÚignorez>hz>Hz>lZ4só    Z79sr1   Z404sr   r$   Úflush)r-   r'   ZencoderinfoÚgetr.   r   ÚosÚpathÚsplitextÚbasenameÚ
isinstanceÚstrÚencodeÚwriteÚstructÚpackr   r+   ÚtobytesÚhasattrrM   )rD   r%   rG   r2   Úinfor4   r:   Zmagic_numberZrleÚxÚyÚzr5   ZpinminZpinmaxZimg_nameZcolormapr9   Úchannelr   r   r   Ú_save‚   sX   





ÿr`   c                   @  s   e Zd ZdZd	dd„ZdS )
ÚSGI16DecoderTÚbufferú$bytes | Image.SupportsArrayInterfacer   útuple[int, int]c           	      C  s¦   | j d usJ ‚| jd usJ ‚| j\}}}| jj| jj }t| jƒ}| j  d¡ t	|ƒD ]%}t
 d| jj| jjf¡}| | j  d| ¡dd||¡ | j |j|¡ q+dS )Nr   r   r   r$   r   )r"   r   )ÚfdrD   ÚargsÚstater6   r7   r   r-   ÚseekÚranger   ÚnewÚ	frombytesr&   Zputband)	r0   rb   r9   Zstrider:   r;   r8   Zbandr_   r   r   r   ÚdecodeÉ   s   
ÿzSGI16Decoder.decodeN)rb   rc   r   rd   )r?   r@   rA   Z	_pulls_fdrl   r   r   r   r   ra   Æ   s    ra   r#   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)r	   r
   r   r   )rD   rE   r%   rF   rG   rH   r   r   )Ú
__future__r   rO   rW   Útypingr   Ú r   r   Ú_binaryr   r   r   r   r(   r   r`   Z	PyDecoderra   Zregister_decoderZregister_openrB   Zregister_saveZregister_mimeZregister_extensionsr   r   r   r   Ú<module>   s2   
ø
ND