o
    üÞh@  ã                   @  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	 ddl
mZmZ ddlmZ e d¡Ze d¡Zdad	ed
< dad-dd„Z		d.d/dd„Zd0dd„ZG d d!„ d!ejƒZd1d2d(d)„Ze ejee¡ e eje¡ e ejd*d+g¡ e ejd,¡ dS )3é    )ÚannotationsN)ÚIOé   )ÚImageÚ	ImageFile)Úi32lez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$zstr | bool | NoneÚ	gs_binaryÚreturnÚboolc                  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   úR/var/www/html/premium_crap/venv/lib/python3.10/site-packages/PIL/EpsImagePlugin.pyÚhas_ghostscript-   s*   þûþþr   FÚtileúlist[ImageFile._Tile]Úsizeútuple[int, int]Úfpú	IO[bytes]ÚscaleÚintÚtransparencyúImage.core.ImagingCorec                 C  s  t ƒ s	d}t|ƒ‚tttƒsJ ‚| d j}t|tƒsJ ‚|\}}t|ƒp%d}|d | }	|d | }
d|	 |d |d   }d|
 |d |d   }t 	¡ \}}t
 |¡ d}t|dƒrgt
j |j¡rg|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}zwd}tj d¡�r	t ¡ }| jtjO  _tj ||d� t! |¡�-}| "¡  |j# $¡ W  d  ƒ W zt
 %|¡ |�r6t
 %|¡ W S W S  t�yA   Y S w 1 �sFw   Y  W zt
 %|¡ |�r]t
 %|¡ W dS W dS  t�yj   Y dS w zt
 %|¡ |�r{t
 %|¡ W w W w  t�y†   Y w w )z!Render an image using Ghostscriptz%Unable to locate Ghostscript on pathsr   r   g      R@é   é   NÚnameÚwbi � ÚpngalphaÚpnmrawz-qz-gÚdÚxz-rÚfz-dBATCHz	-dNOPAUSEz-dSAFERz	-sDEVICE=z-sOutputFile=z-cú z
 translatez-fÚshowpager   )Ústartupinfo)&r   r   Ú
isinstancer   ÚstrÚargsÚtupler%   ÚtempfileÚmkstempÚosÚcloseÚhasattrÚpathÚexistsr*   ÚopenÚseekÚioÚSEEK_ENDÚtellÚreadÚminÚlenÚwriter   r   r   r   ÚSTARTUPINFOÚdwFlagsÚSTARTF_USESHOWWINDOWr   r   ÚloadÚimÚcopyÚunlink)r   r    r"   r$   r&   Úmsgr6   ÚlengthÚbboxÚwidthÚheightÚres_xÚres_yÚout_fdÚoutfileÚinfile_tempÚinfileÚin_fdr0   ÚfsizeÚ
lengthfileÚsÚdeviceÚcommandr3   Úout_imr   r   r   ÚGhostscriptD   s°   	




û€øïþ
ÿÿø
ÿÿü
ÿÿra   ÚprefixÚbytesc                 C  s"   |   d¡pt| ƒdkot| ƒdkS )Nó   %!PSé   ì   ÅP§ )r   rF   Úi32)rb   r   r   r   Ú_accept¬   s   
ÿrh   c                   @  sR   e Zd ZdZdZdZdddddœZddd„Zd dd„Z	d!d"dd„Z	d#dd„Z
dS )$ÚEpsImageFilez.EPS File Parser for the Python Imaging LibraryÚEPSzEncapsulated PostscriptÚLÚLABÚRGBÚCMYK)r   r(   r)   re   r	   ÚNonec                   sî  ˆ  ˆj¡\}}ˆj |¡ dˆ_d ‰ d }tdƒ}t|ƒ}d}d}d‰d‰d+‡fdd	„}d,‡ ‡‡‡fdd„}		 ˆj d¡}
|
dkrL|dkrK|rJ|ƒ  nþn0|
dv rV|dkrUq6n&|dkrq|d tdƒkrhd}t|ƒ‚|ro|ƒ  d}d}|
d ||< |d7 }q6|rÐ|d tdƒksŽ|d d… dkr”|ƒ  d}q6t	|d |… dƒ}|	|ƒsÏt
 |¡}|rÂ| d¡}| d¡r¼|dd … ˆjd< nŠdˆj|< n„|d dkrÉn}d}t|ƒ‚nv|d d… dk�r|rÞd}q6|d|…  d d¡}dd„ |d d … D ƒ\}}}}|dkrÿd!ˆ_n|d"k�rzˆj| ˆ_W n t�y   Y n3w n1||f}n)|d d#… d$k�r'n"ˆ�r;ˆ�r;t	|d |… dƒ}|	|ƒ n|d d… d%k�rFd‰d}q7ˆ �sRd&}t|ƒ‚|�pdˆ d' ˆ d  ˆ d( ˆ d  fˆ_t d)d*ˆj ||ˆ f¡gˆ_d S )-Nrm   éÿ   r   TFr	   ro   c                    s0   dˆ j vrd} t| ƒ‚dˆ j vrd} t| ƒ‚dS )zí
            The EPS specification requires that some headers exist.
            This should be checked when the header comments formally end,
            when image data starts, or when the file ends, whichever comes first.
            úPS-Adobez'EPS header missing "%!PS-Adobe" commentÚBoundingBoxz*EPS header missing "%%BoundingBox" commentN)ÚinfoÚSyntaxError)rO   )Úselfr   r   Úcheck_required_header_commentsÓ   s   

