o
    e¦Žj×  ã                   @   sÀ   d dl 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„ Ze eje¡ e eje¡ e ejg d¢¡ e ejd¡ dS )é    Né   )Ú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„ Zdd„ ZdS )ÚTgaImageFileÚTGAÚTargac                 C   sr  | j  d¡}|d }|d }|d }|d }|d }t|dƒt|dƒf| _|d	vs;| jd dks;| jd dks;|d
vr?tdƒ‚|dv rVd| _|dkrNd| _n#|dkrUd| _n|dv r^d| _n|dv rmd| _|dkrld| _ntdƒ‚|d@ }|dv | _|dv r�d}n|dv rˆd}ntdƒ‚|| 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|	 ¡ ¡| _n+|
d'krãt	 
d(d)| | j  d"|	 ¡ ¡| _n|
dkrøt	 
d*d+| | j  d,|	 ¡ ¡| _z5t|d$@ |f }|d@ �rdd-| j | j  ¡ |||ffg| _W d S d.d-| j | j  ¡ |d|ffg| _W d S  t�y8   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   é
   Ú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       é   ©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Úflagsr#   Ústartr0   ÚmapdepthÚrawmode© rD   ú4/usr/lib/python3/dist-packages/PIL/TgaImagePlugin.pyÚ_open5   sŽ   €€


 ÿÿÿ
üÿüÿÿzTgaImageFile._openc                 C   s   | j r| j tj¡| _d S d S )N)r3   ÚimÚ	transposer   ÚFLIP_LEFT_RIGHT)r:   rD   rD   rE   Úload_end™   s   ÿzTgaImageFile.load_endN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionrF   rJ   rD   rD   rD   rE   r   0   s
    dr   )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    c              
   C   s.  zt | j \}}}}W n ty! } z
td| j› d�ƒ|‚d }~ww d| jv r-| jd }n| j d| j d¡¡}	|	dk}|rR| jdkrNd| j› d�}
t|
ƒ‚|d7 }| j d	| j d	d
¡¡}t|ƒ}|dkrsd}|d d… }t 	d¡ |r{d\}}}nd\}}}| jdv rˆd}nd}| j d| j dd¡¡}|dkrž|dB }| 
t|ƒt|ƒ t|ƒ t|ƒ t|ƒ t|ƒ tdƒ tdƒ t| jd ƒ t| jd ƒ t|ƒ t|ƒ ¡ |rÞ| 
|¡ |rê| 
| j dd¡¡ |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
   z  as TGA with run-length encodingr   r&   Ú éÿ   z-id_section has been trimmed to 255 characters)r   é   r   )r   r   r   )r   r    r   r#   r"   r   r   r   r   r*   r+   s           TRUEVISION-XFILE. )ÚSAVEr2   r9   ÚOSErrorÚencoderinfoÚgetr4   ÚlenÚwarningsÚwarnÚwriter   Úo16r0   rG   Ú
getpaletter   Ú_save)rG   r,   ÚfilenamerC   Úbitsr=   r>   ÚerP   r%   Úmsgr&   r<   ÚcolormapfirstÚcolormaplengthÚcolormapentryr@   r#   rD   rD   rE   r^   ­   s†   €ÿ




ÿþýüûúùø	÷
öõÿ
ÿÿr^   )z.tgaz.icbz.vdaz.vstzimage/x-tga)rY   rQ   r   r   r   Ú_binaryr   r.   r   r   r\   r6   r   rT   r^   Úregister_openrN   Úregister_saveÚregister_extensionsÚregister_mimerD   rD   rD   rE   Ú<module>   s4   	øtú
O