a
    Df                  	   @  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g d! 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   _/nfs/NAS7/SABIOD/METHODE/ermites/ermites_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ddZdS )SgiImageFileZSGIzSGI Image File FormatNone)r   c              	   C  s  | j d usJ d}| j |}t|s2d}t||d }|d }t|d}t|d}t|d}t|d}	|||	f}
d	}zt|
 }W n ty   Y n0 |d	krd
}t|||f| _|dd | _	| j
dkrd| _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rd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bpcZ	dimensionxsizeysizezsizeZlayoutrawmodeorientationpagesizeoffsetZ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]strr   )imr&   filenamer   c              	   C  s6  | j dvrd}t|| j}|dd}|dvr<d}t|d}d}d	}d
}	| j\}
}| j dkrn|dkrnd}	n| j dkr|d}	t| j }|	dv rd}t|  |krd| 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rd}|  D ]}||d|d	| q t|dr2|  d S )N>   r   r   r   r!   r5   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79sr2   Z404sr   r%   flush)r.   r(   Zencoderinfogetr/   r   Zgetbandsospathbasenamesplitextencodewritestructpackr   r,   tobyteshasattrrJ   )rD   r&   rE   r3   infor5   r:   Zmagic_numberZrleZdimxyzZpinminZpinmaxZimg_nameZcolormapr9   channelr   r   r   _save   sb    




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 usJ | jd usJ | 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   )fdrD   argsstater6   r7   r   r.   seekranger   new	frombytesr'   Zputband)	r1   r]   r9   Zstrider:   r;   r8   ZbandrZ   r   r   r   decode   s    
zSGI16Decoder.decodeN)r>   r?   r@   Z	_pulls_fdre   r   r   r   r   r\      s   r\   r$   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)
__future__r   rL   rR   typingr   r    r   r   _binaryr   r   r   r   r)   r   r[   Z	PyDecoderr\   Zregister_decoderZregister_openrA   Zregister_saveZregister_mimeZregister_extensionsr   r   r   r   <module>   s0   LL