3
齠h                 @   s   d dl Z 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 ejeZdd ZG d	d
 d
ejZdddddZdd Zejejee ejeje ejejd ejejd dS )    N   )Image	ImageFileImagePalette)i16le)o8)o16lec             C   s   | d dko| d dkS )Nr   
   r            )r   r
   r   r    )prefixr   r   4/tmp/pip-build-7iwl8md4/pillow/PIL/PcxImagePlugin.py_accept'   s    r   c               @   s   e Zd ZdZdZdd ZdS )PcxImageFileZPCXZ
Paintbrushc             C   s  | j jd}t|stdt|dt|dt|dd t|dd f}|d |d	 ksh|d
 |d krptdtjd"|  |d }|d
 }|d }t|d}tjd|||| t|dt|df| jd< |dkr|dkrd }}n<|dko|d#kr d}d| }tj	d|dd | _
n|dkr|dkr|dkrd }}| j jd$tj | j jd}t|dkr|d	 dkrxFtdD ]:}	||	d
 d |	d
 d  t|	d
 krd }}P qW |dkrtj	d|dd  | _
| j jd n0|dkr|dkr|d
krd}d}ntd|| _|d |d	  |d
 |d  f| _| jd	 | d d }
||
krx|
|
d 7 }
d%| j }tjd&| j  d!|| j j |||
 ffg| _d S )'N   znot a PCX file         r   r	   r
   r   r   zbad PCX image sizeBBox: %s %s %s %sA   B   z-PCX version %s, bits %s, planes %s, stride %s      dpi1PzP;%dLRGB   @   r   Li     zRGB;Lzunknown PCX mode   size: %sx%spcx)r   )r
   r   i)r   r   )r$   )fpreadr   SyntaxErrori16loggerdebuginfor   rawZpaletteseekioSEEK_ENDlenranger   OSErrormode_sizesizetellZtile)selfsZbboxversionbitsplanesZprovided_strider4   rawmodeistrider   r   r   _open4   s`    , 
*
"

zPcxImageFile._openN)__name__
__module____qualname__formatformat_descriptionr@   r   r   r   r   r   /   s   r   r
   r   r   r   r!   r   r   RGB;L)r   r!   r   r   c             C   s  yt | j \}}}}W n6 tk
rL } ztd| j d|W Y d d }~X nX | jd | d d }||d 7 }tjd| jd || | j}	d}
|jtd	t| td
 t| t	d t	d t	| jd d
  t	| jd
 d
  t	|
d  t	|
d
  dd  dd  d t| t	| t	d
 t	|	d  t	|	d
  dd   |j
 dks`ttj| |dd| j d||| ffg | jdkr|jtd |j| jjdd n@| jdkr|jtd x$tdD ]}|jt|d  qW d S )NzCannot save z images as PCXr   r#   r   r
   z6PcxImagePlugin._save: xwidth: %d, bits: %d, stride: %dd   r	   r             6   r   r%   r   r   r   r!   r"   r   )rG   rG   )r   r   )SAVEr4   KeyError
ValueErrorr6   r*   r+   writer   o16r7   AssertionErrorr   _saveimZ
getpaletter2   )rS   r&   filenamer:   r;   r<   r=   er?   Zscreenr   r>   r   r   r   rR      s0    &&rR   z.pcxzimage/x-pcx)r
   r   r   r   )r   r   r   r!   )r   r   r   r   )r   r   r   rF   )r/   logging r   r   r   _binaryr   r)   r   r   rP   	getLoggerrA   r*   r   r   rL   rR   Zregister_openrD   Zregister_saveZregister_extensionZregister_mimer   r   r   r   <module>   s"   
XG