U
    M»{j  ã                   @  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ddœdd „Ze eje¡ e eje¡ e ejd!d"d#d$g¡ e ejd%¡ dS )&é    )ÚannotationsN)ÚIOé   )ÚImageÚ	ImageFileÚImagePalette)Úi16le)Úo8)Úo16leÚPÚ1ÚLÚLAúBGRA;15ZÚBGRÚBGRA))r   é   )é   r   )r   r   )r   é   )é   r   )r   é   )r   é    c                   @  s0   e Zd ZdZdZddœdd„Zddœdd„Zd	S )
ÚTgaImageFileZTGAZTargaÚNone)Úreturnc                 C  sÂ  | j d k	st‚| j  d¡}|d }|d }|d }|d }|d }t|dƒt|dƒf| _|d	ks„| jd dks„| jd dks„|d
kr�d}t|ƒ‚|dkr¾d| _|dkr®d| _qþ|dkrþd| _n@|dkrÖ|rÎdnd| _n(|dkrò|dkrêdnd| _nd}t|ƒ‚|d@ }|dk| _|dk�r d}n|dk�r0d}nd}t|ƒ‚|| j	d< |d@ �rZd| j	d < |�rr| j  |¡| j	d!< |�rBt|d"ƒt|d#ƒ|d$   }	}
}|dk�rÒt
 d%td|	 ƒ| j  d|
 ¡ ¡| _d| j_np|dk�rt
 d&td"|	 ƒ| j  d"|
 ¡ ¡| _n>|d'k�r6t
 d(td)|	 ƒ| j  d)|
 ¡ ¡| _nd*}t|ƒ‚zdt|d$@ |f }|d@ �r‚dd+| j | j  ¡ |||ffg| _n"d,d+| j | j  ¡ |d|ffg| _W n tk
�r¼   Y nX d S )-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ÚAssertionErrorÚreadÚi16Ú_sizeÚsizeÚSyntaxErrorÚ_modeÚ_flip_horizontallyÚinfor   r.   ÚbytesÚpaletteÚmodeÚMODESÚtellZtileÚKeyError)ÚselfÚsÚid_lenÚcolormaptypeÚ	imagetypeÚdepthÚflagsÚmsgr&   Ústartr4   ZmapdepthÚrawmode© rI   úQ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/PIL/TgaImagePlugin.pyÚ_open5   s     ÿþýü





 
 ÿ

 ÿ
 ÿ
üÿüÿ
zTgaImageFile._openc                 C  s*   | j r&| jd k	st‚| j tjj¡| _d S )N)r7   Úimr0   Z	transposer   Z	TransposeZFLIP_LEFT_RIGHT)r?   rI   rI   rJ   Úload_endŸ   s    zTgaImageFile.load_endN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionrK   rM   rI   rI   rI   rJ   r   1   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#   zImage.Imagez	IO[bytes]zstr | bytesr   )rL   r/   Úfilenamer   c              
   C  s@  zt | j \}}}}W n: tk
rP } zd| j› d�}t|ƒ|‚W 5 d }~X Y nX d| jkrh| jd }	n| j d| j d¡¡}
|
dk}	|	r’|d7 }| j d| j dd¡¡}t|ƒ}|d	krÔd	}|d d	… }t 	d
¡ |�r
| j
d k	sèt‚| j
 dd¡}t|ƒd d }}nd\}}| jdk�r$d}nd}| j d| j dd¡¡}|dk�rR|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. )ÚSAVEr;   r>   ÚOSErrorZencoderinfoÚgetr8   ÚlenÚwarningsÚwarnrL   r0   Z
getpaletteÚwriter	   Úo16r4   r   Ú_save)rL   r/   rS   rH   ÚbitsrB   rC   ÚerF   rT   r(   r)   rA   r:   ZcolormaplengthZcolormapentryrE   r&   rI   rI   rJ   r_   ´   sŠ    


ÿþýüûúùø	÷
öõÿ

  ÿ  ÿr_   z.tgaz.icbz.vdaz.vstzimage/x-tga)Ú
__future__r   r[   Útypingr   rU   r   r   r   Ú_binaryr   r2   r	   r
   r^   r<   r   rW   r_   Zregister_openrQ   Zregister_saveZregister_extensionsZregister_mimerI   rI   rI   rJ   Ú<module>   s6   	øzú
M