o
    Ñ­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„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   úO/var/www/html/CropPilot/venv/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ƒ}	|||	f}
d	}zt|
 }W n	 tyK   Y nw |d	krVd
}t|ƒ‚||f| _| d¡d | _	| j
dkrkd| _d}|dkr­|| | }|dkrŒdd| j || j
d|ffg| _d S g | _|}| j
D ]}| j dd| j ||d|ff¡ ||7 }q”d S |dkrÁdd| j ||||f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_mimetypeÚsizeÚtileÚappend)ÚselfÚheadlenÚsÚmsgÚcompressionÚbpcÚ	dimensionÚxsizeÚysizeÚzsizeÚlayoutÚrawmodeÚorientationÚpagesizeÚoffsetÚlayerr   r   r   Ú_open8   sX   




ÿ


ÿ
ÿ
ü
ÿÿzSgiImageFile._openN)r   r   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionrE   r   r   r   r   r   4   s    r   ÚimúImage.Imager(   ú	IO[bytes]Úfilenameústr | bytesr   c              	   C  sD  | j dvrd}t|ƒ‚| j}| dd¡}|dvrd}t|ƒ‚d}d}d	}d
}	| j\}
}| j dkr7|dkr7d}	n| j dkr>d}	t| j ƒ}|	dv rId}t|  ¡ ƒ|krad|› dt|  ¡ ƒ› �}t|ƒ‚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 d S )N>   r   r   r   r"   r:   r   )r   r   z%Unsupported number of bytes per pixelr$   r   r   r   r   r   >   r   r   z(incorrect number of bands in SGI write: z vs éÿ   ÚasciiÚignorez>hz>Hz>lÚ4só    Ú79sr7   Ú404sr   r&   Úflush)r0   r*   ÚencoderinfoÚgetr2   r   ÚgetbandsÚosÚpathÚsplitextÚbasenameÚ
isinstanceÚstrÚencodeÚwriteÚstructÚpackr   r.   ÚtobytesÚhasattrrW   )rK   r(   rN   r8   Úinfor:   rA   Úmagic_numberÚrleÚdimÚxÚyÚzÚpinminÚpinmaxÚimg_nameÚcolormapr@   Úchannelr   r   r   Ú_save€   sf   





ÿrs   c                   @  s   e Zd ZdZd	dd„ZdS )
ÚSGI16DecoderTÚbufferr
   r   ú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   )ÚfdrK   ÚargsÚstater<   r=   r   r0   ÚseekÚranger   ÚnewÚ	frombytesr)   Úputband)	r5   ru   r@   ÚstriderA   rB   r>   Úbandrr   r   r   r   ÚdecodeÐ   s   
ÿzSGI16Decoder.decodeN)ru   r
   r   rv   )rF   rG   rH   Ú	_pulls_fdr�   r   r   r   r   rt   Í   s    rt   r%   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)r	   r
   r   r   )rK   rL   r(   rM   rN   rO   r   r   )Ú
__future__r   r[   rc   Útypingr   r!   r   r   Ú_binaryr   r   r   r   r+   r   rs   Ú	PyDecoderrt   Úregister_decoderÚregister_openrI   Úregister_saveÚregister_mimeÚregister_extensionsr   r   r   r   Ú<module>   s2   
ø
LM