
 X,1                 @   s  d  d l  Z  d  d l Z d  d l Z d  d l m Z m Z m Z d Z e j Z	 e j
 Z e  j d  Z e  j d  Z d Z e j j d  rd  d l Z e e d  r e j Z n d  d l Z e j j Z x3 d D]" Z e e  d k	 r e Z Pq q Wd Z n  d d   Z d d d  Z Gd d   d e  Z d d   Z Gd d   d e j  Z d d d  Z  e j! e j" e e  e j# e j" e   e j$ e j" d  e j$ e j" d  e j% e j" d  d S)    N)Image	ImageFile_binaryz0.5z^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$winwhichgswin32cgswin64cgsFc              C   sw   t  r
 d St j j d  ss d d  l }  y3 |  j d d g d |  j } | j j   d SWqs t	 k
 ro Yqs Xn  d S)NTr   r   r	   z	--versionstdoutF)
gs_windows_binarysysplatform
startswith
subprocessPopenPIPEr
   readOSError)r   r	    r   O/home/ubuntu/projects/ifolica/lib/python3.4/site-packages/PIL/EpsImagePlugin.pyhas_ghostscript8   s    r      c             C   s  |  d \ } }  } } | \ } } t  |  p1 d } | d | | d | f } t d | d | d | d  t d | d | d | d  f }	 d d l }
 d d l } d d l } | j   \ } } |
 j |  d } t | d  r|
 j j	 | j
  r| j
 } n | j   \ } } |
 j |  | } t | d   } | j d d  | j   } | j d  | } xO | d k r| j t | d   } | sPn  | t |  8} | j |  qzWWd QXd d d | d |	 d d d d | d d | d | d f d | g } t d k	 rGt s:t d   n  t | d <n  zp | j | d | j d | j } | j j   | j   } | rt d |   n  t j |  } | j   Wd y' |
 j |  | r|
 j |  n  Wn t k
 rYn XX| j j   S)z!Render an image using Ghostscriptr   r   g      R@      Nnamewbd   i   r	   z-qz-g%dx%dz-r%fx%fz	-dNOPAUSEz-dSAFERz-sDEVICE=ppmrawz-sOutputFile=%sz-cz%d %d translatez-fz%Unable to locate Ghostscript on pathsstdinr
   zgs failed (status %d)i  )intfloatosr   tempfilemkstempclosehasattrpathexistsr   openseektellr   minlenwriter   ZWindowsErrorr   r   r   waitIOErrorr   loadunlinkr   imcopy)tilesizefpscaledecoderoffsetdatalengthZbboxresr    r   r!   Zout_fdoutfileZinfile_tempinfileZin_fdfZfsizeZ
lengthfilescommandr	   statusr1   r   r   r   GhostscriptG   st    !'$rB   c               @   s=   e  Z d  Z d Z d d   Z d d d  Z d d   Z d	 S)
PSFilezP
    Wrapper for bytesio object that treats either CR or LF as end of line.
    c             C   s   | |  _  d  |  _ d  S)N)r5   char)selfr5   r   r   r   __init__   s    	zPSFile.__init__r   c             C   s    d  |  _  |  j j | |  d  S)N)rD   r5   r(   )rE   r8   whencer   r   r   r(      s    	zPSFile.seekc             C   s   |  j  p d } d  |  _  |  j j d  } x, | d k rX | | } |  j j d  } q- W|  j j d  |  _  |  j  d k r d  |  _  n  | j d  S)N    r   s   
zlatin-1)rD   r5   r   decode)rE   r?   cr   r   r   readline   s    	
zPSFile.readlineN)__name__
__module____qualname____doc__rF   r(   rK   r   r   r   r   rC      s   rC   c             C   s8   |  d  d  d k p7 t  |   d k o7 t |   d k S)N   s   %!PSl   P )r+   i32)prefixr   r   r   _accept   s    rS   c               @   sw   e  Z d  Z d Z d Z d Z i d d 6d d 6d d	 6d
 d 6Z d d   Z d d   Z d d d  Z	 d d   Z
 d S)EpsImageFilez.EPS File Parser for the Python Imaging LibraryZEPSzEncapsulated PostscriptLr   ZLABr   RGBr   CMYKrP   c             C   s  |  j  |  j  \ } } yC t t k r? t |  j j d  } n t |  j j d d d } Wn t |  j  } Yn X| j |  d  } d |  _ d |  _	 | j
   j d  } x| rt |  d k r t d   n  y t j |  } Wn4 t j k
 r"} z t d   WYd  d  } ~ Xn X| r| j d d	  \ } } | |  j | <| d
 k rqyi d d   | j   D } | d	 | d | d | d f |  _	 d d |  j	 | | | f f g |  _ WqYqXqqn t j |  } | rR| j d  } | d k rPn  | d  d  d k rB| d d   |  j | d  d  <qqd |  j | <n | d d k ren t d   | j
   j d  } | d  d  d k r Pq q Wx| d  d  d k rt |  d k rt d   n  | d  d  d k r| d d   j d  d  d  d  \ }	 }
 } } t |  d k r<Pn  y |  j t |  |  _ Wn t k
 rkPYn Xt |	  t |
  f |  _	 d  S| j
   j d  } | sPqqW| st d   n  d  S)NZUrencodingzlatin-1rV   r   z
   znot an EPS filer   ZBoundingBoxc             S   s"   g  |  ] } t  t |    q Sr   )r   r   ).0ir   r   r   
