
     f-              	         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    U/var/www/api.educacionweb.es/myenv/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           	     L   | 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    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._open8   s.   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fty0'DIq+;VW			 	 !Y ' 'EI$$ 2FUA{<ST   h&FF	' '
 AFTY.';PS9TUDIII s   B, ,
B98B9N)r   r   )__name__
__module____qualname__formatformat_descriptionrI    r   r   r   r   4   s9        F0E E E E E E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getr6   r   getbandsospathsplitextbasename
isinstancestrencodewritestructpackr	   r2   tobyteshasattrr\   )rP   r,   rS   r<   infor>   rE   magic_numberrledimxyzpinminpinmaximg_namecolormaprD   channels                      r   _saverx      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bufferr   r   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   )fdrP   argsstater@   rA   r   r4   seekranger   new	frombytesr-   putband)	r9   r{   rD   striderE   rF   rB   bandrw   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|   )rJ   rK   rL   	_pulls_fdr   rO   r   r   rz   rz      s-        I     r   rz   r)   z	image/sgi)z.bwz.rgbz.rgbaz.sgi)r
   r   r   r   )rP   rQ   r,   rR   rS   rT   r   r   )
__future__r   r`   rh   typingr   r%   r   r   _binaryr   r   r	   r   r/   r   rx   	PyDecoderrz   register_decoderregister_openrM   register_saveregister_mimeregister_extensionsrO   r   r   <module>r      s  . # " " " " " 				                ! ! ! ! ! !      3 3 3 3
 		 		I I I I I9& I I IXJ J J JZ    9&   4  w - - -  L'w ? ? ?  L' / / /  L' 5 5 5  ,-/O/O/O P P P P Pr   