U
    ޟi=                     @  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	m
Z
 ddlmZ ddlmZ edZedZdad	ed
< 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 )    )annotationsN   )Image	ImageFile)i32le)	deprecatez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$zstr | bool | None	gs_binaryc                  C  s   t d krtjdrNtd krHdd l} dD ]}| |d k	r(|a qHq(data n6ztjddgtj	d da W n t
k
r   da Y nX t dk	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   H/var/www/SKSBV.IN/venv/lib/python3.8/site-packages/PIL/EpsImagePlugin.pyhas_ghostscript-   s     
r   Fc                 C  s\  t  sd}t|| d \}} }}|\}	}
t|p4d}|d | }|d | }d| |
d |
d   }d| |
d |
d   }t \}}t| d}t|drtj	|j
r|j
}nt \}}t| |}t|d	h}|dtj | }|d |}|dkr@|t|d
}|s&q@|t|8 }|| qW 5 Q R X |rTd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}zNd}tjdrt }| jtjO  _tj||d t|}|  W 5 zt| |r*t| W n tk
rB   Y nX X |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dxz-r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   unlinkr   r   r   r   ZSTARTUPINFOZdwFlagsZSTARTF_USESHOWWINDOWr   r   loadimcopy)tilesizefpscaletransparencymsgdecoderoffsetdatalengthZbboxwidthheightZres_xZres_yZout_fdoutfileZinfile_tempinfileZin_fdr    fsizeZ
lengthfilesZdevicecommandr"   Zout_imr6   r   r   r   GhostscriptD   s~    






rI   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 )NrJ      zSIf you need the functionality of this class you will need to implement it yourself.)action)r   r:   char)selfr:   r   r   r   __init__   s    zPSFile.__init__c                 C  s   d | _ | j|| d S N)rM   r:   r,   )rN   r?   whencer   r   r   r,      s    zPSFile.seekc                 C  st   | j pdg}d | _ | jd}|dkrFt|rF|| | jd}q| jd| _ | j dkrdd | _ d|dS )N    r      
latin-1)rM   r:   r0   r2   appendjoindecode)rN   rG   cr   r   r   readline   s    

zPSFile.readlineN)	__name__
__module____qualname____doc__rO   r-   SEEK_SETr,   rY   r   r   r   r   rJ      s   
rJ   c                 C  s(   | d d dkp&t | dko&t| dkS )N      %!PS   P )r2   i32)prefixr   r   r   _accept   s    rd   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k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rJ|d| d d}dd |d d D \}}}}|d
krd_n>|dkrzj| _W n tk
r4   Y qY nX nq||f_d S |d d dkrbqn>rrt
|d | d}	||	 n|d d d krdd}qh|  jsd!}t|d S )"Nrg      r   TFc                    s0   d j krd} t| d j kr,d} t| d S )NPS-Adobez'EPS header missing "%!PS-Adobe" commentBoundingBoxz*EPS header missing "%%BoundingBox" comment)infoSyntaxError)r=   )rN   r   r   check_required_header_comments   s    

z:EpsImageFile._open.<locals>.check_required_header_commentsc              
     s   zt | }W n2 tjk
r@ } zd}t||W 5 d }~X Y nX |r|dd\}}|j|< |dkr|dkrvdnvjrrrzRdd |  D }|d |d	  |d
 |d  f_ddj  |ffg_	W n t
k
r   Y nX dS d S )Nnot an EPS filer   r   rk   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>r   r   epsr   r   )splitmatchreerrorrm   grouprl   _sizer9   r8   	Exception)rG   mer=   kvboxrA   r?   Zreading_trailer_commentsrN   Ztrailer_reachedr   r   _read_comment   s0    
"
z)EpsImageFile._open.<locals>._read_commentr   rR   rS   %ro      s   %%EndCommentsrT      rj   	    zbad EPS headerrK   s   %ImageData:   c                 s  s   | ]}t |V  qd S rP   )r#   )rq   valuer   r   r   	<genexpr>W  s    z%EpsImageFile._open.<locals>.<genexpr>r_   1   s   %%EOFs	   %%Trailerz!cannot determine EPS bounding box)_find_offsetr:   r,   _moder{   	bytearray
memoryviewr0   ordrm   strfieldrw   rz   rl   r   rv   mode_map
ValueError)rN   Zbyte_arrZbytes_mvZ
bytes_readZreading_header_commentsrn   r   byter=   rG   r}   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   ra   r   ro   )r0   r,   r-   r.   r/   rb   rm   )rN   r:   rG   rA   r?   r=   r   r   r   r   w  s    

zEpsImageFile._find_offsetr   Fc                 C  sD   | j r8t| j | j| j||| _| jj| _| jj| _g | _ tj	| S rP   )
r8   rI   r9   r:   r6   moder   r{   r   r5   )rN   r;   r<   r   r   r   r5     s    

zEpsImageFile.loadc                 C  s   d S rP   r   )rN   posr   r   r   	load_seek  s    zEpsImageFile.load_seekN)r   F)rZ   r[   r\   r]   formatformat_descriptionr   r   r   r5   r   r   r   r   r   re      s    !
	re   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.rf   )r   r   s   imagerg   )r   r   s   false 3 colorimagerh   )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      
flushrt   ru   Ns   
%%%%EndBinary
s   grestore end
)	r5   r   r   r3   r9   r(   r   r   _save)r6   r:   filenamert   operatorr=   r   r   r   r     sB    









&


r   z.psz.epszapplication/postscript)r   F)r   )!
__future__r   r-   r&   rx   r   r   r$   r   r   r   _binaryr   rb   Z
_deprecater   compilerv   r   r   __annotations__r   r   rI   rJ   rd   re   r   Zregister_openr   Zregister_saveZregister_extensionsZregister_mimer   r   r   r   <module>   s2    


]%	 R
4