o
    \"<fŽ.  ã                   @   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 e d¡Ze d¡ZdZej d¡rNd dlZdD ]Ze e¡durKeZ nq>d	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)Úi32lez^%%([^:]*):[ \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   úI/var/www/html/kck/venv/lib/python3.10/site-packages/PIL/EpsImagePlugin.pyÚhas_ghostscript3   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àtdƒ‚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 |¡ |r4t |¡ W w W w  ty?   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Úcommandr   Úout_imr5   r   r   r   ÚGhostscript@   sš   þ



û€øï



€ÿü
ÿÿ
rN   c                   @   s.   e Zd ZdZdd„ Zejfdd„Zdd„ ZdS )	ÚPSFilezP
    Wrapper for bytesio object that treats either CR or LF as end of line.
    c                 C   s   || _ d | _d S ©N)r9   Úchar)Úselfr9   r   r   r   Ú__init__¦   s   
zPSFile.__init__c                 C   s   d | _ | j ||¡ d S rP   )rQ   r9   r(   )rR   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   s   
zlatin-1)rQ   r9   r,   r.   ÚappendÚjoinÚdecode)rR   rJ   Úcr   r   r   Úreadline®   s   
þ
zPSFile.readlineN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rS   r)   ÚSEEK_SETr(   rZ   r   r   r   r   rO   ¡   s
    rO   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   (re   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   r`   c              
   C   s¤  |   | j¡\}}t| jƒ}| |¡ d }d| _d| _| ¡ }| d¡}|rà|rÊt|ƒdkr1t	dƒ‚zt
 |¡}W n tjyJ } zt	dƒ|‚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 nB ty   Y n:w n8t |¡}|r¿| d¡}	|	dkr£n=|	d d… dkr¹|	dd … | j|	d d… < nd| j|	< n|d dkrÆntdƒ‚| ¡ }| d¡}|rÞ|d d… dkrÞn|s%|d d… dkrIt|ƒdkrót	dƒ‚|d d… dkr6|dd …  
d d¡d d… \}}}}t|ƒdkrn3z
| jt|ƒ | _W n
 ty*   Y nw t|ƒt|ƒf| _d S | ¡  d¡}|sAn|d d… dksé|sPtdƒ‚d S )Nrj   )r   r   z
éÿ   únot an EPS filer   r   ÚBoundingBoxc                 S   s   g | ]}t t|ƒƒ‘qS r   )r   Úfloat)Ú.0Úir   r   r   Ú
<listcomp>÷   s    z&EpsImageFile._open.<locals>.<listcomp>r   r   Úeps©r   r   ÚEndCommentsé   zPS-Adobeé	   Ú ú%zbad EPS headeré   z%ImageData:é   r`   z!cannot determine EPS bounding box)Ú_find_offsetr9   rO   r(   ÚmodeÚ_sizerZ   Ústripr.   ÚSyntaxErrorÚsplitÚmatchÚreÚerrorÚgroupÚinfor8   r7   Ú	ExceptionÚfieldr   r   Úmode_mapÚ
ValueError)rR   r?   r=   r9   ÚboxÚs_rawrJ   ÚmÚeÚkÚvÚxÚyÚbiÚmor   r   r   Ú_openÐ   sˆ   



€ÿ
"
ÿÿö


Ð5$ÿëÿzEpsImageFile._openc                 C   sn   |  d¡}|d d… dkr| dtj¡ | ¡ }d}||fS t|dƒdkr3t|dƒ}t|dƒ}||fS tdƒ‚)Né    r`   ra   r   rb   rv   rm   )r,   r(   r)   r*   r+   rc   r€   )rR   r9   rJ   r?   r=   r   r   r   r|   4  s   
õ

þzEpsImageFile._find_offsetr   Fc                 C   s@   | j sd S t| j | j| j||ƒ| _| jj| _| jj| _g | _ d S rP   )r7   rN   r8   r9   r5   r}   r~   )rR   r:   r;   r   r   r   r3   J  s   


zEpsImageFile.loadc                 O   s   d S rP   r   )rR   ÚargsÚkwargsr   r   r   Ú	load_seekS  s   zEpsImageFile.load_seekN©r   F)r[   r\   r]   r^   ÚformatÚformat_descriptionr‰   r•   r|   r3   r™   r   r   r   r   rf   È   s    d
	rf   c                 C   s”  |   ¡  | jdkrd}n| jdkrd}n| jdkrd}ntdƒ‚|rR| 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.rh   )rv   r   s   imagerj   )rv   r   s   false 3 colorimagerk   )rv   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   ó   
Úflushrs   rt   Ns   
%%%%EndBinary
s   grestore end
)	r3   r}   rŠ   r/   r8   r$   rž   r   Ú_save)r5   r9   Úfilenamers   Úoperatorr   r   r   rŸ   ]  sB   









&




ÿrŸ   z.psz.epszapplication/postscriptrš   )r   ) r)   r"   rƒ   r   r   r    rx   r   r   Ú_binaryr   rc   Úcompiler   rˆ   r   r   r   ÚshutilÚbinaryÚwhichr   rN   rO   re   rf   rŸ   Úregister_openr›   Úregister_saveÚregister_extensionsÚregister_mimer   r   r   r   Ú<module>   s<   

þ
a	 
8