U
    M»{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d!d"d#d$g¡ 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/bwave/python/venv/lib/python3.8/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 k	st‚d}| j  |¡}t|ƒs2d}t|ƒ‚|d }|d }t|dƒ}t|dƒ}t|dƒ}t|dƒ}	|||	f}
d	}zt|
 }W n tk
r˜   Y nX |d	kr®d
}t|ƒ‚||f| _| 	d¡d | _
| jdkrØd| _d}|dk�r^|| | }|dk�rdd| j || jd|ffg| _n@g | _|}| jD ].}| j dd| j ||d|ff¡ ||7 }�q,n&|dk�r„dd| j ||||f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ÚAssertionErrorÚreadr   Ú
ValueErrorr   ÚMODESÚKeyErrorÚ_sizeÚsplitÚ_modeÚmodeZcustom_mimetypeÚsizeZtileÚappend)ÚselfZheadlenÚsÚmsgÚcompressionÚbpcÚ	dimensionÚxsizeÚysizeÚzsizeZlayoutÚrawmodeÚorientationÚpagesizeÚoffsetÚlayerr   r   r   Ú_open8   sR    








ÿ
ÿ
ÿ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krd}t|ƒ‚| j}| dd¡}|dkr<d}t|ƒ‚d}d}d	}d
}	| j\}
}| j dkrn|dkrnd}	n| j dkr|d}	t| j ƒ}|	dkr’d}t|  ¡ ƒ|krÂd|› 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 )N>   r   r   r   r!   r6   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>lZ4só    Z79sr3   Z404sr   r%   Úflush)r/   r)   ZencoderinfoÚgetr0   r   ZgetbandsÚosÚpathÚsplitextÚbasenameÚ
isinstanceÚstrÚencodeÚwriteÚstructÚpackr   r-   ÚtobytesÚhasattrrL   )rF   r&   rG   r4   Úinfor6   r<   Zmagic_numberZrleÚdimÚxÚyÚzZpinminZpinmaxZimg_nameZcolormapr;   Úchannelr   r   r   Ú_save€   sd    





r`   c                   @  s    e Zd ZdZdddœdd„ZdS )ÚSGI16DecoderTr	   ztuple[int, int])Úbufferr   c           	      C  s¦   | j d k	st‚| jd k	st‚| 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   )Úfdr'   rF   ÚargsÚstater8   r9   r   r/   ÚseekÚranger   ÚnewÚ	frombytesr(   Zputband)	r2   rb   r;   Zstrider<   r=   r:   Zbandr_   r   r   r   ÚdecodeÐ   s"    
    ÿzSGI16Decoder.decodeN)rA   rB   rC   Z	_pulls_fdrj   r   r   r   r   ra   Í   s   ra   r$   z	image/sgiz.bwz.rgbz.rgbaz.sgi)Ú
__future__r   rN   rV   Útypingr   r    r   r   Ú_binaryr   r   r   r   r*   r   r`   Z	PyDecoderra   Zregister_decoderZregister_openrD   Zregister_saveZregister_mimeZregister_extensionsr   r   r   r   Ú<module>   s0   øLM