U
    ڲg                     @  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rd}t||dkrd| _|dkrd| _q|dkrd| _n@|dkr|rdnd| _n(|dkr|dkrd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rt
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@ rd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 mode0   )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   6/tmp/pip-unpacked-wheel-xela2va7/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rd	}|d d	 }t	d
 |r
| j
d k	st| 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