o
    ÒèFhÁ=  ã                   @  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 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   úK/var/www/html/loop/nvenv/lib/python3.10/site-packages/PIL/EpsImagePlugin.pyÚhas_ghostscript-   s*   þûþþr   Fc                 C  sœ  t ƒ s	d}t|ƒ‚| d \}} }}|\}	}
t|ƒpd}|d | }|d | }d| |
d |
d   }d| |
d |
d   }t ¡ \}}t |¡ d}t|dƒr\tj 	|j
¡r\|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}tdd|d›d|d›�d|d›d|d›�dddd|› �d|› �d|
d  › d|
d  › d�d|ddg}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 |¡ |�r7t |¡ W w W w  t�yB   Y w w |j  !¡ }| ¡  |S )z!Render an image using Ghostscriptz%Unable to locate Ghostscript on pathsr   r   g      R@é   é   NÚnameÚwbi � ÚpngalphaÚppmrawz-qz-gÚdÚxz-rÚfz-dBATCHz	-dNOPAUSEz-dSAFERz	-sDEVICE=z-sOutputFile=z-cú z
 translatez-fÚshowpager	   )Ústartupinfo)"r   r   ÚintÚtempfileÚmkstempÚosÚcloseÚhasattrÚpathÚexistsr   ÚopenÚseekÚioÚSEEK_ENDÚtellÚreadÚminÚlenÚwriter   r   r   r   r   ÚSTARTUPINFOÚdwFlagsÚSTARTF_USESHOWWINDOWr   r   ÚloadÚunlinkÚimÚcopy)ÚtileÚsizeÚfpÚscaleÚtransparencyÚmsgÚdecoderÚoffsetÚdataÚlengthÚbboxÚwidthÚheightÚres_xÚres_yÚout_fdÚoutfileÚinfile_tempÚinfileÚin_fdr$   ÚfsizeÚ
lengthfileÚsÚdeviceÚcommandr'   Úout_imr>   r   r   r   ÚGhostscriptD   s˜   



û€øï



