a
    7Xh,>                     @   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 ddlmZ edZedZdada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ejee eeje eejddg eejd dS )    N   )Image	ImageFile)i32le)	deprecatez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$c                  C   s   t d u rtjdrNtd u rHdd l} dD ]}| |d ur(|a qHq(data n4ztjddgtj	d da W n t
y   da Y n0 t duS )Nwinr   )Zgswin32cZgswin64cgsFr   z	--version)stdout)	gs_binarysysplatform
startswithgs_windows_binaryshutilwhich
subprocess
check_callDEVNULLOSError)r   binary r   W/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/PIL/EpsImagePlugin.pyhas_ghostscript,   s     
r   Fc                 C   s  t  sd}t|| d \}} }}|\}	}
t|p4d}|d | |d | f}d|d  |
d |
d   d|d  |
d |
d   f}t \}}t| d}t|drtj	|j
r|j
}nt \}}t| |}t|d	r}|dtj | }|d |}|dkrH|t|d
}|s.qH|t|8 }|| q
W d   n1 s^0    Y  |rrdnd}tdd| d| dddd| d| d|
d   d|
d   dd|ddg}zd}tjdrt }| jtjO  _tj||d t|}|  W zt| |r.t| W n tyD   Y n0 n6zt| |rdt| W n tyz   Y n0 0 |j ! }|  |S )z!Render an image using Ghostscriptz%Unable to locate Ghostscript on pathsr   r   g      R@      Nnamewbi  ZpngalphaZppmrawz-qz-g%dx%dz-r%fx%fz-dBATCHz	-dNOPAUSEz-dSAFERz	-sDEVICE=z-sOutputFile=z-c z
 translatez-fZshowpager   )startupinfo)"r   r   inttempfilemkstemposclosehasattrpathexistsr   openseekioSEEK_ENDtellreadminlenwriter
   r   r   r   r   ZSTARTUPINFOZdwFlagsZSTARTF_USESHOWWINDOWr   r   loadunlinkimcopy)tilesizefpscaletransparencymsgdecoderoffsetdatalengthZbboxresZout_fdoutfileZinfile_tempinfileZin_fdffsizeZ
lengthfilesZdevicecommandr   Zout_imr2   r   r   r   GhostscriptC   s    



.




rE   c                   @   s.   e Zd ZdZdd ZejfddZdd ZdS )	PSFilez
    Wrapper for bytesio object that treats either CR or LF as end of line.
    This class is no longer used internally, but kept for backwards compatibility.
    c                 C   s   t dddd || _d | _d S )NrF      zSIf you need the functionality of this class you will need to implement it yourself.)action)r   r6   char)selfr6   r   r   r   __init__   s    zPSFile.__init__c                 C   s   d | _ | j|| d S N)rI   r6   r(   )rJ   r;   whencer   r   r   r(      s    zPSFile.seekc                 C   st   | j pdg}d | _ | jd}|dvrFt|rF|| | jd}q| jd| _ | j dv rdd | _ d|dS )N    r      
latin-1)rI   r6   r,   r.   appendjoindecode)rJ   rC   cr   r   r   readline   s    

