B .^c@sddlmZmZdZdddddddd Zd d ZGd d d ejZddZeej eee ej ee ej ddddge ej ddS))Image ImageFiles 1LRGBZCMYKPRGBA)sP4sP5sP6sP0CMYKsPyPsPyRGBAsPyCMYKcCs|dddko|ddkS)NrPs0456y)prefixr r 6/tmp/pip-install-mwhup7aw/Pillow/PIL/PpmImagePlugin.py_accept'src@s&eZdZdZdZd ddZddZdS) PpmImageFileZPPMz Pbmplus imagecCsPxJ|jd}|r|tkrP|dkr,td||}t|dkrtdqW|S)Nryz"Expected ASCII value, found binary zExpected int, got > 9 digits)fpread b_whitespace ValueErrorlen)selfscr r r _token4s    zPpmImageFile._tokencCsd|jd}|dkrtd||}t|}dddd||_|dkrVd|_d }n ||_}xtd D]}xDx*|jd}|t krP|d krrt d qrW|d krP|j }qpWt ||}|dkr|}qj|dkr|}|dkrPqj|dkrj|dkrj|dkst d||dkr$d|_d}qjd|_d}qjW||f|_ ddd||f|j|ddffg|_dS)Nrr znot a PPM filezimage/x-portable-bitmapzimage/x-portable-graymapzimage/x-portable-pixmap)sP4sP5sP6rz1;Irz(File does not extend beyond magic number#r rzToo many colors for band: %siIzI;16BzI;32Braw)rr SyntaxErrorrMODESgetZcustom_mimetypemoderangerrreadlineint_sizetellZtile)rrZ magic_numberr%rawmodeixZxsizeZysizer r r _open@sT         zPpmImageFile._openN)r)__name__ __module__ __qualname__formatformat_descriptionrr-r r r r r/s rc Cs"|jdkrd\}}nx|jdkr(d\}}nd|jdkrV|ddkrLd\}}qd \}}n6|jd krjd \}}n"|jd kr~d \}}ntd |j||d|jd|dkr|d|dkr|dkr|dn&|dkr|dn|dkr|dt||dd|jd|ddffgdS)Nr)z1;IsP4r)rsP5r ri)zI;16BsP5)zI;32BsP5r)rsP6rzcannot write mode %s as PPMz %d %d asciisP6s255 sP5zI;16Bs65535 zI;32Bs 2147483648 r!)r r r )r%Z getextremaOSErrorwritesizeencoder_save)Zimrfilenamer+headr r r r8{s0               r8z.pbmz.pgmz.ppmz.pnmzimage/x-portable-anymapN) rrrr#rrr8Z register_openr1Z register_saveZregister_extensionsZ register_mimer r r r sL$