U
    áe(  ã                	   @  sà   d dl mZ 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ddddg¡ dS )é    )ÚannotationsNé   )ÚImageÚ	ImageFile)Úi16be)Úo8c                 C  s   t | ƒdkot| ƒdkS )Né   éÚ  )ÚlenÚi16)Úprefix© r   úT/var/www/html/StaffProfile/newvenv/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„ ZdS )ÚSgiImageFileZSGIzSGI Image File Formatc              	   C  sz  d}| j  |¡}t|ƒs$d}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rP|| | }|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rvd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ÚmodeZcustom_mimetypeÚsizeZtileÚappend)ÚselfZheadlenÚsÚmsgÚcompressionÚbpcÚ	dimensionÚxsizeÚysizeÚzsizeZ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  s6  | 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	 }| 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ƒr2| ¡  d S )N>   r   r   r   r   r0   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79sr-   Z404sr   r    Úflush)r)   r#   ZencoderinfoÚgetr*   r
   ZgetbandsÚosÚpathÚsplitextÚbasenameÚencodeÚwriteÚstructÚpackr   r'   ÚtobytesÚhasattrrD   )Úimr!   Úfilenamer.   Úinfor0   r6   Zmagic_numberZrleÚdimÚxÚyÚzZpinminZpinmaxZimg_nameZcolormapr5   Úchannelr   r   r   Ú_save}   sb    




rX   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Ústater2   r3   r
   r)   ÚfdÚseekÚranger   ÚnewÚ	frombytesr"   rP   Zputband)	r,   Úbufferr5   Zstrider6   r7   r4   ZbandrW   r   r   r   ÚdecodeÌ   s    
    ÿzSGI16Decoder.decodeN)r;   r<   r=   Z	_pulls_fdrb   r   r   r   r   rY   É   s   rY   r   z	image/sgiz.bwz.rgbz.rgbaz.sgi)Ú
__future__r   rF   rL   r   r   r   Ú_binaryr   r   r   r   r$   r   rX   Z	PyDecoderrY   Zregister_decoderZregister_openr>   Zregister_saveZregister_mimeZregister_extensionsr   r   r   r   Ú<module>   s.   øJL