o
    tBh                     @   s   d dl mZmZ d dlmZ d dlmZ d dlmZ dZ	dddd	d
dd	dZ
dd ZG dd dejZG dd dejZdd Zeejee eeje ede eejg d eejd dS )   )Image	ImageFile)i16be)o8)o32les    	
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   i/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/PIL/PpmImagePlugin.py_accept*   s   r   c                   @   s,   e Zd ZdZdZdd Zdd Zdd Zd	S )
PpmImageFilePPMzPbmplus imagec                 C   s<   d}t dD ]}| jd}|r|tv r |S ||7 }q|S )N       r   )rangefpreadb_whitespace)selfmagic_cr   r   r   _read_magic7   s   
zPpmImageFile._read_magicc                 C   s   d}t |dkr9| jd}|sn(|tv r|sqn |dkr/| jddvr.	 | jddvs%q||7 }t |dks|s?tdt |dkrLtd| |S )Nr   
   r      #s   
z Reached EOF while reading headerzToken too long in file header: )lenr   r   r   
ValueError)r   tokenr!   r   r   r   _read_tokenA   s*   zPpmImageFile._read_tokenc                 C   s.  |   }zt| }W n ty   tdw dddd|| _|dkr*d| _d}n| | _}d}td	D ]>}t| 	 }|d
krD|}q5|dkrQ|}|dkrP n$q5|dkrs|}	|	dkrb|dkrbd| _|	dkrm|dkrmd}q5|	dkrsd}q5|dkr}|d
dfn||	f}
||f| _
|d
d
||f| j |
fg| _d S )Nznot a PPM filezimage/x-portable-bitmapzimage/x-portable-graymapzimage/x-portable-pixmap)r   r   r   r   1;Iraw   r   r         r   I  I;16Bppm)r"   MODESKeyErrorSyntaxErrorgetcustom_mimetypemoder   intr(   _sizer   telltile)r   magic_numberr7   rawmodedecoder_nameixr'   xsizeysizemaxvalargsr   r   r   _openY   sL   

"zPpmImageFile._openN)__name__
__module____qualname__formatformat_descriptionr"   r(   rD   r   r   r   r   r   2   s    
r   c                   @   s   e Zd ZdZdd ZdS )
PpmDecoderTc                 C   sF  t  }t| jd d}|dk rdnd}| jdkrdnd}| jdkr#dnd}t| j}t|| jj| jj	 | | k r| j
|| }t||| k rLn@t|D ]+}	|dkrZ||	 nt||	| }
t|t|
| | }
|| jdkrvt|
nt|
7 }qPt|| jj| jj	 | | k s;| jdkrd	n| j}| t||d
df dS )Nr/      r   r,   r.      r-   zI;32r   )rK   r   )	bytearrayminrC   r7   r   getmodebandsr%   stater@   rA   fdr   r   i16roundo32r   
set_as_rawbytes)r   bufferdatarB   in_byte_countout_byte_countout_maxbandspixelsbvaluer=   r   r   r   decode   s&      zPpmDecoder.decodeN)rE   rF   rG   	_pulls_fdra   r   r   r   r   rJ      s    rJ   c              
   C   s   | j dkr
d\}}n'| j dkrd\}}n| j dkrd\}}n| j dv r(d\}}n	td	| j  d
||d| j   |dkrE|d n|dkrX|dkrS|d n|d t| |dd| j d|ddffg d S )Nr   )r)   r   r   )r   r   r.   )r0   r   )r	   r   )r	   r   zcannot write mode z as PPMs   
%d %d
r   s   255
r   s   65535
r*   )r   r   r   r   )r7   OSErrorwritesizer   _save)imr   filenamer=   headr   r   r   rf      s"   








(rf   r1   )z.pbmz.pgmz.ppmz.pnmzimage/x-portable-anymapN) r   r   _binaryr   rS   r   r   rU   r   r2   r   r   	PyDecoderrJ   rf   register_openrH   register_saveregister_decoderregister_extensionsregister_mimer   r   r   r   <module>   s,   S