a
    Qh#                  	   @   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rd
}t|||f| _|dd | _	| j
dkrd| _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rd}	n| j dkrd}	t| j }|	dks|	dk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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