o
    svXji:  ã                   @   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)Úgswin32cÚ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   úO/var/www/html/myproject/venv/lib/python3.10/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	ƒ¡}|s‹n|t|ƒ8 }| |¡ |dks€W d  ƒ n1 s¤w   Y  |r­d
nd}ddd| d|
 dddd|› �d|› �d|	d  › d|	d  › d�d|ddg}tdurætsâd}t|ƒ‚t|d< z?d}tj d¡rût ¡ }| jtjO  _tj||d� t 	|¡}| ¡  W zt |¡ |�rt |¡ W n& t�y%   Y nw zt |¡ |�r6t |¡ W w W w  t�yA   Y w w |j  ¡ }| ¡  |S )z!Render an image using Ghostscriptr   r   g      R@é   é   NÚnameÚwbi � ÚpngalphaÚppmrawr
   z-qz-g%dx%dz-r%fx%fz-dBATCHz	-dNOPAUSEz-dSAFERz	-sDEVICE=z-sOutputFile=z-cú z
 translatez-fÚ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   r   r   r   r   r   ÚSTARTUPINFOÚdwFlagsÚSTARTF_USESHOWWINDOWr   r   ÚloadÚunlinkÚimÚcopy)ÚtileÚsizeÚfpÚscaleÚtransparencyÚdecoderÚoffsetÚdataÚlengthÚbboxÚresÚout_fdÚoutfileÚinfile_tempÚinfileÚin_fdÚfÚfsizeÚ
lengthfileÚsÚdeviceÚcommandÚmsgr   Úout_imr6   r   r   r   ÚGhostscriptA   sœ   þ



û€øï



€ÿü
ÿÿ
rP   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 )NrQ   é   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)rT   r:   r)   )rU   r>   Ú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)rT   r:   r-   r/   ÚappendÚjoinÚdecode)rU   rK   Úcr   r   r   Úreadline·   s   
þ
zPSFile.readlineN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rV   r*   ÚSEEK_SETr)   r`   r   r   r   r   rQ   £   s
    
rQ   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   (rk   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 LibraryÚEPSzEncapsulated PostscriptÚLÚLABÚRGBÚCMYK)r   r   r   rf   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rìz)dd„ | ¡ D ƒ}|d |d  |d |d  fˆ _ddˆ j |||ffgˆ _W n‰ tyë   Y n�w 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"ˆ _d#}	t|	ƒ‚d S )$Nrp   éÿ   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)rN   ©rU   r   r   Úcheck_required_header_commentsç   s   

þz:EpsImageFile._open.<locals>.check_required_header_commentsr   rY   rZ   ú%únot an EPS fileFé   s   %%EndCommentsr[   r   rt   c                 S   s   g | ]}t t|ƒƒ‘qS r   )r    Úfloat)Ú.0Úir   r   r   Ú
<listcomp>*  s    z&EpsImageFile._open.<locals>.<listcomp>r   Úeps©r   r   é   rs   é	   Ú zbad EPS headerrR   s   %ImageData:é   c                 S   s   g | ]}t |ƒ‘qS r   )r    )r}   Úvaluer   r   r   r   O  s    ÿrf   Ú1)r   r   z!cannot determine EPS bounding box)Ú_find_offsetr:   r)   ÚmodeÚ_sizeÚ	bytearrayÚ
memoryviewr-   Úordrv   ÚstrÚsplitÚmatchÚreÚerrorÚgroupru   r9   r8   Ú	ExceptionÚfieldr   Úmode_mapÚ
ValueError)rU   r@   r>   Úbyte_arrÚbytes_mvÚ
bytes_readÚreading_commentsrx   ÚbyterN   rK   ÚmÚeÚkÚvÚboxÚimage_data_valuesÚcolumnsÚrowsÚ	bit_depthÚmode_idr   rw   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|ƒ‚)Nrf   rg   r   rh   r‚   rz   )r-   r)   r*   r+   r,   ri   rv   )rU   r:   rK   r@   r>   rN   r   r   r   rˆ   i  s   
ó

ýzEpsImageFile._find_offsetr   Fc                 C   sD   | j rt| j | j| j||ƒ| _| jj| _| jj| _g | _ tj | ¡S rW   )	r8   rP   r9   r:   r6   r‰   rŠ   r   r4   )rU   r;   r<   r   r   r   r4   €  s   

zEpsImageFile.loadc                 O   s   d S rW   r   )rU   ÚargsÚkwargsr   r   r   Ú	load_seek‰  s   zEpsImageFile.load_seekN©r   F)ra   rb   rc   rd   ÚformatÚformat_descriptionr–   r§   rˆ   r4   rª   r   r   r   r   rl   Ñ   s     
	rl   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.rn   )r‚   r   s   imagerp   )r‚   r   s   false 3 colorimagerq   )r‚   rf   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�   Ns   
%%%%EndBinary
s   grestore end
)	r4   r‰   r—   r0   r9   r%   r¯   r   Ú_save)r6   r:   Úfilenamer€   ÚoperatorrN   r   r   r   r°   ’  sD   









&




ÿr°   z.psz.epszapplication/postscriptr«   )r   )"r*   r#   r‘   r   r   r!   r„   r   r   Ú_binaryr   ri   Ú
_deprecater   Úcompiler�   r•   r   r   r   ÚshutilÚbinaryÚwhichr   rP   rQ   rk   rl   r°   Úregister_openr¬   Úregister_saveÚregister_extensionsÚregister_mimer   r   r   r   Ú<module>   s>   

þ
b%	 
B4