zPSFile.readlineN)	__name__
__module____qualname____doc__rK   r)   SEEK_SETr(   rU   r   r   r   r   rF      s   
rF   c                 C   s(   | d d dkp&t | dko&t| dkS )N      %!PS   P )r.   i32)prefixr   r   r   _accept   s    r`   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   r[   c                    s   j\ j d_d _td}t|}d}d}ddfdd} fdd	}jd
}|dkr|dkrqnb|dv r|dkrqhnN|dkr|d tdkrd}t	|n|r|  d}d}|d ||< |d
7 }qh|r|d tdks|d d dkr"|  d}qht
|d | d}	||	st|	}
|
r|
d
}|d d dkr~|dd  jd< n
dj|< n|	d dkrnd}t|n|d d dkrH|d| d d}dd |d d D \}}}}|d
krd_n<|dkrzj| _W n ty2   Y qY n0 nq||f_d S rr|d d dkrjqt
|d | d}	||	 n|d d d krdd}qh|  jsd!}t|d S )"Nrc      r   TFc                     s0   d j vrd} t| d j vr,d} t| d S )NPS-Adobez'EPS header missing "%!PS-Adobe" commentBoundingBoxz*EPS header missing "%%BoundingBox" comment)infoSyntaxError)r9   )rJ   r   r   check_required_header_comments   s    

z:EpsImageFile._open.<locals>.check_required_header_commentsc              
      s   zt | }W n4 tjyB } zd}t||W Y d }~n
d }~0 0 |r|dd\}}|j|< |dkr|dkrxdntjrrrzRdd |  D }|d |d	  |d
 |d  f_ddj  |ffg_	W n t
y   Y n0 dS d S )Nnot an EPS filer   r   rg   z(atend)Tc                 S   s   g | ]}t t|qS r   )r   float).0ir   r   r   
<listcomp>  rN   z=EpsImageFile._open.<locals>._read_comment.<locals>.<listcomp>r   r   epsr   r   )splitmatchreerrorri   grouprh   _sizer5   r4   	Exception)rC   mer9   kvZboxr=   r;   Zreading_trailer_commentsrJ   Ztrailer_reachedr   r   _read_comment   s0     
"
z)EpsImageFile._open.<locals>._read_commentr   rN   rO   %rk      s   %%EndCommentsrP      rf   	    zbad EPS headerrG   s   %ImageData:   c                 s   s   | ]}t |V  qd S rL   )r   )rm   valuer   r   r   	<genexpr>Y  s   z%EpsImageFile._open.<locals>.<genexpr>r[   1   s   %%EOFs	   %%Trailerz!cannot determine EPS bounding box)_find_offsetr6   r(   _moderw   	bytearray
memoryviewr,   ordri   strfieldrs   rv   rh   r   rr   mode_map
ValueError)rJ   Zbyte_arrZbytes_mv
bytes_readZreading_header_commentsrj   r~   byter9   rC   ry   r{   Zimage_data_valuescolumnsrowsZ	bit_depthZmode_idr   r}   r   _open   s    
$








zEpsImageFile._openc                 C   sl   | d}|dkr.|dtj | }d}n6t|dkrX| d}t|}t|d}nd}t|||fS )Nr[   r\   r   r]   r   rk   )r,   r(   r)   r*   r+   r^   ri   )rJ   r6   rC   r=   r;   r9   r   r   r   r   }  s    

zEpsImageFile._find_offsetr   Fc                 C   sD   | j r8t| j | j| j||| _| jj| _| jj| _g | _ tj	| S rL   )
r4   rE   r5   r6   r2   moder   rw   r   r0   )rJ   r7   r8   r   r   r   r0     s    

zEpsImageFile.loadc                 O   s   d S rL   r   )rJ   argskwargsr   r   r   	load_seek  s    zEpsImageFile.load_seekN)r   F)rV   rW   rX   rY   formatformat_descriptionr   r   r   r0   r   r   r   r   r   ra      s    %
	ra   c                 C   s  |    | jdkrd}n,| jdkr(d}n| jdkr8d}nd}t||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d f  |d ||d d  t|drN|  t| |dd| j ddfg |d |d  t|dr|  dS )!z*EPS Writer for the Python Imaging Library.rb   )r   r   s   imagerc   )r   r   s   false 3 colorimagerd   )r   r[   s   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   r   s   %d %d scale
s   %d %d 8
s   [%d 0 0 -%d 0 %d]
s+   { currentfile buf readhexstring pop } bind
r      
flushrp   rq   Ns   
%%%%EndBinary
s   grestore end
)	r0   r   r   r/   r5   r$   r   r   _save)r2   r6   filenamerp   operatorr9   r   r   r   r     sB    









&


r   z.psz.epszapplication/postscript)r   F)r   )r)   r"   rt   r   r   r    r   r   r   _binaryr   r^   Z
_deprecater   compilerr   r   r
   r   r   rE   rF   r`   ra   r   Zregister_openr   Zregister_saveZregister_extensionsZregister_mimer   r   r   r   <module>   s.   


`%	 V
4