o
    Z#a_                     @   s   d dl mZmZ dZdddddddd	Zd
d ZG dd dejZdd Zeej	ee e
ej	e eej	g d eej	d dS )   )Image	ImageFiles    	
1LRGBCMYKPRGBA)   P4   P5   P6s   P0CMYKs   PyPs   PyRGBAs   PyCMYKc                 C   s   | dd dko| d dv S )N    r      Ps   0456y )prefixr   r   4/usr/lib/python3/dist-packages/PIL/PpmImagePlugin.py_accept'   s   r   c                   @   s&   e Zd ZdZdZd	ddZdd ZdS )
PpmImageFilePPMzPbmplus image    c                 C   sN   	 | j d}|r|tv r	 |S |dkrtd|| }t|dkr&tdq)NTr      yz"Expected ASCII value, found binary	   zExpected int, got > 9 digits)fpreadb_whitespace
ValueErrorlen)selfscr   r   r   _token4   s   zPpmImageFile._tokenc                 C   s\  | j d}|dkrtd| |}t| }dddd|| _|dkr+d| _d	}n| | _}td
D ]`}	 	 | j d}|t	vrCn	|dkrKt
dq8|dkrQn| j  }q7t| |}|dkre|}q4|dkrr|}|dkrq n$q4|dkr|dkr|dkst
d| |dk rd| _d}q4d| _d}q4||f| _ddd||f| j  |ddffg| _d S )Nr   r   znot a PPM filezimage/x-portable-bitmapzimage/x-portable-graymapzimage/x-portable-pixmap)r
   r   r   r   1;I   Tr   z(File does not extend beyond magic number   #r         r   zToo many colors for band:    II;16BI;32Braw)r   r   SyntaxErrorr    MODESgetcustom_mimetypemoderanger   r   readlineint_sizetelltile)r   r   magic_numberr/   rawmodeixxsizeysizer   r   r   _open@   s`   




(zPpmImageFile._openN)r   )__name__
__module____qualname__formatformat_descriptionr    r;   r   r   r   r   r   /   s
    
r   c              
   C   s&  | j dkr
d\}}n>| j dkrd\}}n4| j dkr+|  d dk r&d\}}n"d	\}}n| j d
kr5d\}}n| j dkr?d\}}n	td| j  d||d| j d  |dkr^|d |dkr|dkrl|d n|dkrv|d n	|dkr|d t| |dd| j d|ddffg d S )Nr   )r!   r
   r   )r   r   r'   r   r&   )r(   r   )r)   r   r   )r   r   r	   zcannot write mode z as PPMz
%d %d
asciir   s   255
r   r(   s   65535
r)   s   2147483648
r*   )r   r   r   )r/   
getextremaOSErrorwritesizeencoder   _save)imr   filenamer7   headr   r   r   rG   {   s0   












(rG   )z.pbmz.pgmz.ppmz.pnmzimage/x-portable-anymapN) r   r   r   r,   r   r   rG   register_openr?   register_saveregister_extensionsregister_mimer   r   r   r   <module>   s"   L$