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s…t
d|› �ƒ‚|dk r�d| _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$