
    :hL              	         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Zd	d	d
d
dddddZ G d dej                        ZddZ G d dej"                        Z ej&                  de        ej(                  ej*                  ee        ej,                  ej*                  e        ej.                  ej*                  d        ej0                  ej*                  g d       y)    )annotationsN)IO   )Image	ImageFile)i16be)o8c                >    t        |       dk\  xr t        |       dk(  S )N     )leni16)prefixs    P/var/www/urcfiles/bundle/venv/lib/python3.12/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                      e Zd ZdZdZddZy)SgiImageFileSGIzSGI Image File Formatc                   | j                   J d}| j                   j                  |      }t        |      sd}t        |      |d   }|d   }t	        |d      }t	        |d      }t	        |d      }t	        |d      }	|||	f}
d	}	 t
        |
   }|d	k(  rd
}t        |      ||f| _        |j                  d      d   | _	        | j                  dk(  rd| _        d}|dk(  r||z  |z  }|dk(  r9t        j                  dd| j                  z   || j                  d|f      g| _        y g | _        |}| j                  D ]H  }| j                  j!                  t        j                  dd| j                  z   ||d|f             ||z  }J y |dk(  r/t        j                  dd| j                  z   ||||f      g| _        y y # t        $ r Y 9w xY w)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   _openzSgiImageFile._open8   s   ww"""GGLL!qz)CS/! d d 1I	 Aq	 Aq	 Ar
 i& 	FmG b=.CS/!E\
]]3'*
99#.D   !u}s*HaxOO*A{3		 	 !YYEII$$!!6DII#5vq+?V
 h&F ' Av		17WkSV<WDI K  		s   	F< <	G	G	N)returnNone)__name__
__module____qualname__formatformat_descriptionrF    r   r   r   r   4   s    F0Nr   r   c           	     B   | j                   dvrd}t        |      | j                  }|j                  dd      }|dvrd}t        |      d}d}d	}d
}	| j                  \  }
}| j                   dk(  r|dk(  rd}	n| j                   dk(  rd}	t        | j                         }|	dv rd}t        | j                               |k7  r*d| dt        | j                                }t        |      d	}d}t        j                  j                  t        j                  j                  |            d	   }t        |t              r|j                  dd      }d	}|j                  t        j                   d|             |j                  t#        |             |j                  t#        |             |j                  t        j                   d|	             |j                  t        j                   d|
             |j                  t        j                   d|             |j                  t        j                   d|             |j                  t        j                   d|             |j                  t        j                   d|             |j                  t        j                   dd             |j                  t        j                   d|             |j                  t        j                   dd             |j                  t        j                   d|             |j                  t        j                   dd             d}|dk(  rd}| j%                         D ]%  }|j                  |j'                  d|d	|             ' t)        |d      r|j+                          y y )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   79sr8   404sr   r&   flush)r0   r*   encoderinfogetr3   r   getbandsospathsplitextbasename
isinstancestrencodewritestructpackr	   r.   tobyteshasattrrV   )imr(   filenamer9   infor;   rB   magic_numberrledimxyzpinminpinmaximg_namecolormaprA   channels                      r   _savert      s   	ww***o >>D ((5!
C
&5o KL
C C77DAq	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                      e Zd ZdZddZy)SGI16DecoderTc                d   | j                   J | j                  J | j                  \  }}}| j                  j                  | j                  j
                  z  }t        | j                        }| j                   j                  d       t        |      D ]  }t        j                  d| j                  j                  | j                  j
                  f      }|j                  | j                   j                  d|z        dd||       | j                  j                  |j                  |        y)Nr   r   r   r&   r   )r$   r   )fdrf   argsstater=   r>   r   r0   seekranger   new	frombytesr)   putband)	r6   bufferrA   striderB   rC   r?   bandrs   s	            r   decodezSGI16Decoder.decode   s    ww"""ww"""'+yy$::##djj&6&66DIIS%LDiidjj&6&6

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