
    Rf(              	         d dl mZ 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           dS )    )annotationsN   )Image	ImageFile)i16be)o8c                N    t          |           dk    ot          |           dk    S )N     )leni16)prefixs    D/var/www/html/env/lib/python3.11/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dS )SgiImageFileSGIzSGI Image File Formatc           	     :   d}| j                             |          }t          |          sd}t          |          |d         }|d         }t	          |d          }t	          |d          }t	          |d          }t	          |d          }	|||	f}
d	}	 t
          |
         }n# t          $ r Y nw xY w|d	k    rd
}t          |          ||f| _        |                    d          d         | _	        | j
        dk    rd| _        d}|dk    ro||z  |z  }|dk    rdd| j        z   || j
        d|ffg| _        d S g | _        |}| j
        D ]0}| j                            dd| j        z   ||d|ff           ||z  }1d S |dk    rdd| j        z   ||||ffg| _        d S d S )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_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    GLL!!qzz 	")CS//! d d 1II	 Aq		 Aq		 Ar

 i& 	FmGG 	 	 	D	 b==.CS//!E\
]]3''*
9#.D   !u}s*Haxxfty0'DIq+;VW			 	 !Y ' 'EI$$ 2FUA{<ST   h&FF	' '
 AFTY.';PS9TUDIII s   B# #
B0/B0N)__name__
__module____qualname__formatformat_descriptionrD    r   r   r   r   3   s3        F0C C C C Cr   r   c           	        | j         dvrd}t          |          | 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          |                                           |k    r6d| dt          |                                            }t          |          d	}d}t          j        	                    t          j        
                    |                    d	         }|                    dd          }d	}|                    t          j        d|                     |                    t          |                     |                    t          |                     |                    t          j        d|	                     |                    t          j        d|
                     |                    t          j        d|                     |                    t          j        d|                     |                    t          j        d|                     |                    t          j        d|                     |                    t          j        dd                     |                    t          j        d|                     |                    t          j        dd                     |                    t          j        d|                     |                    t          j        dd                     d}|dk    rd}|                                 D ]-}|                    |                    d|d	|                     .t%          |d          r|                                 d S d S )N>   r   r   r   r!   r9   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   79sr6   404sr   r%   flush)r/   r)   encoderinfogetr1   r   getbandsospathsplitextbasenameencodewritestructpackr   r-   tobyteshasattrrR   )imr'   filenamer7   infor9   r@   magic_numberrledimxyzpinminpinmaximg_namecolormapr?   channels                      r   _savern   }   sw   	w****oo >D ((5!

C
&5oo KL
C C7DAq	w#~~!q&&	CBGA
f}} 2;;==QTTTBKKMM@R@RTToo FFw 0 0 : :;;A>Hw11HHHHV[|,,---HHRWWHHRWWHHV[s##$$$HHV[q!!"""HHV[q!!"""HHV[q!!"""HHV[v&&'''HHV[v&&'''HHV[s##$$$HHV[))***HHV[c""###HHV[x(()))HHV[%%&&&G
axx88:: B B
K@@AAAAr7 





 r   c                      e Zd ZdZd ZdS )SGI16DecoderTc                   | j         \  }}}| j        j        | j        j        z  }t	          | j                  }| j                            d           t          |          D ]}t          j
        d| j        j        | j        j        f          }|                    | j                            d|z            dd||           | j                            |j        |           dS )Nr   r   r
   r%   r   )r#   r   )argsstater;   r<   r   r/   fdseekranger   new	frombytesr(   r`   putband)	r4   bufferr?   strider@   rA   r=   bandrm   s	            r   decodezSGI16Decoder.decode   s    '+y$:#dj&66DIS%LL 	. 	.Didj&6
8H%IJJGQ\**E7FK   GOOGJ----ur   N)rE   rF   rG   	_pulls_fdr}   rJ   r   r   rp   rp      s(        I    r   rp   r$   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)
__future__r   rV   r\   r    r   r   _binaryr   r   r   r   r*   r   rn   	PyDecoderrp   register_decoderregister_openrH   register_saveregister_mimeregister_extensionsrJ   r   r   <module>r      s  . # " " " " " 				          ! ! ! ! ! !      3 3 3
 		 		G G G G G9& G G GTI I IX    9&   .  w - - -  L'w ? ? ?  L' / / /  L' 5 5 5  ,-/O/O/O P P P P Pr   