3

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!dd"dd#dd$diZ
G dd dejZdd ZG dd dejZejde ejejee	 ejeje ejejd ejejddddg dS )%    N   )Image	ImageFile)i16be)o8c             C   s   t | dkot| dkS )N   i  )leni16)prefix r   R/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/PIL/SgiImagePlugin.py_accept!   s    r   Lr   zL;16B   RGBzRGB;16B   RGBAzRGBA;16Bc               @   s   e Zd ZdZdZdd ZdS )SgiImageFileZSGIzSGI Image File Formatc             C   sv  d}| j j|}t|s td|d }|d }t|d}t|d}t|d}t|d}|||f}	d	}
yt|	 }
W n tk
r   Y nX |
d	krtd
||f| _|
jdd | _	| j	dkrd| _
d}|dkrL|| | }|dkrdd| j || j	d|ffg| _nDg | _|}x`| j	D ].}| jjdd| j ||d|ff ||7 }qW n&|dkrrdd| j ||
||ffg| _d S )Ni   zNot an SGI image filer   r   r         
    zUnsupported SGI image mode;r   r   z	image/rgbr   SGI16rawZsgi_rle)r   r   )r   r   )r   r   )fpreadr   
ValueErrorr	   MODESKeyError_sizesplitmodeZcustom_mimetypesizeZtileappend)selfZheadlenscompressionbpcZ	dimensionxsizeysizezsizeZlayoutrawmodeorientationpagesizeoffsetZlayerr   r   r   _open8   sF    








 
zSgiImageFile._openN)__name__
__module____qualname__formatformat_descriptionr1   r   r   r   r   r   3   s   r   c             C   sJ  | j dkr&| j dkr&| j dkr&td| j}|jdd}|dkrHtdd}d	}d
}d}| j\}	}
| j dkrz|
dkrzd}n| j dkrd}t| j }|dks|dkrd}t| j |krtd| dt| j  d
}d}tjj	tjj
|d
 }|jdd}d
}|jtjd| |jt| |jt| |jtjd| |jtjd|	 |jtjd|
 |jtjd| |jtjd| |jtjd| |jtjdd |jtjd| |jtjdd |jtjd| |jtjdd d}|dkrd}x(| j D ]}|j|jd|d
| qW t|drF|j  d S )Nr   r   r   zUnsupported SGI image moder)   r   r   z%Unsupported number of bytes per pixeli  r   r   z(incorrect number of bands in SGI write: z vs    asciiignorez>hz>Hz>lZ4s    Z79sr'   Z404szL;16Br   flush)r   r   r   )r#   r   Zencoderinfogetr$   r   Zgetbandsospathsplitextbasenameencodewritestructpackr   r"   tobyteshasattrr;   )imr   filenameinfor)   r.   ZmagicNumberZrleZdimxyzZpinminZpinmaxZimgNameZcolormapr-   channelr   r   r   _save}   s^    



rN   c               @   s   e Zd ZdZdd ZdS )SGI16DecoderTc       	      C   s   | j \}}}| jj| jj }t| j}| jjd xVt|D ]J}t	j
d| jj| jjf}|j| jjd| dd|| | jj|j| q<W d	S )
Ni   r   r   r   zL;16Br   r   r   )r   r   )argsstater*   r+   r   r#   fdseekranger   new	frombytesr   rG   Zputband)	r&   bufferr-   Zstrider.   r/   r,   ZbandrM   r   r   r   decode   s    
zSGI16Decoder.decodeN)r2   r3   r4   Z	_pulls_fdrX   r   r   r   r   rO      s   rO   r   z	image/sgiz.bwz.rgbz.rgbaz.sgi)r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r=   rC   r   r   r   _binaryr   r	   r   r   r   r   rN   Z	PyDecoderrO   Zregister_decoderZregister_openr5   Zregister_saveZregister_mimeZregister_extensionsr   r   r   r   <module>   s*   JK