€ÿü
ÿÿ
rZ   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 )Nr[   é   zSIf you need the functionality of this class you will need to implement it yourself.)Úaction)r   rB   Úchar)ÚselfrB   r   r   r   Ú__init__§   s   ý
zPSFile.__init__c                 C  s   d | _ | j ||¡ d S ©N)r^   rB   r1   )r_   rG   Úwhencer   r   r   r1   ±   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)r^   rB   r5   r7   ÚappendÚjoinÚdecode)r_   rV   Úcr   r   r   Úreadlineµ   s   
þ
zPSFile.readlineN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r`   r2   ÚSEEK_SETr1   rj   r   r   r   r   r[   ¡   s
    
r[   c                 C  s(   | d d… dkpt | ƒdkot| ƒdkS )Né   ó   %!PSì   ÅP§ )r7   Úi32)Úprefixr   r   r   Ú_acceptÆ   s   (ru   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   rp   c                   s¢  ˆ  ˆj¡\‰ ‰ˆj ˆ¡ dˆ_d ˆ_tdƒ}t|ƒ}d}d}d‰d‰‡fdd„}‡ ‡‡‡‡fdd	„}	 ˆj d
¡}|dkrE|dkrDnþn0|dv rO|dkrNq4n&|dkrj|d tdƒkrad}t	|ƒ‚|rh|ƒ  d}d}|d ||< |d
7 }q4|rÌ|d tdƒks‡|d d… dkr�|ƒ  d}q4t
|d |… dƒ}	||	ƒsËt |	¡}
|
r¾|
 d
¡}|d d… dkr¸|dd … ˆjd< n‡dˆj|< n�|	d dkrÅnzd}t|ƒ‚ns|d d… dk�r|d|…  d d¡}dd„ |d d… D ƒ\}}}}|d
krödˆ_n|dk�rzˆj| ˆ_W n t�y   Y n5w n3||fˆ_d S |d d… dk�r n"ˆ�r4ˆ�r4t
|d |… dƒ}	||	ƒ n|d d… d k�r?d‰d}q5|ƒ  ˆj�sOd!}t|ƒ‚d S )"Nrz   éÿ   r   TFc                    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)rE   )r_   r   r   Úcheck_required_header_commentsç   s   

þz:EpsImageFile._open.<locals>.check_required_header_commentsc              
     sî   zt  | ¡}W n tjy } zd}t|ƒ|‚d }~ww |ru| dd¡\}}|ˆj|< |dkrs|dkr7d‰dS ˆjr>ˆrsˆrsz*dd„ |  ¡ D ƒ}|d |d	  |d
 |d  fˆ_ddˆj ˆˆ |ffgˆ_	W dS  t
yr   Y dS w dS d S )Núnot an EPS filer   r   r~   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Úerrorr€   Úgroupr   Ú_sizerA   r@   Ú	Exception)rV   ÚmÚerE   ÚkÚvÚbox©rI   rG   Úreading_trailer_commentsr_   Útrailer_reachedr   r   Ú_read_commentï   s>   
€þ
òÿÿ"ÿþþìz)EpsImageFile._open.<locals>._read_commentr   rc   rd   ú%r‚   é   s   %%EndCommentsre   é   r}   é	   Ú zbad EPS headerr\   s   %ImageData:é   c                 s  s   � | ]}t |ƒV  qd S ra   )r(   )r„   Úvaluer   r   r   Ú	<genexpr>W  s   € 
ÿz%EpsImageFile._open.<locals>.<genexpr>rp   Ú1é   s   %%EOFs	   %%Trailerz!cannot determine EPS bounding box)Ú_find_offsetrB   r1   Ú_moderŽ   Ú	bytearrayÚ
memoryviewr5   Úordr€   ÚstrÚfieldrŠ   r�   r   r   r‰   Úmode_mapÚ
ValueError)r_   Úbyte_arrÚbytes_mvÚ
bytes_readÚreading_header_commentsr�   r˜   ÚbyterE   rV   r�   r’   Úimage_data_valuesÚcolumnsÚrowsÚ	bit_depthÚmode_idr   r•   r   Ú_open×   s¢   ÿÿ 

ò
ÿ
ÿ

ždþ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|ƒ‚)Nrp   rq   r   rr   r›   r‚   )r5   r1   r2   r3   r4   rs   r€   )r_   rB   rV   rI   rG   rE   r   r   r   r£   w  s   
ó

ýzEpsImageFile._find_offsetr   Fc                 C  sD   | j rt| j | j| j||ƒ| _| jj| _| jj| _g | _ tj 	| ¡S ra   )
r@   rZ   rA   rB   r>   Úmoder¤   rŽ   r   r<   )r_   rC   rD   r   r   r   r<   Ž  s   

zEpsImageFile.loadc                 C  s   d S ra   r   )r_   Úposr   r   r   Ú	load_seek—  s   zEpsImageFile.load_seekN©r   F)rk   rl   rm   rn   ÚformatÚformat_descriptionrª   r¶   r£   r<   r¹   r   r   r   r   rv   Ï   s     !
	rv   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.rx   )r›   r   s   imagerz   )r›   r   s   false 3 colorimager{   )r›   rp   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
)	r<   r·   r«   r8   rA   r-   r¾   r   Ú_save)r>   rB   Úfilenamer‡   ÚoperatorrE   r   r   r   r¿      sD   









&




ÿr¿   z.psz.epszapplication/postscriptrº   )r   )!Ú
__future__r   r2   r+   r‹   r   r   r)   r�   r   r   Ú_binaryr   rs   Ú
_deprecater   Úcompiler‰   r©   r   Ú__annotations__r   r   rZ   r[   ru   rv   r¿   Úregister_openr»   Úregister_saveÚregister_extensionsÚregister_mimer   r   r   r   Ú<module>   s2   


]%	 
R4