a
    ç´«jõ  ã                	   @  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
œdd„ZdddddddddœZG dd„ dejƒZdddd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ÚbytesÚbool)ÚprefixÚreturnc                 C  s   t | ƒdkot| ƒdkS )Né   éÚ  )ÚlenÚi16)r   © r   úQ/var/www/html/laksyashrimp/venv/lib/python3.9/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d„ZdS )ÚSgiImageFileZSGIzSGI Image File FormatÚNone)r   c                 C  s‚  | j d usJ ‚d}| j  |¡}t|ƒs2d}t|ƒ‚|d }|d }t|dƒ}t|dƒ}t|dƒ}t|dƒ}	zt|||	f }
W n tyš   d	}t|ƒ‚Y n0 ||f| _|
 d
¡d | _	| j
dkrÆd| _d}|dk�rT|| | }|dk�rt dd| j || j
d|f¡g| _nDg | _|}| j
D ]2}| j t dd| j ||d|f¡¡ ||7 }�qn*|dk�r~t dd| j ||
||f¡g| _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   s\    








üÿ	
ÿÿ
ÿÿzSgiImageFile._openN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr>   r   r   r   r   r   4   s   r   zImage.Imagez	IO[bytes]zstr | bytesr   )Úimr%   Úfilenamer   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rx|
dkrrdnd}nd}d	}d}tj tj 	|¡¡d	 }t
|tƒr²| 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 )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ÚhasattrrJ   )rD   r%   rE   r2   Úinfor4   r:   Zmagic_numberZrleÚxÚyÚzr5   ZpinminZpinmaxZimg_nameZcolormapr9   Úchannelr   r   r   Ú_save‚   sV    





r]   c                   @  s    e Zd ZdZdddœdd„ZdS )ÚSGI16DecoderTz$bytes | Image.SupportsArrayInterfaceztuple[int, int])Úbufferr   c           	      C  s¦   | j d usJ ‚| jd usJ ‚| j\}}}| jj| jj }t| jƒ}| j  d¡ t	|ƒD ]J}t
 d| jj| jjf¡}| | j  d| ¡dd||¡ | j |j|¡ qVdS )Nr   r   r   r$   r   )r"   r   )ÚfdrD   ÚargsÚstater6   r7   r   r-   ÚseekÚranger   ÚnewÚ	frombytesr&   Zputband)	r0   r_   r9   Zstrider:   r;   r8   Zbandr\   r   r   r   ÚdecodeÉ   s    
ÿzSGI16Decoder.decodeN)r?   r@   rA   Z	_pulls_fdrg   r   r   r   r   r^   Æ   s   r^   r#   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)Ú
__future__r   rL   rT   Útypingr   Ú r   r   Ú_binaryr   r   r   r   r(   r   r]   Z	PyDecoderr^   Zregister_decoderZregister_openrB   Zregister_saveZregister_mimeZregister_extensionsr   r   r   r   Ú<module>   s0   øND