
    zvgL              	         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    O/var/www/pixelcanvas.ch/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          }	|||	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    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layoutrawmodeorientationpagesizeoffsetlayers                   r   _openzSgiImageFile._open8   sU   w"""GLL!!qzz 	")CS//! d d 1II	 Aq		 Aq		 Ar

 i& 	FmGG 	 	 	D	 b==.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, ,
B98B9N)r   r   )__name__
__module____qualname__formatformat_descriptionrJ    r   r   r   r   4   s9        F0N N N N N N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	}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	         }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   >   r   r   z(incorrect number of bands in SGI write: z vs    asciiignorez>hz>Hz>l4sr   79sr<   404sr   r*   flush)r4   r.   encoderinfogetr7   r   getbandsospathsplitextbasename
isinstancestrencodewritestructpackr	   r2   tobyteshasattrr]   )rQ   r,   rT   r=   infor?   rF   magic_numberrledimxyzpinminpinmaximg_namecolormaprE   channels                      r   _savery      s   	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(C   6??7H55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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   )fdrQ   argsstaterA   rB   r   r4   seekranger   new	frombytesr-   putband)	r:   r|   rE   striderF   rG   rC   bandrx   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)r|   r}   r   r~   )rK   rL   rM   	_pulls_fdr   rP   r   r   r{   r{      s-        I     r   r{   r)   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)r
   r   r   r   )rQ   rR   r,   rS   rT   rU   r   r   )
__future__r   ra   ri   typingr   r%   r   r   _binaryr   r   r	   r   r/   r   ry   	PyDecoderr{   register_decoderregister_openrN   register_saveregister_mimeregister_extensionsrP   r   r   <module>r      s  . # " " " " " 				                ! ! ! ! ! !      3 3 3 3
 		 		R R R R R9& R R RjJ J J JZ    9&   4  w - - -  L'w ? ? ?  L' / / /  L' 5 5 5  ,-/O/O/O P P P P Pr   