o
    Z#aK                     @   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 rd}n|dv rd}ntd|| jd< |d@ rd| jd < |r| j || jd!< |rt|d"t|d#|d$ }}	}
|
dkrt	
d%d&| | j d|	  | _n+|
d'krt	
d(d)| | j d"|	  | _n|
dkrt	
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 mode0   )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}|rB|d7 }| jd| jdd}
t|
}|d	krcd	}|
d d	 }
t	d
 |rkd\}}}nd\}}}| jdv rxd}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 |rt| |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 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%   r&   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
K