3

h.                 @   s$  d dl Z d dlZd dlZd dlZd dlZd dlZddlmZmZ ddl	m
Z ejdZejdZdZejjdrd dlZx$dD ]Zejedk	r~eZP q~W dZdd ZdddZG dd dZdd ZG d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dg ejejd dS )    N   )Image	ImageFile)i32lez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$wingswin32cgswin64cgsFc               C   sF   t rdS tjjdsBytjddgtjd dS  tk
r@   Y nX dS )NTr   r	   z	--version)stdoutF)gs_windows_binarysysplatform
startswith
subprocess
check_callDEVNULLOSError r   r   R/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/PIL/EpsImagePlugin.pyhas_ghostscript3   s    r   c             C   sZ  | d \}} }}|\}}	t |p"d}|d | |d | f}d|d  |	d |	d   d|d  |	d |	d   f}
tj \}}tj| d}t|drtjj|jr|j}ntj \}}tj| |}t	|dh}|j
dtj |j }|j
d |}x<|dkr4|jt|d}|sP |t|8 }|j| qW W dQ R X |rJdnd}ddd| d|
 dddd| d| d|	d   d|	d   dd|ddg}tdk	rtstdt|d< zNd}tjjdrtj }| jtjO  _tj||d tj	|}|j  W dytj| |r(tj| W n tk
r@   Y nX X |jj  }|j  |S )z!Render an image using Ghostscriptr   r   g      R@      Nnamewbd   i   ZpngalphaZppmrawr	   z-qz-g%dx%dz-r%fx%fz-dBATCHz	-dNOPAUSEz-dSAFERz	-sDEVICE=z-sOutputFile=z-c z
 translatez-fZshowpagez%Unable to locate Ghostscript on pathsr   )startupinfoi  )!inttempfilemkstemposclosehasattrpathexistsr   openseekioSEEK_ENDtellreadminlenwriter   r   r   r   r   r   ZSTARTUPINFOZdwFlagsZSTARTF_USESHOWWINDOWr   r   loadunlinkimcopy)tilesizefpscaletransparencydecoderoffsetdatalengthZbboxresZout_fdoutfileZinfile_tempinfileZin_fdffsizeZ
lengthfilesZdevicecommandr   Zout_imr0   r   r   r   Ghostscript@   s|    






rB   c               @   s.   e Zd ZdZdd Zejf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)r4   char)selfr4   r   r   r   __init__   s    zPSFile.__init__c             C   s   d | _ | jj|| d S )N)rD   r4   r&   )rE   r8   whencer   r   r   r&      s    zPSFile.seekc             C   sx   | j pdg}d | _ | jjd}x*|dkrHt|rH|j| | jjd}q W | jjd| _ | j dkrhd | _ dj|jdS )N    r   s   
zlatin-1)rD   r4   r*   r,   appendjoindecode)rE   r@   cr   r   r   readline   s    

zPSFile.readlineN)	__name__
__module____qualname____doc__rF   r'   SEEK_SETr&   rM   r   r   r   r   rC      s   rC   c             C   s(   | d d dkp&t | dko&t| dkS )N   s   %!PSl   P )r,   i32)prefixr   r   r   _accept   s    rV   c               @   sH   e Zd ZdZdZdZdddddZ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LZLABRGBCMYK)r   r   r   rS   c             C   s  | j | j\}}t| j}|j| d }d| _d| _|j }|jd}x|r|rt|dkrjt	dyt
j|}W n. tjk
r } zt	d|W Y d d }~X nX |r>|jdd\}	}
|
| j|	< |	dkryRdd	 |
j
 D }|d |d
  |d |d  f| _dd| j |||ffg| _W n tk
r:   Y nX nxtj|}|r|jd}	|	dkrdP |	d d dkr|	dd  | j|	d d < n
d| j|	< n|d
 dkrntd|j }|jd}|rJ|d d dkrJP qJW x|d d dkrt|dkrt	d|d d dkr|dd  j
d dd d \}}}}t|dkrRP y| jt| | _W n tk
r~   P Y nX t|t|f| _d S |j jd}|sP qW |stdd S )NrY   r   z
   znot an EPS filer   ZBoundingBoxc             S   s   g | ]}t t|qS r   )r   float).0ir   r   r   
<listcomp>   s    z&EpsImageFile._open.<locals>.<listcomp>r   r   epsZEndComments   zPS-Adobe	    %zbad EPS header   z%ImageData:   rS   z!cannot determine EPS bounding box)r   r   )r   r   )_find_offsetr4   rC   r&   mode_sizerM   stripr,   SyntaxErrorsplitmatchreerrorgroupinfor3   r2   	Exceptionfieldr   r   mode_map
ValueError)rE   r:   r8   r4   ZboxZs_rawr@   mekvxyZbimor   r   r   _open   sv    





"



$zEpsImageFile._openc             C   sj   |j d}|d d dkr6|jdtj |j }d}n,t|ddkrZt|d}t|d}ntd||fS )N   rS   s   %!PSr   l   P ra   znot an EPS file)r*   r&   r'   r(   r)   rT   rk   )rE   r4   r@   r:   r8   r   r   r   rg   4  s    

zEpsImageFile._find_offsetr   Fc             C   s@   | j s
d S t| j | j| j||| _| jj| _| jj| _g | _ d S )N)r2   rB   r3   r4   r0   rh   ri   )rE   r5   r6   r   r   r   r.   J  s    

zEpsImageFile.loadc             O   s   d S )Nr   )rE   argskwargsr   r   r   	load_seekS  s    zEpsImageFile.load_seekN)r   F)rN   rO   rP   rQ   formatformat_descriptionrt   r}   rg   r.   r   r   r   r   r   rW      s   d
	rW   c             C   s  | j   | jdkrd#}n(| jdkr(d$}n| jdkr8d%}ntd|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d f  |jd |j|d d  t|drJ|j  tj| |dd&| j dd fg |jd! |jd" t|dr|j  d S )'z*EPS Writer for the Python Imaging Library.rX   ra   r      imagerY   r      false 3 colorimagerZ   rS      false 4 colorimagezimage mode is not supporteds   %!PS-Adobe-3.0 EPSF-3.0
s   %%Creator: PIL 0.1 EpsEncode
s   %%%%BoundingBox: 0 0 %d %d
s   %%Pages: 1
s   %%EndComments
s   %%Page: 1 1
s   %%ImageData: %d %d s   %d %d 0 1 1 "%s"
s   gsave
s   10 dict begin
s   /buf %d string def
r   s   %d %d scale
s   %d %d 8
s   [%d 0 0 -%d 0 %d]
s+   { currentfile buf readhexstring pop } bind
r      
flushr`   Ns   
%%%%EndBinary
s   grestore end
)ra   r   r   )ra   r   r   )ra   rS   r   )r   r   )	r.   rh   ru   r-   r3   r"   r   r   _save)r0   r4   filenamer`   operatorr   r   r   r   ]  s@    









&


r   z.psz.epszapplication/postscript)r   r   r	   )r   F)r   ) r'   r    rn   r   r   r   rc   r   r   _binaryr   rT   compilerl   rs   r   r   r   shutilbinarywhichr   rB   rC   rV   rW   r   Zregister_openr   Zregister_saveZregister_extensionsZregister_mimer   r   r   r   <module>   s8   



a	 
8