a
    ׶a                  	   @   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   b/Users/vegardjervell/Documents/master/model/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   sp  d}| j |}t|s td|d }|d }t|d}t|d}t|d}t|d}|||f}	d	}
zt|	 }
W n ty   Y n0 |
d	krtd
||f| _|
dd | _	| j	dkrd| _
d}|dkrF|| | }|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rld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modeZcustom_mimetypesizeZtileappend)selfZheadlenscompressionbpcZ	dimensionxsizeysizezsizeZlayoutrawmodeorientationpagesizeoffsetZlayerr   r   r   _open8   sL    










zSgiImageFile._openN)__name__
__module____qualname__formatformat_descriptionr5   r   r   r   r   r   3   s   r   c              	   C   sF  | j dkr&| j dkr&| j dkr&td| j}|dd}|dv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|  |krtd| d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rB|  d S )Nr   r   r   r   r-   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"   Zencoderinfogetr(   r	   Zgetbandsospathsplitextbasenameencodewritestructpackr   r&   tobyteshasattrr?   )imr    filenameinfor-   r2   ZmagicNumberZrleZdimxyzZpinminZpinmaxZimgNameZcolormapr1   channelr   r   r   _save}   s`    



rR   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stater.   r/   r	   r'   fdseekranger   new	frombytesr!   rK   Zputband)	r*   bufferr1   Zstrider2   r3   r0   ZbandrQ   r   r   r   decode   s    
zSGI16Decoder.decodeN)r6   r7   r8   Z	_pulls_fdr\   r   r   r   r   rS      s   rS   r   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)rA   rG   r   r   r   _binaryr   r
   r   r   r#   r   rR   Z	PyDecoderrS   Zregister_decoderZregister_openr9   Zregister_saveZregister_mimeZregister_extensionsr   r   r   r   <module>   s,   JK