3 }\1@s:ddlZddlZddlZddlZddlmZmZddlmZ dZ ej dZ ej dZ dZejjdrddlZeed r~ejZnddlZejjZx"dD]Zeedk reZPqWd ZddZdddZGdddeZddZGdddejZdddZej ej!eeej"ej!eej#ej!ddgej$ej!ddS) N)Image ImageFile)i32lez0.5z^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$winwhichgswin32cgswin64cgsFcCsdtrdStjjds`ddl}y.ttjd}|jddg|dWdQRXdSt k r^YnXdS) NTrrwbr z --version)stdoutF) gs_windows_binarysysplatform startswith subprocessopenosdevnull check_callOSError)rrrj/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-i584jbuk/Pillow/PIL/EpsImagePlugin.pyhas_ghostscript9s rcCsN|d\}}}}|\}}t|p"d}|d||d|f}td|d|d|dtd|d|d|df} ddl} ddl} | j\} } tj| d}t|drtjj |j r|j }n| j\}}tj||}t |dj}|j dt j|j}|j d|}x>|dkrN|jt|d}|s4P|t|8}|j|qWWdQRXd d d |d| ddddd| dd|d |d fd|ddg}tdk rtstdt|d<zNd}tjjdr| j}|j| jO_| j||dtj | }|jWdytj| |r(tj|Wnt k r@YnXX|j!j"S)z!Render an image using GhostscriptrrgR@Nnamer dir z-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) startupinfoi)#intfloatrtempfilemkstemprclosehasattrpathexistsrrseekioSEEK_ENDtellreadminlenwriter Z WindowsErrorrrrZ STARTUPINFOZdwFlagsZSTARTF_USESHOWWINDOWrrloadunlinkrimcopy)tilesizefpscaledecoderoffsetdatalengthZbboxresrr!Zout_fdoutfileZ infile_tempinfileZin_fdffsizeZ lengthfilescommandrr1rrr GhostscriptHst "            rBc@s.eZdZdZddZejfddZddZdS) PSFilezP Wrapper for bytesio object that treats either CR or LF as end of line. cCs||_d|_dS)N)r5char)selfr5rrr__init__szPSFile.__init__cCsd|_|jj||dS)N)rDr5r')rEr8whencerrrr'sz PSFile.seekcCsf|jpd}d|_|jjd}x |dkr<||}|jjd}qW|jjd|_|jdkr\d|_|jdS)Nrs zlatin-1)rDr5r+decode)rEr@crrrreadlines    zPSFile.readlineN) __name__ __module__ __qualname____doc__rFr(SEEK_SETr'rKrrrrrCsrCcCs(|dddkp&t|dko&t|dkS)Ns%!PSlP )r-i32)prefixrrr_acceptsrTc@sHeZdZdZdZdZdddddZd d Zd d ZdddZ ddZ dS) EpsImageFilez.EPS File Parser for the Python Imaging LibraryZEPSzEncapsulated PostscriptLZLABRGBCMYK)rrrrQcCs|j|j\}}t|j}|j|d}d|_d|_|j}|jd}x|r|rt|dkrjt dyt j |}Wnt j k rt dYnX|r.|jdd\}} | |j|<|dkryRdd | j D}|d|d |d |df|_d d|j|||ffg|_Wntk r*YnXnxtj |}|r|jd}|d krTP|dddkr|dd|j|dd<n d|j|<n|d dkrntd|j}|jd}|rJ|dddkrJPqJWx|dddkrt|dkrt d|dddkr|ddj dddd\} } } } t| dkrBPy|jt| |_Wntk rnPYnXt| t| f|_dS|jjd}|sPqW|stddS)NrWrz znot an EPS filerZ BoundingBoxcSsg|]}tt|qSr)rr ).0irrr sz&EpsImageFile._open..rrepsZ EndCommentszPS-Adobe %zbad EPS header z %ImageData:rQz!cannot determine EPS bounding box)rr)rr) _find_offsetr5rCr'mode_sizerKstripr- SyntaxErrorsplitmatchreerrorgroupinfor4r3 ExceptionfieldIOErrorrmode_map ValueError)rEr:r8r5ZboxZs_rawr@mkvxyZbimorrr_opensx       "      $zEpsImageFile._opencCs||jd}|dddkr6|jdtj|j}d}n>t|dddkrlt|dd}t|dd}ntd||fS) NrQs%!PSrlP r^ znot an EPS file)r+r'r(r)r*rRrh)rEr5r@r:r8rrrrd3s zEpsImageFile._find_offsetrcCs>|js dSt|j|j|j||_|jj|_|jj|_g|_dS)N)r3rBr4r5r1rerf)rEr6rrrr/Is   zEpsImageFile.loadcOsdS)Nr)rEargskwargsrrr load_seekRszEpsImageFile.load_seekN)r) rLrMrNrOformatformat_descriptionrrrzrdr/rrrrrrUsc rUc Cs|j|jdkrd'}n(|jdkr(d(}n|jdkr8d)}ntd |}d }|tjkrptjjd krptj|dd}d}zT|r|j d|j d|j d|j |j d|j d|j d|j d|j |j d||j d|j d|j d|j d|d|j d|j |j d|j |j d|j d|j d|j df|j d |j |d d!t |d"r~|j t j||d#d*|j dd$fg|j d%|j d&t |d"r|j Wd$|r|jXd$S)+z*EPS Writer for the Python Imaging Library.rVr^rimagerWrfalse 3 colorimagerXrQfalse 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 rz %d %d scale z%d %d 8 z[%d 0 0 -%d 0 %d] z+{ currentfile buf readhexstring pop } bind  flushr]Nz %%%%EndBinary z grestore end )r^rr)r^rr)r^rQr)rr)r/rersrr version_infomajorr( TextIOWrapperr.r4r$rr_savedetach)r1r5filenamer]operatorZbase_fpZ wrapped_fprrrr[sR            &      rz.psz.epszapplication/postscript)rr r )r)r)%rkr(rrr`rr_binaryrrR __version__compilerirpr rrshutilr$rdistutils.spawn distutilsspawnfind_executablebinaryrrBobjectrCrTrUrZ register_openrZ register_saveZregister_extensionsZ register_mimerrrrs>        Z  B