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   úF/var/www/html/myenv/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 )	ÚSgiImageFileÚ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   Úsgi_rle)ÚfpÚreadr   Ú
ValueErrorr   ÚMODESÚKeyErrorÚ_sizeÚsplitÚ_modeÚmodeÚcustom_mimetyper   Ú_TileÚsizeÚtileÚappend)ÚselfÚ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_descriptionrD   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!   r:   r   )r   r   z%Unsupported number of bytes per pixelr#   r   r   r   r   r   éÿ   ÚasciiÚignorez>hz>Hz>lÚ4só    Ú79sr7   Ú404sr   r%   Úflush)r/   r)   ÚencoderinfoÚgetr2   r   ÚosÚpathÚsplitextÚbasenameÚ
isinstanceÚstrÚencodeÚwriteÚstructÚpackr   r-   ÚtobytesÚhasattrrV   )rJ   r'   rM   r8   Úinfor:   r@   Úmagic_numberÚrleÚxÚyÚzr;   ÚpinminÚpinmaxÚimg_nameÚcolormapr?   Úchannelr   r   r   Ú_save‚   sX   





ÿrp   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   )ÚfdrJ   ÚargsÚstater<   r=   r   r/   ÚseekÚranger   ÚnewÚ	frombytesr(   Úputband)	r5   rr   r?   Ústrider@   rA   r>   Úbandro   r   r   r   ÚdecodeÉ   s   
ÿzSGI16Decoder.decodeN)rr   rs   r   rt   )rE   rF   rG   Ú	_pulls_fdr   r   r   r   r   rq   Æ   s    rq   r$   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)r	   r
   r   r   )rJ   rK   r'   rL   rM   rN   r   r   )Ú
__future__r   rY   ra   Útypingr   Ú r   r   Ú_binaryr   r   r   r   r*   r   rp   Ú	PyDecoderrq   Úregister_decoderÚregister_openrH   Úregister_saveÚregister_mimeÚregister_extensionsr   r   r   r   Ú<module>   s2   
ø
ND