o
    'j6h@                     @  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 n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   )gswin32cgswin64cgsFr   z	--version)stdout)r   sysplatform
startswithgs_windows_binaryshutilwhich
subprocess
check_callDEVNULLOSError)r   binary r   a/var/www/html/chefvision.cloud.itp360.com/venv/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
}|sn|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  pngalphapnmrawz-qz-gdxz-rfz-dBATCHz	-dNOPAUSEz-dSAFERz	-sDEVICE=z-sOutputFile=z-c z
 translatez-f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   STARTUPINFOdwFlagsSTARTF_USESHOWWINDOWr   r   loadimcopyunlink)r   r    r"   r$   r&   msgr6   lengthbboxwidthheightres_xres_yout_fdoutfileinfile_tempinfilein_fdr0   fsize
lengthfilesdevicecommandr3   out_imr   r   r   GhostscriptD   s   	







ra   prefixbytesc                 C  s"   |  dpt| dkot| dkS )N   %!PS      P )r   rF   i32)rb   r   r   r   _accept   s   
rh   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 LibraryEPSzEncapsulated PostscriptLLABRGBCMYK)r   r(   r)   re   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rL|dkrK|rJ|  nn0|
dv rV|dkrUq6n&|dkrq|d tdkrhd}t||ro|  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< ndj|< n|d dkrn}d}t|nv|d d dkr|rd}q6|d| d d}dd |d d  D \}}}}|dkrd!_n|d"krzj| _W n ty   Y n3w n1||f}n)|d d# d$kr'n"r;r;t	|d | d}|	| n|d d d%krFdd}q7 sRd&}t||pd d'  d   d(  d  f_td)d*j || fg_d S )-Nrm      r   TFr	   ro   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)rO   )selfr   r   check_required_header_comments   s   

z:EpsImageFile._open.<locals>.check_required_header_commentsr]   r5   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(   rr   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errorrt   grouprs   	Exception)r]   merO   kvbounding_boxreading_trailer_commentsru   trailer_reachedr   r   read_comment   s0   

	z(EpsImageFile._open.<locals>.read_commentr       s   
%rw      s   %%EndCommentszlatin-1rq   	    zbad EPS header   s   %ImageData:   c                 s  s    | ]}t |V  qd S N)r%   )ry   valuer   r   r   	<genexpr>L  s    
z%EpsImageFile._open.<locals>.<genexpr>re   1      s   %%EOFs	   %%Trailerz!cannot determine EPS bounding boxr(   r)   epsr   r   r	   ro   )r]   r5   r	   r
   )_find_offsetr"   r@   _mode	bytearray
memoryviewrD   ordrt   r5   fieldr}   r   r   rs   r   r|   mode_map
ValueError_sizer   _Tiler    r   )ru   rP   offsetimagedata_sizebyte_arrbytes_mv
bytes_readreading_header_commentsrv   r   byterO   r]   r   r   image_data_valuescolumnsrows	bit_depthmode_idr   r   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|)Nre   rd   r   rf   r   rw   )rD   r@   rA   rB   rC   rg   rt   )ru   r"   r]   rP   r   rO   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   ra   r    r"   rL   moder   r   r   rK   )ru   r$   r&   r   r   r   rK     s   

zEpsImageFile.loadposc                 C  s   d S r   r   )ru   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	   ro   )__name__
__module____qualname____doc__formatformat_descriptionr   r   r   rK   r   r   r   r   r   ri      s    
 
9ri   rL   Image.Imagefilenamestr | bytesr   ro   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.rk   )r   r   s   imagerm   )r   r)   s   false 3 colorimagern   )r   re   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)
rK   r   r   rG   r    r<   r   r   _saver   )rL   r"   r   r   operatorrO   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'   )rb   rc   r	   r
   )r   )
rL   r   r"   r#   r   r   r   r%   r	   ro   ) 
__future__r   rA   r:   r~   r   r   r8   typingr   r   r   r   _binaryr   rg   compiler|   r   r   __annotations__r   r   ra   rh   ri   r   register_openr   register_saveregister_extensionsregister_mimer   r   r   r   <module>   s4   



h l4