o
    6d<                     @   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 ddlmZ edZedZdZejdrTd dlZd	D ]ZeedurQeZ nqDd
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)i32le)	deprecatez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$win)Zgswin32cZ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   iC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\PIL/EpsImagePlugin.pyhas_ghostscript4   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szt| |rt| W n	 ty   Y nw d}t|t|d< z@d}tjdrt }| jtjO  _tj||d t	|}|  W zt| |r3t| W n& ty>   Y nw zt| |rOt| W w W w  tyZ   Y w w |j  }|  |S )z!Render an image using Ghostscriptr   r   g      R@      Nnamewbi  ZpngalphaZppmrawr   z-qz-g%dx%dz-r%fx%fz-dBATCHz	-dNOPAUSEz-dSAFERz	-sDEVICE=z-sOutputFile=z-c z
 translatez-fZ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
   unlinkr   r   r   r   r   STARTUPINFOdwFlagsSTARTF_USESHOWWINDOWr   r   loadimcopy)tilesizefpscaletransparencydecoderoffsetdatalengthZbboxresZout_fdoutfileZinfile_tempinfileZin_fdffsizeZ
lengthfilesZdevicecommandmsgr   Zout_imr1   r   r   r   GhostscriptA   s   











rD   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 )NrE      zSIf you need the functionality of this class you will need to implement it yourself.)action)r   r5   char)selfr5   r   r   r   __init__   s   
zPSFile.__init__c                 C   s   d | _ | j|| d S N)rH   r5   r$   )rI   r9   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      
latin-1)rH   r5   r(   r*   appendjoindecode)rI   rA   cr   r   r   readline   s   

zPSFile.readlineN)	__name__
__module____qualname____doc__rJ   r%   SEEK_SETr$   rT   r   r   r   r   rE      s
    
rE   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   (r_   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   rZ   c              
      s     j\}} j| d _d  _td}t|}d}d} fdd}	  jd}|dkr8|dkr7n8n0|d	v rB|dkrAq&n&|dkr]|d td
krTd}	t	|	|r[|  d}d}|d ||< |d7 }q&|r!|d td
ks{|d d dkr|  d}q&t
|d | d}
zt|
}W n tjy } 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 n ty   Y nw nt|
}|r|d}|d d dkr|dd   jd< n_d j|< nY|
d d
krnQd}	t|	|d d dkrl|d| d d}dd |d d  D \}}}}|dkrLd! _n|dkrdz j|  _W n tyc   Y nw n
||f _d S d}q'|   js|d"}	t|	d S )#Nrb      r   Tc                     s0   d j vrd} t| d j vrd} t| d S )NPS-Adobez'EPS header missing "%!PS-Adobe" commentBoundingBoxz*EPS header missing "%%BoundingBox" comment)infoSyntaxError)rC   rI   r   r   check_required_header_comments   s   

z:EpsImageFile._open.<locals>.check_required_header_commentsr   rM   rN   %not an EPS fileF   s   %%EndCommentsrO   r   rf   c                 S   s   g | ]}t t|qS r   )r   float).0ir   r   r   
<listcomp>1  s    z&EpsImageFile._open.<locals>.<listcomp>r   epsr   r      re   	    zbad EPS headerrF   s   %ImageData:   c                 S   s   g | ]}t |qS r   )r   )ro   valuer   r   r   rq   V  s    rZ   1z!cannot determine EPS bounding box)_find_offsetr5   r$   mode_size	bytearray
memoryviewr(   ordrh   strsplitmatchreerrorgrouprg   r4   r3   	Exceptionfieldr   mode_map
ValueError)rI   r;   r9   Zbyte_arrZbytes_mvZ
bytes_readZreading_commentsrj   byterC   rA   mekvboxZimage_data_valuescolumnsrowsZ	bit_depthZmode_idr   ri   r   _open   s    

"






szEpsImageFile._openc                 C   sp   | d}|dkr|dtj | }d}||fS t|dkr2| d}t|}t|d}||fS d}t|)NrZ   r[   r   r\   rt   rl   )r(   r$   r%   r&   r'   r]   rh   )rI   r5   rA   r;   r9   rC   r   r   r   rz   o  s   


zEpsImageFile._find_offsetr   Fc                 C   sD   | j rt| j | j| j||| _| jj| _| jj| _g | _ tj| S rK   )	r3   rD   r4   r5   r1   r{   r|   r   r0   )rI   r6   r7   r   r   r   r0     s   

zEpsImageFile.loadc                 O   s   d S rK   r   )rI   argskwargsr   r   r   	load_seek  s   zEpsImageFile.load_seekNr   F)rU   rV   rW   rX   formatformat_descriptionr   r   rz   r0   r   r   r   r   r   r`      s     
	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| |dd| j ddfg |d |d  t|dr|  dS dS )!z*EPS Writer for the Python Imaging Library.ra   )rt   r   s   imagerb   )rt   r   s   false 3 colorimagerc   )rt   rZ   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      
flushrr   rs   Ns   
%%%%EndBinary
s   grestore end
)	r0   r{   r   r+   r4   r    r   r   _save)r1   r5   filenamerr   operatorrC   r   r   r   r     sD   









&




r   z.psz.epszapplication/postscriptr   )r   )"r%   r   r   r   r   r   rv   r   r   _binaryr   r]   Z
_deprecater   compiler   r   r
   r   r   shutilbinarywhichr   rD   rE   r_   r`   r   Zregister_openr   Zregister_saveZregister_extensionsZregister_mimer   r   r   r   <module>   s>   


i%	 
A4