o
     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Z		d.d/ddZd0ddZG d d! d!ejZd1d2d(d)Zeejee eeje eejd*d+g eejd, dS )3    )annotationsN)IO   )Image	ImageFile)i32lez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$zstr | bool | None	gs_binaryreturnboolc                  C  s   t d u rJtjdr*td u r$dd l} dD ]}| |d ur!|a q$qdata t duS ztjddgtj	d da W t duS  t
yI   da Y t duS w 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   X/home/www/facesmatcher.com/frenv_anti/lib/python3.10/site-packages/PIL/EpsImagePlugin.pyhas_ghostscript-   s*   r   Ftilelist[ImageFile._Tile]sizetuple[int, int]fp	IO[bytes]scaleinttransparencyImage.core.ImagingCorec                 C  s  t  s	d}t|tttsJ | d j}t|tsJ |\}}t|p%d}|d | }	|d | }
d|	 |d |d   }d|
 |d |d   }t	 \}}t
| d}t|drgt
j|jrg|j}nRt	 \}}t
| |}t|d	8}|dtj | }|d |}|dkr|t|d
}|sq|t|8 }|| |dksW d   n1 sw   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}zwd}tjdr	t }| jtjO  _tj ||d t!|-}|"  |j#$ W  d   W zt
%| |r6t
%| W S W S  tyA   Y S w 1 sFw   Y  W zt
%| |r]t
%| W dS W dS  tyj   Y dS w zt
%| |r{t
%| W w W w  ty   Y w w )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$   msgr1   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   	







rP   prefixbytesc                 C  s"   |  dpt| dkot| dkS )N   %!PS      P )r   rA   i32)rQ   r   r   r   _accept   s   
rW   c                   @  sR   e Zd ZdZdZdZdddddZdddZd ddZ	d!d"ddZ	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'   rT   r	   Nonec                   s    j\}}j| d_d  d }td}t|}d}d}ddd+fdd	}d, fdd}		 jd}
|
dkrM|dkrL|rJ|  qRn0|
dv rW|dkrVq6n&|dkrr|d tdkrid}t||rp|  d}d}|
d ||< |d7 }q6|r|d tdks|d d dkr|  d}q6t	|d | d}|	|st
|}|r|d}|dr|dd  jd< qOdj|< qO|d dkr͐qOd}t|n{|d d dkr%|rd}q6|d| d d}dd |d d  D \}}}}|dkrd!_n|d"krz	j| _W q  ty   Y qRw qR||f}n*|d d# d$kr0qRrDrDt	|d | d}|	| n|d d d%krOdd}q7 s[d&}t||pm d'  d   d(  d  f_td)d*j || fg_d S )-NrZ      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)rG   )selfr   r   check_required_header_comments   s   

z:EpsImageFile._open.<locals>.check_required_header_commentsrN   r0   r
   c              
     s   zt | }W n tjy } zd}t||d }~ww |s dS |dd\}}|j|< |dkrV|dkr9ddS  r?rVrVzdd	 |  D  W dS  tyU   Y dS w 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>   s    z<EpsImageFile._open.<locals>.read_comment.<locals>.<listcomp>)splitmatchreerrorra   groupr`   	Exception)rN   merG   kvZbounding_boxZreading_trailer_commentsrb   Ztrailer_reachedr   r   read_comment   s0   

	z(EpsImageFile._open.<locals>.read_commentr       s   
%rd      s   %%EndCommentszlatin-1r^   	    zbad EPS header   s   %ImageData:   c                 s  s    | ]}t |V  qd S N)r#   )rf   valuer   r   r   	<genexpr>L  s    
z%EpsImageFile._open.<locals>.<genexpr>rT   1      s   %%EOFs	   %%Trailerz!cannot determine EPS bounding boxr&   r'   epsr   r   r	   r\   )rN   r0   r	   r
   )_find_offsetr    r;   _mode	bytearray
memoryviewr?   ordra   r0   fieldrj   rm   r   r`   r   ri   mode_map
ValueError_sizer   _Tiler   r   )rb   rH   offsetZimagedata_sizeZbyte_arrZbytes_mvZ
bytes_readZreading_header_commentsrc   rt   byterG   rN   ro   rq   Zimage_data_valuescolumnsrowsZ	bit_depthZmode_idr   rs   r   _open   s    







o
zEpsImageFile._openr    r!   r   c                 C  sp   | d}|dkr|dtj | }d}||fS t|dkr2| d}t|}t|d}||fS d}t|)NrT   rS   r   rU   r   rd   )r?   r;   r<   r=   r>   rV   ra   )rb   r    rN   rH   r   rG   r   r   r   r   w  s   


zEpsImageFile._find_offsetr   Fr"   r#   r$   r
   Image.core.PixelAccess | Nonec                 C  sD   | j rt| j | j| j||| _| jj| _| jj| _g | _ tj	| S r|   )
r   rP   r   r    rD   moder   r   r   rC   )rb   r"   r$   r   r   r   rC     s   

zEpsImageFile.loadposc                 C  s   d S r|   r   )rb   r   r   r   r   	load_seek  s   zEpsImageFile.load_seekNr   )r    r!   r	   r   r   F)r"   r#   r$   r
   r	   r   )r   r#   r	   r\   )__name__
__module____qualname____doc__formatformat_descriptionr   r   r   rC   r   r   r   r   r   rX      s    
 
9rX   rD   Image.Imagefilenamestr | bytesr   r\   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| |t	dd| j g |d |d t|dr|  d S d S )!z*EPS Writer for the Python Imaging Library.rY   )r   r   s   imagerZ   )r   r'   s   false 3 colorimager[   )r   rT   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)
rC   r   r   rB   r   r7   r   r   _saver   )rD   r    r   r   operatorrG   r   r   r   r     sD   









&




r   z.psz.epszapplication/postscript)r	   r
   r   )r   r   r   r   r    r!   r"   r#   r$   r
   r	   r%   )rQ   rR   r	   r
   )r   )
rD   r   r    r!   r   r   r   r#   r	   r\   ) 
__future__r   r<   r5   rk   r   r   r3   typingr   ry   r   r   _binaryr   rV   compileri   r   r   __annotations__r   r   rP   rW   rX   r   Zregister_openr   Zregister_saveZregister_extensionsZregister_mimer   r   r   r   <module>   s4   



h l4