a
    ¥Q•h#  ã                	   @   sÐ   d dl Z d dlZddlmZmZ ddlmZ ddlmZ dd„ Z	ddd	d	d
ddddœZ
G dd„ dejƒZ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 )é    Né   )ÚImageÚ	ImageFile)Úi16be)Úo8c                 C   s   t | ƒdkot| ƒdkS )Né   éÚ  )ÚlenÚi16)Úprefix© r   úK/var/www/sistema_ama/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„ ZdS )ÚSgiImageFileZSGIzSGI Image File Formatc              	   C   sx  d}| j  |¡}t|ƒs$d}t|ƒ‚|d }|d }t|dƒ}t|dƒ}t|dƒ}t|dƒ}	|||	f}
d	}zt|
 }W n tyˆ   Y n0 |d	kržd
}t|ƒ‚||f| _| d¡d | _	| j
dkrÈd| _d}|dk�rN|| | }|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�rtd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Úreadr   Ú
ValueErrorr
   ÚMODESÚKeyErrorÚ_sizeÚsplitÚ_modeÚmodeÚcustom_mimetypeÚsizeÚtileÚappend)ÚselfZheadlenÚsÚmsgÚcompressionÚbpcÚ	dimensionÚxsizeÚysizeÚzsizeÚlayoutÚrawmodeÚorientationÚpagesizeÚoffsetÚlayerr   r   r   Ú_open7   sP    








ÿ
ÿ
ÿzSgiImageFile._openN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr<   r   r   r   r   r   3   s   r   c              	   C   sR  | j dkr*| j dkr*| j dkr*d}t|ƒ‚| j}| dd¡}|dvrPd}t|ƒ‚d	}d
}d}d}	| j\}
}| j dkr‚|dkr‚d}	n| j dkr�d}	t| j ƒ}|	dksª|	dkr®d}t|  ¡ ƒ|krÞd|› dt|  ¡ ƒ› �}t|ƒ‚d}d}tj 	tj 
|¡¡d }| 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ƒ�rN| ¡  d S )Nr   r   r   r   r1   r   )r   r   z%Unsupported number of bytes per pixelr   r   r   r   r   z(incorrect number of bands in SGI write: z vs éÿ   ÚasciiÚignorez>hz>Hz>lZ4só    Z79sr.   Z404sr   r   Úflush)r(   r"   ÚencoderinfoÚgetr*   r	   ÚgetbandsÚosÚpathÚsplitextÚbasenameÚencodeÚwriteÚstructÚpackr   r&   ÚtobytesÚhasattrrF   )Úimr    Úfilenamer/   Úinfor1   r8   Úmagic_numberÚrleÚdimÚxÚyÚzZpinminZpinmaxZimg_nameÚcolormapr7   Úchannelr   r   r   Ú_save}   sb    



r_   c                   @   s   e Zd ZdZdd„ ZdS )ÚSGI16DecoderTc           	      C   sŠ   | 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|¡ q:dS )Nr   r   r   r   r   )r   r   )ÚargsÚstater3   r4   r	   r(   ÚfdÚseekÚranger   ÚnewÚ	frombytesr!   rT   Úputband)	r-   Úbufferr7   Ústrider8   r9   r5   Úbandr^   r   r   r   ÚdecodeÌ   s    
ÿzSGI16Decoder.decodeN)r=   r>   r?   Ú	_pulls_fdrl   r   r   r   r   r`   É   s   r`   r   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)rJ   rP   r   r   r   Ú_binaryr   r
   r   r   r#   r   r_   Ú	PyDecoderr`   Úregister_decoderÚregister_openr@   Úregister_saveÚregister_mimeÚregister_extensionsr   r   r   r   Ú<module>   s,   øJL