
    fh              	         S SK Jr  S SKrS SKrS SKJr  SSKJrJr  SSK	J
r  SSK	Jr  SS jrS	S	S
S
SSSSS.r " S S\R                  5      rSS jr " S S\R"                  5      r\R&                  " S\5        \R(                  " \R*                  \\5        \R,                  " \R*                  \5        \R.                  " \R*                  S5        \R0                  " \R*                  / SQ5        g)    )annotationsN)IO   )Image	ImageFile)i16be)o8c                H    [        U 5      S:  =(       a    [        U 5      S:H  $ )N     )leni16)prefixs    J/var/www/auris/envauris/lib/python3.13/site-packages/PIL/SgiImagePlugin.py_acceptr   "   s    v;!2Fs 22    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                  &    \ rS rSrSrSrSS jrSrg)SgiImageFile4   SGIzSGI Image File Formatc                   U R                   c   eSnU R                   R                  U5      n[        U5      (       d  Sn[        U5      eUS   nUS   n[	        US5      n[	        US5      n[	        US5      n[	        US5      n	 [
        XVU	4   n
Xx4U l        U
R                  S
5      S   U l	        U R                  S:X  a  SU l        SnUS:X  a  Xx-  U-  nUS:X  a:  [        R                  " SSU R                  -   UU R                  SU45      /U l        g / U l        UnU R                   HH  nU R                  R!                  [        R                  " SSU R                  -   XSU45      5        X-  nMJ     g US:X  a.  [        R                  " SSU R                  -   XX45      /U l        g g ! [         a    S	n[        U5      ef = f)N   zNot an SGI image filer   r   r         
   Unsupported SGI image mode;r   r   z	image/rgbSGI16)r   r   rawr   sgi_rle)fpreadr   
ValueErrorr   MODESKeyError_sizesplit_modemodecustom_mimetyper   _Tilesizetileappend)selfheadlensmsgcompressionbpc	dimensionxsizeysizezsizerawmodeorientationpagesizeoffsetlayers                  r   _openSgiImageFile._open8   s   ww"""GGLL!qzz)CS/! d d 1I	 Aq	 Aq	 Ar
	"SU34G
 \
]]3'*
99#.D   !}s*HaxOO*A{3		 	 !YYEII$$!!6DII#5vq+?V
 &F ' Av		17k<WDI E  	".CS/!	"s   F. .G)r/   r-   r1   r4   N)returnNone)__name__
__module____qualname____firstlineno__formatformat_descriptionrE   __static_attributes__ r   r   r   r   4   s    F0Gr   r   c           	        U R                   S;  a  Sn[        U5      eU R                  nUR                  SS5      nUS;  a  Sn[        U5      eSnSnS	nU R                  u  p[        U R                   5      nU R                   S
:X  a  U
S:X  a  SOSnOSnS	nSn[        R                  R                  [        R                  R                  U5      5      S	   n[        U[        5      (       a  UR                  SS5      nS	nUR                  [        R                  " SU5      5        UR                  [!        U5      5        UR                  [!        U5      5        UR                  [        R                  " SU5      5        UR                  [        R                  " SU	5      5        UR                  [        R                  " SU
5      5        UR                  [        R                  " SU5      5        UR                  [        R                  " SU5      5        UR                  [        R                  " SU5      5        UR                  [        R                  " SS5      5        UR                  [        R                  " SU5      5        UR                  [        R                  " SS5      5        UR                  [        R                  " SU5      5        UR                  [        R                  " SS5      5        S
nUS:X  a  SnU R#                  5        H&  nUR                  UR%                  SUS	U5      5        M(     ['        US5      (       a  UR)                  5         g g )N>   r   r   r   r"   r;   r   )r   r   z%Unsupported number of bytes per pixelr$   r   r   r   r   r      asciiignorez>hz>Hz>l4sr   79sr8   404sr   r&   flush)r0   r*   encoderinfogetr3   r   ospathsplitextbasename
isinstancestrencodewritestructpackr	   r.   tobyteshasattrrX   )imr(   filenamer9   infor;   rA   magic_numberrlexyzr<   pinminpinmaximg_namecolormapr@   channels                      r   _savert      s}   	ww***o >>D ((5!
C
&5o KL
C 77DABGGA	ww#~aAQ		 FFww 0 0 :;A>H(C  ??7H5HHHV[[|,-HHRWHHRWHHV[[y)*HHV[[q!"HHV[[q!"HHV[[q!"HHV[[v&'HHV[[v&'HHV[[s#$HHV[[)*HHV[[c"#HHV[[x()HHV[[%&G
ax88:
K@A  r7

 r   c                  "    \ rS rSrSrSS jrSrg)SGI16Decoder   Tc                j   U R                   c   eU R                  c   eU R                  u  p#nU R                  R                  U R                  R
                  -  n[        U R                  5      nU R                   R                  S5        [        U5       H  n[        R                  " SU R                  R                  U R                  R
                  45      nUR                  U R                   R                  SU-  5      SSX45        U R                  R                  UR                  U5        M     g)Nr   r   r   r&   r   )r$   r   )fdrg   argsstater=   r>   r   r0   seekranger   new	frombytesr)   putband)	r6   bufferr@   striderA   rB   r?   bandrs   s	            r   decodeSGI16Decoder.decode   s    ww"""ww"""'+yy$::##djj&6&66DIIS%LDiidjj&6&6

8H8H%IJGQ\*E7F GGOOGJJ- ! r   rP   N)r   z$bytes | Image.SupportsArrayInterfacerG   ztuple[int, int])rI   rJ   rK   rL   	_pulls_fdr   rO   rP   r   r   rv   rv      s    Ir   rv   r%   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)r   bytesrG   bool)rg   zImage.Imager(   z	IO[bytes]rh   zstr | bytesrG   rH   )
__future__r   r[   rc   typingr    r   r   _binaryr   r   r	   r   r+   r   rt   	PyDecoderrv   register_decoderregister_openrM   register_saveregister_mimeregister_extensionsrP   r   r   <module>r      s   . # 	    ! 3
 		K9&& K\AH9&& 4   w -   L''w ?   L'' /   L'' 5   ,--/O Pr   