o
    ë6Wj5  ã                   @  sî   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m	Z	 ddl
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)Úi32le)Úo8)Úo16leÚPÚ1ÚLÚLAúBGRA;15ZÚ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 ry|dkrudnd| _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%td|	 ƒ| j  d|
 ¡ ¡| _d| j_n7|dkrüt	 
d&td"|	 ƒ| j  d"|
 ¡ ¡| _n|d'k�rt	 
d(td)|	 ƒ| j  d)|
 ¡ ¡| _nd*}t|ƒ‚z9t|d$@ |f }|d@ �r?t dd+| j | j  ¡ |||f¡g| _W d S t d,d+| j | j  ¡ |d|f¡g| _W d S  t�y_   Y d S w )-Né   r   r   r   r   é   é   é   )r   r   )r   r   r   r   r   znot a TGA file)r   é   r   r   r   )r   é	   r   )r   é
   r   ÚRGBÚRGBAzunknown TGA modeé0   )r   r'   )r   r'   )r   r   éÿÿÿÿzunknown TGA orientationÚorientationr   Útga_rleÚcompressionÚ
id_sectionr   é   é   r   r   r   r   é   zunknown TGA map depth©r   r   Úraw)ÚfpÚreadÚi16Ú_sizeÚsizeÚSyntaxErrorÚ_modeÚ_flip_horizontallyÚinfor   r1   ÚbytesÚpaletteÚmodeÚMODESr   Ú_TileÚtellÚtileÚKeyError)ÚselfÚsÚid_lenÚcolormaptypeÚ	imagetypeÚdepthÚflagsÚmsgr)   Ústartr6   ÚmapdepthÚrawmode© rN   úa/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/PIL/TgaImagePlugin.pyÚ_open7   sš   €


 ÿ
ÿ
ÿ
üÿ
üÿÿzTgaImageFile._openc                 C  sœ   | j dkr>| jd usJ ‚| j dtj¡ | j d¡}| d¡r>t|ƒ}|r>| j |d ¡ | j d¡}|dkr>| j 	dd	¡ | j
rL| j tjj¡| _d S d S )
Nr&   iæÿÿÿé   s   TRUEVISION-XFILE. iî  r   ó    r   éÿ   )r=   r2   ÚseekÚosÚSEEK_ENDr3   ÚendswithÚi32ÚimÚfillbandr9   Ú	transposer   Ú	TransposeÚFLIP_LEFT_RIGHT)rC   ÚfooterÚextension_offsetÚattributes_typerN   rN   rO   Úload_end¡   s   

ÿzTgaImageFile.load_endN)r   r   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionrP   ra   rN   rN   rN   rO   r   3   s
    
jr   )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&   rY   úImage.Imager2   ú	IO[bytes]Úfilenameústr | bytesr   r   c                 C  sF  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}	|	rT| jdkrPd| j› d�}t|ƒ‚|d7 }| j d	| j d	d
¡¡}t|ƒ}|dkrud}|d d… }t 	d¡ |rˆ| 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 | |t dd| j d||f¡g¡ nt | |t dd| j d|d|f¡g¡ | d¡ d S )Nzcannot write mode z as TGAÚrler+   r*   r   z  as TGA with run-length encodingr   r,   Ú rS   z-id_section has been trimmed to 255 charactersr%   r   r   r   r0   )r   r&   r   r)   r(   r   r   r1   s           TRUEVISION-XFILE. )ÚSAVEr=   rB   ÚOSErrorÚencoderinfoÚgetr:   ÚlenÚwarningsÚwarnrY   Ú
getpaletteÚwriter
   Úo16r6   r   Ú_saver?   )rY   r2   ri   rM   ÚbitsrF   rG   ÚerJ   rk   r+   r,   rE   r<   ÚcolormaplengthÚcolormapentryrI   r)   rN   rN   rO   rw   Ã   s’   
€þ



ÿþýüûúùø	÷
öõÿ

ýýrw   )z.tgaz.icbz.vdaz.vstzimage/x-tga)rY   rg   r2   rh   ri   rj   r   r   )Ú
__future__r   rU   rr   Útypingr   rl   r   r   r   Ú_binaryr   r4   r	   rX   r
   r   rv   r>   r   rm   rw   Úregister_openre   Úregister_saveÚregister_extensionsÚregister_mimerN   rN   rN   rO   Ú<module>   s>   	ø ú

T