<listcomp>   s   	 z&EpsImageFile._open.<locals>.<listcomp>r   r   epsZEndComments   zPS-Adobe	    %zbad EPS header   z%ImageData:   rP   z!cannot determine EPS bounding box)r   r   )r   r   )_find_offsetr5   bytesstrr'   r   rC   r(   moder4   rK   stripr+   SyntaxErrorsplitmatchreerrorgroupinfor3   fieldr.   r   mode_map
ValueError)rE   r:   r8   r5   Zboxr?   mvkxyZbimor   r   r   _open   s|    			'$2zEpsImageFile._openc             C   s   | j  d  } | d  d  d k rJ | j d d  | j   } d } nW t | d d   d k r t | d d   } t | d d   } n t d	   | | f S)
N   rP   s   %!PSr   r   l   P r^      znot an EPS file)r   r(   r)   rQ   ri   )rE   r5   r?   r:   r8   r   r   r   rd   8  s    	zEpsImageFile._find_offsetc             C   sY   |  j  s d  St |  j  |  j |  j |  |  _ |  j j |  _ |  j j |  _ g  |  _  d  S)N)r3   rB   r4   r5   r1   rg   )rE   r6   r   r   r   r/   N  s    	!zEpsImageFile.loadc             O   s   d  S)Nr   )rE   argskwargsr   r   r   	load_seekW  s    zEpsImageFile.load_seekN)rL   rM   rN   rO   formatZformat_descriptionrq   ry   rd   r/   r~   r   r   r   r   rT      s   "i	rT   c             C   sx  |  j    |  j d k r" d' } n< |  j d k r: d( } n$ |  j d k rR d) } n t d   Gd d   d t  } | } | t j k r | |  } t j d d k r t j | d d } q n  | rF| j	 d  | j	 d  | j	 d |  j
  | j	 d  | j	 d  | j	 d  | j	 d |  j
  | j	 d |  n  | j	 d  | j	 d  | j	 d |  j
 d | d  | j	 d |  j
  | j	 d |  j
  | j	 d |  j
 d |  j
 d |  j
 d f  | j	 d   | j	 | d d!  t | d"  r| j   n  t j |  | d# d* |  j
 d d$ f g  | j	 d%  | j	 d&  t | d"  rt| j   n  d$ S)+z*EPS Writer for the Python Imaging Library.rU   r^   r   imagerV   r   false 3 colorimagerW   rP   false 4 colorimagezimage mode is not supportedc               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)z_save.<locals>.NoCloseStreamc             S   s   | |  _  d  S)N)r5   )rE   r5   r   r   r   rF   s  s    z%_save.<locals>.NoCloseStream.__init__c             S   s   t  |  j |  S)N)getattrr5   )rE   r   r   r   r   __getattr__v  s    z(_save.<locals>.NoCloseStream.__getattr__c             S   s   d  S)Nr   )rE   r   r   r   r#   y  s    z"_save.<locals>.NoCloseStream.closeN)rL   rM   rN   rF   r   r#   r   r   r   r   NoCloseStreamr  s   r   r   r   rX   zlatin-1z%!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"
zgsave
z10 dict begin
z/buf %d string def
z%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^   r   zimage)r^   r   r   )r^   rP   r   )r   r   )r/   rg   rr   objectr   r
   version_infoioTextIOWrapperr,   r4   r$   r   r   _save)r1   r5   filenamer]   operatorr   Zbase_fpr   r   r   r   `  sL    
			
 /)r   z.psz.epszapplication/postscript)r   r   zgs)&rl   r   r   ZPILr   r   r   __version__Zi32lerQ   Zo32leZo32compilerj   rp   r   r   r   shutilr$   r   distutils.spawn	distutilsspawnfind_executablebinaryr   rB   r   rC   rS   rT   r   Zregister_openr   Zregister_saveZregister_extensionZregister_mimer   r   r   r   <module>   s>   			Z	F