a
    h@                     @  s.  U d dl mZ 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	 ddl
mZmZ ddlmZ edZedZdad	ed
< daddddZd'dddddddddZdddddZG dd dejZd(ddddd 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 ))    )annotationsN)IO   )Image	ImageFile)i32lez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$zstr | bool | None	gs_binaryboolreturnc                  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)r   sysplatform
startswithgs_windows_binaryshutilwhich
subprocess
check_callDEVNULLOSError)r   binary r   @/var/www/auris/lib/python3.9/site-packages/PIL/EpsImagePlugin.pyhas_ghostscript-   s     
r   Fzlist[ImageFile._Tile]tuple[int, int]	IO[bytes]intzImage.core.ImagingCore)tilesizefpscaletransparencyr   c                 C  s  t  sd}t|ttts J | d j}t|ts8J |\}}t|pJd}|d | }	|d | }
d|	 |d |d   }d|
 |d |d   }t	 \}}t
| d}t|drt
j|jr|j}nt	 \}}t
| |}t|d	r}|dtj | }|d |}|dkrV|t|d
}|s<qV|t|8 }|| qW d   n1 sl0    Y  |rd}nd}tdd|	dd|
dd|dd|ddddd| d| d|d   d|d   dd|ddg}zd}tjdrt }| jtjO  _tj ||d t!|X}|"  |j#$ W  d   W zt
%| |rnt
%| W S  ty   Y S 0 S 1 s0    Y  W zt
%| |rt
%| W n ty   Y n0 n6zt
%| |rt
%| W n ty   Y n0 0 dS )z!Render an image using Ghostscriptz%Unable to locate Ghostscript on pathsr   r   g      R@      Nnamewbi  ZpngalphaZpnmrawz-qz-gdxz-rfz-dBATCHz	-dNOPAUSEz-dSAFERz	-sDEVICE=z-sOutputFile=z-c z
 translatez-fZshowpager   )startupinfo)&r   r   
isinstancer   strargstupler   tempfilemkstemposclosehasattrpathexistsr'   openseekioSEEK_ENDtellreadminlenwriter   r   r   r   ZSTARTUPINFOZdwFlagsZSTARTF_USESHOWWINDOWr   r   loadimcopyunlink)r    r!   r"   r#   r$   msgr0   lengthZbboxwidthheightZres_xZres_yZout_fdoutfileZinfile_tempinfileZin_fdr+   fsizeZ
lengthfilesZdevicecommandr-   Zout_imr   r   r   GhostscriptD   s    	




.


rO   bytes)prefixr   c                 C  s"   |  dp t| dko t| dkS )N   %!PS      P )r   r@   i32)rQ   r   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
ddZdddddZdddddddZ	dd	d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   Noner
   c                   s   j\}}j| d_d  d }td}t|}d}d}ddddfdd	}d
dd fdd}	jd}
|
dkr|dkr|r|  qnb|
dv r|dkrqvnN|dkr|d tdkrd}t|n|r|  d}d}|
d ||< |d7 }qv|r|d tdks.|d d dkr:|  d}qvt	|d | d}|	|st
|}|r|d}|dr|dd  jd< n
dj|< n|d dkrnd}t|n|d d dkrb|rd}qv|d| d d}dd |d d  D \}}}}|dkrd!_n<|d"krzj| _W n tyP   Y qY n0 nq||f}nV|d d# d$krzqn>rrt	|d | d}|	| n|d d d%krdd}qv sd&}t||p d'  d   d(  d  f_td)d*j || fg_d S )+NrY      r   TFr[   r
   c                    s0   d j vrd} t| d j vr,d} t| dS )z
            The EPS specification requires that some headers exist.
            This should be checked when the header comments formally end,
            when image data starts, or when the file ends, whichever comes first.
            PS-Adobez'EPS header missing "%!PS-Adobe" commentBoundingBoxz*EPS header missing "%%BoundingBox" commentN)infoSyntaxError)rF   )selfr   r   check_required_header_comments   s    

z:EpsImageFile._open.<locals>.check_required_header_commentsr/   r	   )rM   r   c              
     s   zt | }W n4 tjyB } zd}t||W Y d }~n
d }~0 0 |sLdS |dd\}}|j|< |dkr|dkr|dn6 rrrzdd	 |  D  W n ty   Y n0 dS )
Nnot an EPS fileFr   r%   r^   z(atend)Tc                 S  s   g | ]}t t|qS r   )r   float).0ir   r   r   
<listcomp>       z<EpsImageFile._open.<locals>.read_comment.<locals>.<listcomp>)splitmatchreerrorr`   groupr_   	Exception)rM   merF   kvZbounding_boxZreading_trailer_commentsra   Ztrailer_reachedr   r   read_comment   s$     
z(EpsImageFile._open.<locals>.read_commentr   rh   s   
%rc      s   %%EndCommentszlatin-1r]   	    zbad EPS header   s   %ImageData:   c                 s  s   | ]}t |V  qd S N)r   )re   valuer   r   r   	<genexpr>L  s   z%EpsImageFile._open.<locals>.<genexpr>rS   1      s   %%EOFs	   %%Trailerz!cannot determine EPS bounding boxr%   r&   epsr   r   )_find_offsetr"   r:   _mode	bytearray
memoryviewr>   ordr`   r/   fieldrj   rm   r   r_   r   ri   mode_map
ValueError_sizer   _Tiler!   r    )ra   rG   offsetZimagedata_sizeZbyte_arrZbytes_mv
bytes_readZreading_header_commentsrb   rt   byterF   rM   ro   rq   Zimage_data_valuescolumnsrowsZ	bit_depthZmode_idr   rs   r   _open   s    
$








zEpsImageFile._openr   r   )r"   r   c                 C  sl   | d}|dkr.|dtj | }d}n6t|dkrX| d}t|}t|d}nd}t|||fS )NrS   rR   r   rT   r   rc   )r>   r:   r;   r<   r=   rU   r`   )ra   r"   rM   rG   r   rF   r   r   r   r   w  s    

zEpsImageFile._find_offsetr   Fr   r	   zImage.core.PixelAccess | None)r#   r$   r   c                 C  sD   | j r8t| j | j| j||| _| jj| _| jj| _g | _ tj	| S r{   )
r    rO   r!   r"   rC   moder   r   r   rB   )ra   r#   r$   r   r   r   rB     s    

zEpsImageFile.load)posr   c                 C  s   d S r{   r   )ra   r   r   r   r   	load_seek  s    zEpsImageFile.load_seekN)r   F)__name__
__module____qualname____doc__formatformat_descriptionr   r   r   rB   r   r   r   r   r   rW      s    9 rW   zImage.Imagezstr | bytesr[   )rC   r"   filenamer   r   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| |t	dd| j g |d |d t|dr|  d S )!z*EPS Writer for the Python Imaging Library.rX   )r   r   s   imagerY   )r   r&   s   false 3 colorimagerZ   )r   rS   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%      
flushr   r   s   
%%%%EndBinary
s   grestore end
N)
rB   r   r   rA   r!   r6   r   r   _saver   )rC   r"   r   r   operatorrF   r   r   r   r     sB    









&


r   z.psz.epszapplication/postscript)r   F)r   ) 
__future__r   r;   r4   rk   r   r   r2   typingr   rx   r   r   _binaryr   rU   compileri   r   r   __annotations__r   r   rO   rV   rW   r   Zregister_openr   Zregister_saveZregister_extensionsZregister_mimer   r   r   r   <module>   s2   

  h l4