þz:EpsImageFile._open.<locals>.check_required_header_commentsr]   r5   r
   c              
     s°   zt  | ¡}W n tjy } zd}t|ƒ|‚d }~ww |s dS | dd¡\}}|ˆj|< |dkrV|dkr9d‰dS ˆ r?ˆrVˆrVzdd	„ |  ¡ D ƒ‰ W dS  tyU   Y dS w dS )
Núnot an EPS fileFr   r(   rr   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>)ÚsplitÚmatchÚreÚerrorrt   Úgrouprs   Ú	Exception)r]   ÚmÚerO   ÚkÚv©Úbounding_boxÚreading_trailer_commentsru   Útrailer_reachedr   r   Úread_commentà   s0   
€þ
	øþþz(EpsImageFile._open.<locals>.read_commentr   ó    s   
ú%rw   é   s   %%EndCommentszlatin-1rq   é	   Ú zbad EPS headeré   s   %ImageData:é   c                 s  s   � | ]}t |ƒV  qd S ©N)r%   )ry   Úvaluer   r   r   Ú	<genexpr>L  s   € 
ÿz%EpsImageFile._open.<locals>.<genexpr>re   Ú1é   é   s   %%EOFs	   %%Trailerz!cannot determine EPS bounding boxr(   r)   Úeps©r   r   ©r	   ro   )r]   r5   r	   r
   )Ú_find_offsetr"   r@   Ú_modeÚ	bytearrayÚ
memoryviewrD   Úordrt   r5   Úfieldr}   r€   r   rs   r   r|   Úmode_mapÚ
ValueErrorÚ_sizer   Ú_Tiler    r   )ru   rP   ÚoffsetÚimagedata_sizeÚbyte_arrÚbytes_mvÚ
bytes_readÚreading_header_commentsrv   rŠ   ÚbyterO   r]   r‚   r„   Úimage_data_valuesÚcolumnsÚrowsÚ	bit_depthÚmode_idr   r†   r   Ú_open¿   s´   ýÿ 


ò
ÿ
ÿ

•oþ
ÿzEpsImageFile._openr"   r#   r!   c                 C  sp   |  d¡}|dkr| dtj¡ | ¡ }d}||fS t|ƒdkr2|  d¡}t|ƒ}t|dƒ}||fS d}t|ƒ‚)Nre   rd   r   rf   r–   rw   )rD   r@   rA   rB   rC   rg   rt   )ru   r"   r]   rP   r¥   rO   r   r   r   r›   w  s   
ó

ýzEpsImageFile._find_offsetr   Fr$   r%   r&   r
   úImage.core.PixelAccess | Nonec                 C  sD   | j rt| j | j| j||ƒ| _| jj| _| jj| _g | _ tj 	| ¡S r’   )
r   ra   r    r"   rL   Úmoderœ   r£   r   rK   )ru   r$   r&   r   r   r   rK   Ž  s   

zEpsImageFile.loadÚposc                 C  s   d S r’   r   )ru   r´   r   r   r   Ú	load_seek™  s   zEpsImageFile.load_seekNrš   )r"   r#   r	   r!   ©r   F)r$   r%   r&   r
   r	   r²   )r´   r%   r	   ro   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚformatÚformat_descriptionr¡   r±   r›   rK   rµ   r   r   r   r   ri   ·   s    
 
9ÿri   rL   úImage.ImageÚfilenameústr | bytesr˜   ro   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 | |t 	dd| j ¡g¡ | d¡ | d¡ t|dƒrÊ| ¡  d S d S )!z*EPS Writer for the Python Imaging Library.rk   )r–   r   s   imagerm   )r–   r)   s   false 3 colorimagern   )r–   re   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™   s   
%%%%EndBinary
s   grestore end
N)
rK   r³   r¢   rG   r    r<   rÁ   r   Ú_saver¤   )rL   r"   r¾   r˜   ÚoperatorrO   r   r   r   rÂ   ¢  sD   









&




ÿrÂ   z.psz.epszapplication/postscript)r	   r
   r¶   )r   r   r    r!   r"   r#   r$   r%   r&   r
   r	   r'   )rb   rc   r	   r
   )r   )
rL   r½   r"   r#   r¾   r¿   r˜   r%   r	   ro   ) Ú
__future__r   rA   r:   r~   r   r   r8   Útypingr   r�   r   r   Ú_binaryr   rg   Úcompiler|   r    r   Ú__annotations__r   r   ra   rh   ri   rÂ   Úregister_openr»   Úregister_saveÚregister_extensionsÚregister_mimer   r   r   r   Ú<module>   s4   


û
h l4