B ¥.¦^O/ã@s$ddlZddlZddlZddlZddlZddlZddlmZmZddl m Z e  d¡Z e  d¡ZdZej d¡ržddlZx$dD]Ze e¡dk r~eZPq~Wd Zd d „Zdd d „ZGdd„dƒZdd„ZGdd„dejƒZddd„Ze ejee¡e eje¡e ejddg¡e ejd¡dS)éNé)ÚImageÚ ImageFile)Úi32lez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$Úwin)Zgswin32cZgswin64cÚgsFcCsFtrdStj d¡sBytjddgtjddStk r@YnXdS)NTrrz --version)ÚstdoutF)Úgs_windows_binaryÚsysÚplatformÚ startswithÚ subprocessÚ check_callÚDEVNULLÚOSError©rrú6/tmp/pip-install-mwhup7aw/Pillow/PIL/EpsImagePlugin.pyÚhas_ghostscript3s rcCs@|d\}}}}|\}}t|ƒp"d}|d||d|f}d|d|d|dd|d|d|df} t ¡\} } t | ¡d} t|dƒr®tj |j¡r®|j} n’t ¡\}} t |¡| } t | dƒh}|  dt j ¡|  ¡}|  d¡|}x<|dkr4| t|d ƒ¡}|sP|t|ƒ8}| |¡qúWWdQRXd d d |d | ddddd| dd|d |d fd| ddg}tdk r¢tsštdƒ‚t|d<zNd}tj d¡rÎt ¡}|jtjO_tj||dt  | ¡}| ¡Wdyt | ¡| rt | ¡Wntk r&YnXX|j  ¡}| ¡|S)z!Render an image using GhostscriptrrgR@ééNÚnameÚwbirz-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ÚtempfileÚmkstempÚosÚcloseÚhasattrÚpathÚexistsrÚopenÚseekÚioÚSEEK_ENDÚtellÚreadÚminÚlenÚwriter rr r r r Z STARTUPINFOZdwFlagsZSTARTF_USESHOWWINDOWrrÚloadÚunlinkÚimÚcopy)ÚtileÚsizeÚfpÚscaleÚdecoderÚoffsetÚdataÚlengthZbboxÚresZout_fdÚoutfileZ infile_tempÚinfileZin_fdÚfÚfsizeZ lengthfileÚsÚcommandrZout_imr,rrrÚ Ghostscript@sz              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)r0Úchar)Úselfr0rrrÚ__init__¤szPSFile.__init__cCsd|_|j ||¡dS)N)r?r0r")r@r3Úwhencerrrr"¨sz PSFile.seekcCsf|jpd}d|_|j d¡}x |dkr<||}|j d¡}qW|j d¡|_|jdkr\d|_| d¡S)Nórs zlatin-1)r?r0r&Údecode)r@r;ÚcrrrÚreadline¬s    zPSFile.readlineN) Ú__name__Ú __module__Ú __qualname__Ú__doc__rAr#ÚSEEK_SETr"rFrrrrr>Ÿsr>cCs(|dd…dkp&t|ƒdko&t|ƒdkS)Nés%!PSlÅP§ )r(Úi32)ÚprefixrrrÚ_accept½srOc@sHeZdZdZdZdZdddddœZd d „Zd d „Zddd„Z dd„Z dS)Ú EpsImageFilez.EPS File Parser for the Python Imaging LibraryZEPSzEncapsulated PostscriptÚLZLABÚRGBÚCMYK)rrrrLcCs´| |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)NrR)rrz éÿznot an EPS filerrZ BoundingBoxcSsg|]}tt|ƒƒ‘qSr)rÚfloat)Ú.0Úirrrú õsz&EpsImageFile._open..rrÚeps)rrZ EndCommentsézPS-Adobeé Úú%zbad EPS headeré z %ImageData:érLz!cannot determine EPS bounding box)Ú _find_offsetr0r>r"ÚmodeÚ_sizerFÚstripr(Ú SyntaxErrorÚsplitÚmatchÚreÚerrorÚgroupÚinfor/r.Ú ExceptionÚfieldrrÚmode_mapÚ ValueError)r@r5r3r0ZboxZs_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é rLs%!PSrlÅP§ rZé znot an EPS file)r&r"r#r$r%rMrd)r@r0r;r5r3rrrr`2s zEpsImageFile._find_offsetrcCs>|js dSt|j|j|j|ƒ|_|jj|_|jj|_g|_dS)N)r.r=r/r0r,rarb)r@r1rrrr*Hs   zEpsImageFile.loadcOsdS)Nr)r@ÚargsÚkwargsrrrÚ load_seekQszEpsImageFile.load_seekN)r) rGrHrIrJÚformatÚformat_descriptionrmrur`r*rzrrrrrPÆsd rPcCsÐ| ¡|jdkrd}n(|jdkr(d}n|jdkr8d}ntdƒ‚|}d}|tjkrdtj|d d }d }zT|rÌ| d ¡| d ¡| d|j¡| d¡| d¡| d¡| d|j¡| d|¡| d¡| d¡| d|jd|d¡| d|j¡| d|j¡| d|jd|jd|jdf¡| d¡| |dd¡t |dƒrr|  ¡t   ||d d!|jdd"fg¡| d#¡| d$¡t |dƒr¸|  ¡Wd"|rÊ|  ¡Xd"S)%z*EPS Writer for the Python Imaging Library.rQ)rZrÚimagerR)rZrzfalse 3 colorimagerS)rZrLzfalse 4 colorimagezimage mode is not supportedFzlatin-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 rÚ ÚflushrY)rrNz %%%%EndBinary z grestore end )r*rarnr rr#Ú TextIOWrapperr)r/rr€rÚ_saveÚdetach)r,r0ÚfilenamerYÚoperatorZbase_fpZ wrapped_fprrrr‚[sP           &      r‚z.psz.epszapplication/postscript)r)r) r#rrgr r rr\rrÚ_binaryrrMÚcompilererlr r r ÚshutilÚbinaryÚwhichrr=r>rOrPr‚Z register_openr{Z register_saveZregister_extensionsZ register_mimerrrrÚs8      _  B