
    Xh              	         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j        ej        g d"           dS )%    )annotationsN)IO   )Image	ImageFile)i16be)o8prefixbytesreturnboolc                N    t          |           dk    ot          |           dk    S )N     )leni16)r
   s    d/var/www/tools.fuzzalab.pt/emblema-extractor/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dZdS )SgiImageFileSGIzSGI Image File Formatr   Nonec                   | j         J d}| j                             |          }t          |          sd}t          |          |d         }|d         }t	          |d          }t	          |d          }t	          |d          }t	          |d          }		 t
          |||	f         }
n# t          $ r d	}t          |          w xY w||f| _        |
                    d
          d         | _	        | j
        dk    rd| _        d}|dk    r||z  |z  }|dk    r/t          j        dd| j        z   || j
        d|f          g| _        d S g | _        |}| j
        D ]A}| j                            t          j        dd| j        z   ||d|f                     ||z  }Bd S |dk    r*t          j        dd| j        z   ||
||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_mimetyper   _Tilesizetileappend)selfheadlensmsgcompressionbpc	dimensionxsizeysizezsizerawmodeorientationpagesizeoffsetlayers                  r   _openzSgiImageFile._open8   s:   w"""GLL!!qzz 	")CS//! d d 1II	 Aq		 Aq		 Ar

	"S)U34GG 	" 	" 	".CS//!	" E\
]]3''*
9#.D   !u}s*HaxxO*A{3	 			 	 !Y ' 'EI$$!!6DI#5vq+?V   
 h&FF' ' Av	17WkSV<W DIII s   B( (CN)r   r   )__name__
__module____qualname__formatformat_descriptionrH    r   r   r   r   4   s9        F0G G G G G Gr   r   imImage.Imager+   	IO[bytes]filenamestr | bytesr   c           	     (   | j         dvrd}t          |          | j        }|                    dd          }|dvrd}t          |          d}d}d	}| j        \  }	}
t          | j                   }| j         d
k    r|
dk    rdnd}nd}d	}d}t          j                            t          j        	                    |                    d	         }t          |t                    r|                    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%   r>   r   )r   r   z%Unsupported number of bytes per pixelr'   r   r   r   r   r      asciiignorez>hz>Hz>l4sr   79sr;   404sr   r)   flush)r3   r-   encoderinfogetr6   r   ospathsplitextbasename
isinstancestrencodewritestructpackr	   r1   tobyteshasattrr[   )rO   r+   rR   r<   infor>   rD   magic_numberrlexyzr?   pinminpinmaximg_namecolormaprC   channels                      r   _saveru      s!   	w****oo >D ((5!

C
&5oo KL
C 7DAqBGA	w#~~aAAQ			 FFw 0 0 : :;;A>H(C   6??7H55HHHV[|,,---HHRWWHHRWWHHV[y))***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dZdS )	SGI16DecoderTbuffer$bytes | Image.SupportsArrayInterfacer   tuple[int, int]c                   | j         J | j        J | 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   )fdrO   argsstater@   rA   r   r3   seekranger   new	frombytesr,   putband)	r9   rx   rC   striderD   rE   rB   bandrt   s	            r   decodezSGI16Decoder.decode   s    w"""w"""'+y$:#dj&66DIS%LL 	. 	.Didj&6
8H%IJJGQ\**E7FK   GOOGJ----ur   N)rx   ry   r   rz   )rI   rJ   rK   	_pulls_fdr   rN   r   r   rw   rw      s-        I     r   rw   r(   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)r
   r   r   r   )rO   rP   r+   rQ   rR   rS   r   r   )
__future__r   r^   rf   typingr    r   r   _binaryr   r   r	   r   r.   r   ru   	PyDecoderrw   register_decoderregister_openrL   register_saveregister_mimeregister_extensionsrN   r   r   <module>r      s  . # " " " " " 				                ! ! ! ! ! !      3 3 3 3
 		 		K K K K K9& K K K\A A A AH    9&   4  w - - -  L'w ? ? ?  L' / / /  L' 5 5 5  ,-/O/O/O P P P P Pr   