o
    i/                     @   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dZedZdZejdrNd dlZdD ]ZeedurKeZ nq>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ejee eeje eejddg eejd dS )    N   )Image	ImageFile)i32lez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$win)gswin32cgswin64cgsFc                   C   sH   t rdS tjds"ztjddgtjd W dS  ty!   Y dS w dS )NTr   r	   z	--version)stdoutF)gs_windows_binarysysplatform
startswith
subprocess
check_callDEVNULLOSError r   r   M/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/PIL/EpsImagePlugin.pyhas_ghostscript3   s   r   c                 C   s  | d \}} }}|\}}	t |pd}|d | |d | f}d|d  |	d |	d   d|d  |	d |	d   f}
t \}}t| d}t|drWtj|jrW|j}nRt \}}t| |}t	|d8}|
dtj | }|
d |}|dkr|t|d	}|sn|t|8 }|| |dksW d   n1 sw   Y  |rd
nd}ddd| d|
 dddd| d| d|	d   d|	d   dd|ddg}tdurtsd}t|t|d< z?d}tjdrt }| jtjO  _tj||d t	|}|  W zt| |rt| W n& ty%   Y nw zt| |r6t| W w W w  tyA   Y w w |j  }|  |S )z!Render an image using Ghostscriptr   r   g      R@      Nnamewbi  pngalphappmrawr	   z-qz-g%dx%dz-r%fx%fz-dBATCHz	-dNOPAUSEz-dSAFERz	-sDEVICE=z-sOutputFile=z-c z
 translatez-fshowpagez%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   r   r   r   r   r   STARTUPINFOdwFlagsSTARTF_USESHOWWINDOWr   r   loadunlinkimcopy)tilesizefpscaletransparencydecoderoffsetdatalengthbboxresout_fdoutfileinfile_tempinfilein_fdffsize
lengthfilesdevicecommandmsgr   out_imr5   r   r   r   Ghostscript@   s   









rO   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)r9   char)selfr9   r   r   r   __init__   s   
zPSFile.__init__c                 C   s   d | _ | j|| d S rQ   )rR   r9   r(   )rS   r=   whencer   r   r   r(      s   zPSFile.seekc                 C   s   | j pdg}d | _ | jd}|dvr*t|r*|| | jd}|dvr*t|s| jd| _ | j dv r9d | _ d|dS )N    r   s   
zlatin-1)rR   r9   r,   r.   appendjoindecode)rS   rJ   cr   r   r   readline   s   

zPSFile.readlineN)	__name__
__module____qualname____doc__rT   r)   SEEK_SETr(   r[   r   r   r   r   rP      s
    rP   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   (rf   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 LibraryEPSzEncapsulated PostscriptLLABRGBCMYK)r   r   r   ra   c              
   C   s  |  | j\}}t| j}|| d }d| _d| _| }|d}|r|rt|dkr3d}t	|zt
|}W n tjyN }	 zd}t	||	d }	~	ww |r|dd\}
}|| j|
< |
dkrz)d	d
 |
 D }|d |d  |d |d  f| _dd| j |||ffg| _W nD ty   Y n<w n:t|}|r|d}
|
dkrn?|
d d dkr|
dd  | j|
d d < nd| j|
< n|d dkrnd}t|| }|d}|r|d d dkrn|s%|d d dkr\t|dkrd}t	||d d dkrI|dd  
d dd d \}}}}t|dkr!d| _nt|dkr=z
| jt| | _W n ty<   Y n w nt|t|f| _d S | d}|sTn|d d dks|sed}t|d S )Nrk   )r   r   z
   not an EPS filer   r   BoundingBoxc                 S   s   g | ]}t t|qS r   )r   float).0ir   r   r   
<listcomp>   s    z&EpsImageFile._open.<locals>.<listcomp>r   r   epsr   r   EndComments   zPS-Adobe	    %zbad EPS header   z%ImageData:   ra   1z!cannot determine EPS bounding box)_find_offsetr9   rP   r(   mode_sizer[   stripr.   SyntaxErrorsplitmatchreerrorgroupinfor8   r7   	Exceptionfieldr   r   mode_map
ValueError)rS   r?   r=   r9   boxs_rawrJ   rM   mekvxybimor   r   r   _open   s   




"



8$zEpsImageFile._openc                 C   sr   | d}|d d dkr|dtj | }d}||fS t|ddkr3t|d}t|d}||fS d}t|)N   ra   rb   r   rc   rw   rn   )r,   r(   r)   r*   r+   rd   r   )rS   r9   rJ   r?   r=   rM   r   r   r   r~   =  s   


zEpsImageFile._find_offsetr   Fc                 C   sD   | j rt| j | j| j||| _| jj| _| jj| _g | _ tj| S rQ   )	r7   rO   r8   r9   r5   r   r   r   r3   )rS   r:   r;   r   r   r   r3   T  s   

zEpsImageFile.loadc                 O   s   d S rQ   r   )rS   argskwargsr   r   r   	load_seek]  s   zEpsImageFile.load_seekNr   F)r\   r]   r^   r_   formatformat_descriptionr   r   r~   r3   r   r   r   r   r   rg      s    l
	rg   c                 C   s  |    | jdkrd}n| jdkrd}n| jdkrd}nd}t||rT|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r|  t| |dd| j ddfg |d |d  t|dr|  dS dS )!z*EPS Writer for the Python Imaging Library.ri   )rw   r   s   imagerk   )rw   r   s   false 3 colorimagerl   )rw   ra   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      
flushrt   ru   Ns   
%%%%EndBinary
s   grestore end
)	r3   r   r   r/   r8   r$   r   r   _save)r5   r9   filenamert   operatorrM   r   r   r   r   g  sD   









&




r   z.psz.epszapplication/postscriptr   )r   ) r)   r"   r   r   r   r    ry   r   r   _binaryr   rd   compiler   r   r   r   r   shutilbinarywhichr   rO   rP   rf   rg   r   register_openr   register_saveregister_extensionsregister_mimer   r   r   r   <module>   s<   


b	 
9