
    hL              	         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    D/var/www/html/env/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
S	n [
        U
   nUS	:X  a  S
n[        U5      e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     GN>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layoutrawmodeorientationpagesizeoffsetlayers                   r   _openSgiImageFile._open8   s   ww"""GGLL!qzz)CS/! d d 1I	 Aq	 Aq	 Ar
 & 	FmG b=.CS/!\
]]3'*
99#.D   !}s*HaxOO*A{3		 	 !YYEII$$!!6DII#5vq+?V
 &F ' Av		17k<WDI K  		s   	G 
GG)r0   r.   r2   r5   N)returnNone)__name__
__module____qualname____firstlineno__formatformat_descriptionrG   __static_attributes__ r   r   r   r   4   s    F0N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S
n	U R                  u  pU R                   S:X  a	  US:X  a  Sn	OU R                   S:X  a  Sn	[        U R                   5      nU	S;   a  Sn[        U R                  5       5      U:w  a*  SU S[        U R                  5       5       3n[        U5      e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   >   r   r   z(incorrect number of bands in SGI write: z vs    asciiignorez>hz>Hz>l4sr   79sr9   404sr   r'   flush)r1   r+   encoderinfogetr4   r   getbandsospathsplitextbasename
isinstancestrencodewritestructpackr	   r/   tobyteshasattrrZ   )imr)   filenamer:   infor<   rC   magic_numberrledimxyzpinminpinmaximg_namecolormaprB   channels                      r   _saverx      s   	ww***o >>D ((5!
C
&5o KL
C C77DA	ww#~!q&	CBGGA
f} 2;;=Q84BKKM@R?STo FFww 0 0 :;A>H(C  ??7H5HHHV[[|,-HHRWHHRWHHV[[s#$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   )fdrj   argsstater>   r?   r   r1   seekranger   new	frombytesr*   putband)	r7   bufferrB   striderC   rD   r@   bandrw   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   rR   N)r   z$bytes | Image.SupportsArrayInterfacerI   ztuple[int, int])rK   rL   rM   rN   	_pulls_fdr   rQ   rR   r   r   rz   rz      s    Ir   rz   r&   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)r   bytesrI   bool)rj   zImage.Imager)   z	IO[bytes]rk   zstr | bytesrI   rJ   )
__future__r   r^   rf   typingr   r"   r   r   _binaryr   r   r	   r   r,   r   rx   	PyDecoderrz   register_decoderregister_openrO   register_saveregister_mimeregister_extensionsrR   r   r   <module>r      s   . # 	    ! 3
 		R9&& RjJZ9&& 4   w -   L''w ?   L'' /   L'' 5   ,--/O Pr   