o
    
i                     @  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ZG dd dejZdddddZ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prefixbytesreturnboolc                 C  s$   t | dko| d dko| d dv S )N   r   
   r   )r   r         )len)r    r   P/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/PIL/PcxImagePlugin.py_accept)   s   $r   c                   @  s   e Zd ZdZdZdddZdS )	PcxImageFilePCX
Paintbrushr   Nonec                 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s=|d
 |d krCd}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rd }	}
n|dkr|dv rd}	d| d}
t	
d|dd | _nu|dkr|dkr|dkrd }	}
| j dtj | j d}t|dkr|d	 dkrtdD ]}||d
 d |d
 d  t|d
 krd }	}
 nq|	dkrt	
d|dd  | _n|dkr|dkr|d
krd}	d }
nd!}t||	| _|d |d	  |d
 |d  f| _| jd	 | d" d }||krB||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_ENDr   ranger	   OSError_mode_sizesizer   _Tiletile)selfsmsgbboxoffsetversionbitsplanesprovided_stridemoderawmodeistrider   r   r   _open5   sn   , 

("

 zPcxImageFile._openN)r   r   )__name__
__module____qualname__formatformat_descriptionrQ   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(   imImage.Imager0   	IO[bytes]filenamestr | bytesr   c                 C  s"  | j dks
| jdkrd}t|zt| j \}}}}W n ty3 } zd| j d}t||d }~ww | 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sJ t| |tdd| j d||| fg | jdkr|	t
d | jdd}|ddt|  7 }|	| d S | jdkr|	t
d tdD ]}|	t
|d  q d S d S )Nr   zCannot write empty image as PCXzCannot save z images as PCXr-   r   r   z6PcxImagePlugin._save: xwidth: %d, bits: %d, stride: %d)d   r\   r   r   s                           s       s6                                                            r/   r.   r&   r"   r(   i   r'   r+   r   )widthheight
ValueErrorSAVErM   KeyErrorrA   r4   r5   writer	   o16r6   r   _saverB   rW   
getpaletter   r=   )rW   r0   rZ   rF   rI   rJ   rK   rN   erP   screenr$   r9   rO   r   r   r   rf      s   



	


"
rf   z.pcxzimage/x-pcx)r   r   r   r   )rW   rX   r0   rY   rZ   r[   r   r   )
__future__r   r;   loggingtypingr    r   r   r   _binaryr   r3   r	   r
   re   	getLoggerrR   r4   r   r   rb   rf   register_openrU   register_saveregister_extensionregister_mimer   r   r   r   <module>   s*   

\
	O