
    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           dS )    N   )Image	ImageFile)i16be)o8c                 N    t          |           dk    ot          |           dk    S )N     )leni16)prefixs    f/var/www/html/mycamper/aliexpress-site/backend/venv/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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\
MM#&&q)	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_descriptionrB    r   r   r   r   3   s3        F0C C C C Cr   r   c           	         | j         dk    r'| j         dk    r| j         dk    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k    s|	dk    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 )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   	w%BGv--"'S..*oo >D ((5!

C
&5oo KL
C C7DAq	w#~~!q&&	CBGA
axx3!88 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stater9   r:   r   r-   fdseekranger   new	frombytesr'   r^   putband)	r2   bufferr=   strider>   r?   r;   bandrk   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)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 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   