
    &Th"              	          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 Z	ddddd	d
dddZ
 G d dej                        Z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j(                  ej"                  g d       y)    N   )Image	ImageFile)i16be)o8c                 >    t        |       dk\  xr t        |       dk(  S )N     )leni16)prefixs    Z/home/stella.sw7ft.com/public_html/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 Zy)SgiImageFileSGIzSGI Image File Formatc           	         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(  r'dd| j                  z   || j                  d|ffg| _        y g | _        |}| j                  D ]6  }| j                  j                  dd| j                  z   ||d|ff       ||z  }8 y |dk(  rdd| j                  z   ||||ffg| _        y y # t        $ r Y w 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custom_mimetypesizetileappend)selfheadlensmsgcompressionbpc	dimensionxsizeysizezsizelayoutrawmodeorientationpagesizeoffsetlayers                   r   _openzSgiImageFile._open7   s   GGLL!qz)CS/! d d 1I	 Aq	 Aq	 Ar
 i& 	FmG b=.CS/!E\
MM#&q)	99#.D   !u}s*Haxftyy0'DIIq+;VW	 	 !YY 'EII$$ 2FUA{<ST h&F	'
 AFTYY.';PS9TUDI =  		s   8	E8 8	FFN)__name__
__module____qualname__formatformat_descriptionrB    r   r   r   r   3   s    F0Cr   r   c           	      l   | j                   dk7  r+| j                   dk7  r| j                   dk7  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k(  s|	dk(  rd}t        | j                               |k7  r*d| dt        | j                                }t        |      d}d}t        j                  j                  t        j                  j                  |            d   }|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 )Nr   r   r   r    r7   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>l4sr   79sr4   404sr   r$   flush)r-   r(   encoderinfogetr/   r   getbandsospathsplitextbasenameencodewritestructpackr   r,   tobyteshasattrrP   )imr&   filenamer5   infor7   r>   magic_numberrledimxyzpinminpinmaximg_namecolormapr=   channels                      r   _saverl   }   s   	ww%BGGv-"''S.*o >>D ((5!
C
&5o KL
C C77DAq	ww#~!q&	CBGGA
ax3!8 2;;=Q84BKKM@R?STo FFww 0 0 :;A>Hw1H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: B
K@AB r7

 r   c                       e Zd ZdZd Zy)SGI16DecoderTc                 ,   | 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   )argsstater9   r:   r   r-   fdseekranger   new	frombytesr'   r^   putband)	r2   bufferr=   strider>   r?   r;   bandrk   s	            r   decodezSGI16Decoder.decode   s    '+yy$::##djj&6&66DIIS%L 	.Diidjj&6&6

8H8H%IJGQ\*E7FK GGOOGJJ-	. r   N)rC   rD   rE   	_pulls_fdr{   rH   r   r   rn   rn      s    Ir   rn   r#   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)rT   rZ   r   r   r   _binaryr   r   r   r   r)   r   rl   	PyDecoderrn   register_decoderregister_openrF   register_saveregister_mimeregister_extensionsrH   r   r   <module>r      s   2 
   ! 3
 		G9&& GTIX9&& .   w -   L''w ?   L'' /   L'' 5   ,--/O Pr   