a
    hP                     @  s   d dl mZ d dl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 eeZd	d
dddZG dd dejZdddddZdddddddZeejee eeje eejd eejd dS )    )annotationsN)IO   )Image	ImageFileImagePalette)i16le)o8)o16lebytesbool)prefixreturnc                 C  s   | d dko| d dv S )Nr   
   r   )r             )r   r   r   @/var/www/auris/lib/python3.9/site-packages/PIL/PcxImagePlugin.py_accept)   s    r   c                   @  s"   e Zd ZdZdZddddZdS )PcxImageFileZPCXZ
PaintbrushNone)r   c                 C  s  | j d usJ | j d}t|s.d}t|t|dt|dt|dd t|dd f}|d |d	 ksz|d
 |d krd}t|tjdg|R   | j  d }|d }|d
 }|d }t|d}td|||| t|dt|df| jd< |dkr|dkrd }	}
n8|dkrP|dv rPd}	d| d}
t	
d|dd | _n|dkr|dkr|dkrd }	}
| j dtj | j d}t|dkrL|d	 dkrLtdD ]>}||d
 d |d
 d  t|d
 krd }	}
 qq|	dkrLt	
d|dd  | _n4|dkr@|dkr@|d
kr@d}	d }
nd!}t||	| _|d |d	  |d
 |d  f| _| jd	 | d" d }||kr||d 7 }d#| j }tjd$g| jR   td%|||
|| fg| _d S )&ND   znot a PCX file         r   r   r   r   r   zbad PCX image sizezBBox: %s %s %s %s<   A   B   z-PCX version %s, bits %s, planes %s, stride %s      dpi1)r   r   PzP;LRGB   @   r   ii     RGB;Lzunknown PCX mode   r   r   zsize: %sx%spcx)fpreadr   SyntaxErrori16loggerdebugtellinfor   rawpaletteseekioSEEK_ENDlenranger	   OSError_mode_sizesizer   _TileZtile)selfsmsgZbboxoffsetversionbitsplanesZprovided_stridemoderawmodeistrider   r   r   _open5   sj    , 
*

"

zPcxImageFile._openN)__name__
__module____qualname__formatformat_descriptionrL   r   r   r   r   r   1   s   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   )imr-   filenamer   c                 C  s  zt | j \}}}}W n< tyR } z$d| j d}t||W Y d }~n
d }~0 0 | jd | d d }	|	|	d 7 }	td| jd ||	 | j}
d}|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 t| t	|	 t	d
 t	|
d  t	|
d
  d  |
 dksZJ t| |tdd| j d||| fg | jdkr|td | jdd}|ddt|  7 }|| n<| jdkr|td tdD ]}|t|d  qd S )NzCannot save z images as PCXr   r*   r   r   z6PcxImagePlugin._save: xwidth: %d, bits: %d, stride: %d)d   rT   r   r   s                           s       s6                                                            r,   r+   r#   r   r%   i   r$   r(   r   )SAVErH   KeyError
ValueErrorr?   r1   r2   writer	   o16r3   r   _saver@   rR   Z
getpaletter:   r;   )rR   r-   rS   rE   rF   rG   rI   erC   rK   Zscreenr!   r6   rJ   r   r   r   r\      s     

	



"r\   z.pcxzimage/x-pcx)
__future__r   r8   loggingtypingr    r   r   r   _binaryr   r0   r	   r
   r[   	getLoggerrM   r1   r   r   rW   r\   Zregister_openrP   Zregister_saveZregister_extensionZregister_mimer   r   r   r   <module>   s(   
\	K