o
    ÒèFh  ã                   @  sÚ   d dl mZ d dlZd dlmZ ddlmZmZmZ ddl	m
Z ddl	mZ ddl	mZ d	d
ddddddœZG dd„ dejƒZdddddddœZd&d"d#„Ze eje¡ e eje¡ e ejg d$¢¡ e ejd%¡ dS )'é    )ÚannotationsN)ÚIOé   )ÚImageÚ	ImageFileÚImagePalette)Úi16le)Úo8)Úo16leÚPÚ1ÚLÚLAzBGR;5ÚBGRÚBGRA))r   é   )é   r   )r   r   )r   é   )é   r   )r   é   )r   é    c                   @  s(   e Zd ZdZdZd
dd„Zd
dd„Zd	S )ÚTgaImageFileÚTGAÚTargaÚreturnÚNonec                 C  s¦  | j d usJ ‚| j  d¡}|d }|d }|d }|d }|d }t|dƒt|dƒf| _|d	vsB| jd dksB| jd dksB|d
vrHd}t|ƒ‚|dv r_d| _|dkrWd| _n)|dkr^d| _n!|dv rk|rgdnd| _n|dv rzd| _|dkryd| _nd}t|ƒ‚|d@ }|dv | _|dv r�d}n|dv r—d}nd}t|ƒ‚|| jd< |d@ r«d| jd < |r¶| j  |¡| jd!< |�rt|d"ƒt|d#ƒ|d$ }	}
}|dkrßt	 
d%d&|	 | j  d|
 ¡ ¡| _n3|d'krõt	 
d(d)|	 | j  d"|
 ¡ ¡| _n|dk�rt	 
d*d+|	 | j  d,|
 ¡ ¡| _nd-}t|ƒ‚z5t|d$@ |f }|d@ �r4dd.| j | j  ¡ |||ffg| _W d S d/d.| j | j  ¡ |d|ffg| _W d S  t�yR   Y d S w )0Né   r   r   r   r   é   é   é   )r   r   )r   r   r   r   r   znot a TGA file)r   é   r   r   r   )r   é	   r   )r   é
   ÚRGBr   ÚRGBAzunknown TGA modeé0   )r   r%   )r   r%   )r   r   éÿÿÿÿzunknown TGA orientationÚorientationr   Útga_rleÚcompressionÚ
id_sectionr   é   é   zBGR;15s     r   r   s      r   s       é   zunknown TGA map depth©r   r   Úraw)ÚfpÚreadÚi16Ú_sizeÚsizeÚSyntaxErrorÚ_modeÚ_flip_horizontallyÚinfor   r/   ÚpaletteÚMODESÚtellÚtileÚKeyError)ÚselfÚsÚid_lenÚcolormaptypeÚ	imagetypeÚdepthÚflagsÚmsgr'   Ústartr4   ÚmapdepthÚrawmode© rI   úK/var/www/html/loop/nvenv/lib/python3.10/site-packages/PIL/TgaImagePlugin.pyÚ_open5   sš   €€


 ÿÿ
ÿ
üÿüÿÿzTgaImageFile._openc                 C  s.   | j r| jd us
J ‚| j tjj¡| _d S d S )N)r7   ÚimÚ	transposer   Ú	TransposeÚFLIP_LEFT_RIGHT)r>   rI   rI   rJ   Úload_end    s   þzTgaImageFile.load_endN)r   r   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionrK   rP   rI   rI   rI   rJ   r   1   s
    
kr   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r#   r$   rL   úImage.Imager0   ú	IO[bytes]ÚfilenameÚstrr   r   c              
   C  s*  zt | j \}}}}W n ty# } zd| j› d�}t|ƒ|‚d }~ww d| jv r/| jd }	n| j d| j d¡¡}
|
dk}	|	rD|d7 }| j d| j dd¡¡}t|ƒ}|d	kred	}|d d	… }t 	d
¡ |r| j
d usnJ ‚| j
 dd¡}t|ƒd d}}nd\}}| jdv r‹d}nd}| j d| j dd¡¡}|dkr¡|dB }| t|ƒt|ƒ t|ƒ tdƒ t|ƒ t|ƒ tdƒ tdƒ t| jd ƒ t| jd ƒ t|ƒ t|ƒ ¡ |rá| |¡ |rè| |¡ |	rüt | |dd| j d||ffg¡ nt | |dd| j d|d|ffg¡ | d¡ d S )Nzcannot write mode z as TGAÚrler)   r(   r   r*   Ú éÿ   z-id_section has been trimmed to 255 charactersr#   r   r   r   r.   )r   r$   r   r'   r&   r   r   r/   s           TRUEVISION-XFILE. )ÚSAVEÚmoder=   ÚOSErrorÚencoderinfoÚgetr8   ÚlenÚwarningsÚwarnrL   Ú
getpaletteÚwriter	   Úo16r4   r   Ú_save)rL   r0   rX   rH   ÚbitsrA   rB   ÚerE   rZ   r)   r*   r@   r9   ÚcolormaplengthÚcolormapentryrD   r'   rI   rI   rJ   rh   µ   s†   
€þ


ÿþýüûúùø	÷
öõÿ

ÿÿrh   )z.tgaz.icbz.vdaz.vstzimage/x-tga)rL   rV   r0   rW   rX   rY   r   r   )Ú
__future__r   rc   Útypingr   r[   r   r   r   Ú_binaryr   r2   r	   r
   rg   r:   r   r]   rh   Úregister_openrT   Úregister_saveÚregister_extensionsÚregister_mimerI   rI   rI   rJ   Ú<module>   s8   	ø{ú

M