B ë˜Þ]à0ã@s:ddlZddlZddlZddlZddlmZmZddlmZ dZ e  d¡Z e  d¡Z dZej d¡r²ddlZeed ƒr~ejZnddlZejjZx"d D]Zeeƒdk r”eZPq”Wd Zd d „Zddd„ZGdd„deƒZdd„ZGdd„dejƒZddd„Ze  ej!ee¡e "ej!e¡e #ej!ddg¡e $ej!d¡dS)éNé)ÚImageÚ ImageFile)Úi32lez0.5z^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$ÚwinÚwhich)Zgswin32cZgswin64cÚgsFc CsdtrdStj d¡s`ddl}y.ttjdƒ}|jddg|dWdQRXdSt k r^YnXdS) NTrrÚwbrz --version)ÚstdoutF) Úgs_windows_binaryÚsysÚplatformÚ startswithÚ subprocessÚopenÚosÚdevnullÚ check_callÚOSError)rr©rú4/tmp/pip-build-ktz6qwqq/Pillow/PIL/EpsImagePlugin.pyÚhas_ghostscript<s rcCsN|d\}}}}|\}}t|ƒp"d}|d||d|f}td|d|d|dƒtd|d|d|dƒf} ddl} ddl} |  ¡\} } t | ¡d}t|dƒrÆtj  |j ¡rÆ|j }n”|  ¡\}}t |¡|}t |dƒj}|  dt j¡| ¡}|  d¡|}x>|dkrN| t|d ƒ¡}|s4P|t|ƒ8}| |¡qWWdQRXd d d |d | ddddd| dd|d |d fd|ddg}tdk r¼ts´tdƒ‚t|d<zNd}tj d¡rè|  ¡}|j| jO_| j||dt  | ¡}| ¡Wdyt | ¡|r(t |¡Wnt k r@YnXX|j! "¡S)z!Render an image using GhostscriptrrgR@ééNÚnamer irz-qz-g%dx%dz-r%fx%fz-dBATCHz -dNOPAUSEz-dSAFERz-sDEVICE=ppmrawz-sOutputFile=%sz-cz%d %d translatez-fZshowpagez%Unable to locate Ghostscript on pathsr)Ú startupinfo)#ÚintÚfloatrÚtempfileÚmkstemprÚcloseÚhasattrÚpathÚexistsrrÚseekÚioÚSEEK_ENDÚtellÚreadÚminÚlenÚwriter Z WindowsErrorr r rZ STARTUPINFOZdwFlagsZSTARTF_USESHOWWINDOWrrÚloadÚunlinkrÚimÚcopy)ÚtileÚsizeÚfpÚscaleÚdecoderÚoffsetÚdataÚlengthZbboxÚresrrZout_fdÚoutfileZ infile_tempÚinfileZin_fdÚfÚfsizeZ lengthfileÚsÚcommandrr.rrrÚ GhostscriptLsz "            r?c@s.eZdZdZdd„Zejfdd„Zdd„ZdS) ÚPSFilezP Wrapper for bytesio object that treats either CR or LF as end of line. cCs||_d|_dS)N)r2Úchar)Úselfr2rrrÚ__init__±szPSFile.__init__cCsd|_|j ||¡dS)N)rAr2r$)rBr5Úwhencerrrr$µsz PSFile.seekcCsf|jpd}d|_|j d¡}x |dkr<||}|j d¡}qW|j d¡|_|jdkr\d|_| d¡S)Nórs zlatin-1)rAr2r(Údecode)rBr=ÚcrrrÚreadline¹s    zPSFile.readlineN) Ú__name__Ú __module__Ú __qualname__Ú__doc__rCr%ÚSEEK_SETr$rHrrrrr@¬sr@cCs(|dd…dkp&t|ƒdko&t|ƒdkS)Nés%!PSlÅP§ )r*Úi32)ÚprefixrrrÚ_acceptÊsrQc@sHeZdZdZdZdZdddddœZd d „Zd d „Zddd„Z dd„Z dS)Ú EpsImageFilez.EPS File Parser for the Python Imaging LibraryZEPSzEncapsulated PostscriptÚLZLABÚRGBÚCMYK)rrrrNcCs´| |j¡\}}t|jƒ}| |¡d}d|_d|_| ¡}| d¡}xˆ|rÐ|r¦t|ƒdkrjt dƒ‚yt   |¡}Wnt j k r–t dƒ‚YnX|r.| dd¡\}} | |j|<|dkr¦yRd d „|   ¡Dƒ}|d|d |d |df|_d d|j|||ffg|_Wntk r*YnXnxt  |¡}|rŽ| d¡}|dkrTP|dd…dkr‚|dd…|j|dd…<n d|j|<n|d dkržntdƒ‚| ¡}| d¡}|rJ|dd…dkrJPqJWxÎ|dd…dkr t|ƒdkrüt dƒ‚|dd…dkr†|dd…  dd¡dd…\} } } } t| ƒdkrBPy|jt| ƒ|_Wntk rnPYnXt| ƒt| ƒf|_dS| ¡ d¡}|sÔPqÔW|s°tdƒ‚dS)NrT)rrz éÿznot an EPS filerrZ BoundingBoxcSsg|]}tt|ƒƒ‘qSr)rr)Ú.0Úirrrú sz&EpsImageFile._open..rrÚeps)rrZ EndCommentsézPS-Adobeé Úú%zbad EPS headeré z %ImageData:érNz!cannot determine EPS bounding box)Ú _find_offsetr2r@r$ÚmodeÚ_sizerHÚstripr*Ú SyntaxErrorÚsplitÚmatchÚreÚerrorÚgroupÚinfor1r0Ú ExceptionÚfieldÚIOErrorrÚmode_mapÚ ValueError)rBr7r5r2ZboxZs_rawr=ÚmÚkÚvÚxÚyZbiÚmorrrÚ_openÛsv       "     $zEpsImageFile._opencCs|| d¡}|dd…dkr6| dtj¡| ¡}d}n>t|dd…ƒdkrlt|dd…ƒ}t|dd…ƒ}ntdƒ‚||fS) Né rNs%!PSrlÅP§ r[é znot an EPS file)r(r$r%r&r'rOre)rBr2r=r7r5rrrra?s zEpsImageFile._find_offsetrcCs>|js dSt|j|j|j|ƒ|_|jj|_|jj|_g|_dS)N)r0r?r1r2r.rbrc)rBr3rrrr,Us   zEpsImageFile.loadcOsdS)Nr)rBÚargsÚkwargsrrrÚ load_seek^szEpsImageFile.load_seekN)r) rIrJrKrLÚformatÚformat_descriptionrorwrar,r|rrrrrRÓsd rRcCsÜ| ¡|jdkrd}n(|jdkr(d}n|jdkr8d}ntdƒ‚|}d}|tjkrptjjd krptj|d d }d }zT|rØ|  d ¡|  d¡|  d|j ¡|  d¡|  d¡|  d¡|  d|j ¡|  d|¡|  d¡|  d¡|  d|j d|d¡|  d|j ¡|  d|j ¡|  d|j d|j d|j df¡|  d¡|  |d d¡t |dƒr~|  ¡t  ||d d!|j dd"fg¡|  d#¡|  d$¡t |dƒrÄ|  ¡Wd"|rÖ| ¡Xd"S)%z*EPS Writer for the Python Imaging Library.rS)r[rÚimagerT)r[rzfalse 3 colorimagerU)r[rNzfalse 4 colorimagezimage mode is not supportedFrzlatin-1)ÚencodingTz%!PS-Adobe-3.0 EPSF-3.0 z%%Creator: PIL 0.1 EpsEncode z%%%%BoundingBox: 0 0 %d %d z %%Pages: 1 z%%EndComments z %%Page: 1 1 z%%ImageData: %d %d z%d %d 0 1 1 "%s" zgsave z10 dict begin z/buf %d string def rrz %d %d scale z%d %d 8 z[%d 0 0 -%d 0 %d] z+{ currentfile buf readhexstring pop } bind Ú ÚflushrZ)rrNz %%%%EndBinary z grestore end )r,rbrpr r Ú version_infoÚmajorr%Ú TextIOWrapperr+r1r!r‚rÚ_saveÚdetach)r.r2ÚfilenamerZÚoperatorZbase_fpZ wrapped_fprrrr†hsR            &      r†z.psz.epszapplication/postscript)r)r)%r%rrhr r]rrÚ_binaryrrOÚ __version__Úcompilerfrmr r rÚshutilr!rÚdistutils.spawnÚ distutilsÚspawnÚfind_executableÚbinaryrr?Úobjectr@rQrRr†Z register_openr}Z register_saveZregister_extensionsZ register_mimerrrrÚs>        `  C