a
    ç´«j@  ã                   @  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d„Zd'dddddddœdd„Zdddœdd„ZG dd„ dejƒZd(ddddd 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)ÚIOé   )ÚImageÚ	ImageFile)Úi32lez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$zstr | bool | NoneÚ	gs_binaryÚbool©Úreturnc                  C  sŠ   t d u r‚tj d¡rNtd u rHdd l} dD ]}|  |¡d ur(|a qHq(data n4ztjddgtj	d� da W n t
y€   da Y n0 t duS )NÚwinr   )Zgswin32cZgswin64cÚgsFr   z	--version)Ústdout)r   ÚsysÚplatformÚ
startswithÚgs_windows_binaryÚshutilÚwhichÚ
subprocessÚ
check_callÚDEVNULLÚOSError)r   Úbinary© r   úQ/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/PIL/EpsImagePlugin.pyÚhas_ghostscript-   s     
r   Fzlist[ImageFile._Tile]útuple[int, int]ú	IO[bytes]ÚintzImage.core.ImagingCore)ÚtileÚsizeÚfpÚscaleÚtransparencyr   c                 C  s  t ƒ sd}t|ƒ‚tttƒs J ‚| d j}t|tƒs8J ‚|\}}t|ƒpJd}|d | }	|d | }
d|	 |d |d   }d|
 |d |d   }t 	¡ \}}t
 |¡ d}t|dƒrÎt
j |j¡rÎ|j}n¨t 	¡ \}}t
 |¡ |}t|d	ƒ�r}| dtj¡ | ¡ }| d¡ |}|dk�rV| t|d
ƒ¡}|�s<�qV|t|ƒ8 }| |¡ �qW d  ƒ n1 �sl0    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! |¡�X}| "¡  |j# $¡ W  d  ƒ W zt
 %|¡ |�rnt
 %|¡ W S  t�y„   Y S 0 S 1 �s�0    Y  W zt
 %|¡ |�r¸t
 %|¡ W n t�yÎ   Y n0 n6zt
 %|¡ |�rît
 %|¡ W n t�y   Y n0 0 dS )z!Render an image using Ghostscriptz%Unable to locate Ghostscript on pathsr   r   g      R@é   é   NÚnameÚwbi � ZpngalphaZpnmrawz-qz-gÚdÚxz-rÚfz-dBATCHz	-dNOPAUSEz-dSAFERz	-sDEVICE=z-sOutputFile=z-cú z
 translatez-fZ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   ZSTARTUPINFOZdwFlagsZSTARTF_USESHOWWINDOWr   r   ÚloadÚimÚcopyÚunlink)r    r!   r"   r#   r$   Úmsgr0   ÚlengthZbboxÚwidthÚheightZres_xZres_yZout_fdÚoutfileZinfile_tempÚinfileZin_fdr+   ÚfsizeZ
lengthfileÚsZdeviceÚcommandr-   Zout_imr   r   r   ÚGhostscriptD   sœ    	




.ï
ù
û
rO   Úbytes)Úprefixr   c                 C  s"   |   d¡p t| ƒdko t| ƒdkS )Nó   %!PSé   ì   ÅP§ )r   r@   Úi32)rQ   r   r   r   Ú_accept¬   s    
ÿrV   c                   @  sh   e Zd ZdZdZdZdddddœZd	d
œdd„Zdddœdd„Zdddddœdd„Z	dd	dœdd„Z
dS )ÚEpsImageFilez.EPS File Parser for the Python Imaging LibraryZEPSzEncapsulated PostscriptÚLZLABÚRGBÚCMYK)r   r%   r&   rS   ÚNoner
   c                   s  ˆ  ˆj¡\}}ˆj |¡ dˆ_d ‰ d }tdƒ}t|ƒ}d}d}d‰d‰ddœ‡fdd	„}d
ddœ‡ ‡‡‡fdd„}	ˆj d¡}
|
dkr¢|dkr |rœ|ƒ  �q¾nb|
dv r¶|dkr´qvnN|dkrî|d tdƒkrÜd}t|ƒ‚n|rê|ƒ  d}d}|
d ||< |d7 }qv|�rº|d tdƒk�s.|d d… dk�r:|ƒ  d}qvt	|d |… dƒ}|	|ƒ�s¸t
 |¡}|�rœ| d¡}| d¡�r�|dd … ˆjd< n
dˆj|< n|d dk�r¬nd}t|ƒ‚nþ|d d… dk�rb|�rØd}qv|d|…  d d¡}dd„ |d d … D ƒ\}}}}|dk�rd!ˆ_n<|d"k�r¾zˆj| ˆ_W n t�yP   Y �q¾Y n0 n�q¾||f}nV|d d#… d$k�rz�q¾n>ˆ�r¢ˆ�r¢t	|d |… dƒ}|	|ƒ n|d d… d%k�r¸d‰d}qvˆ �sÐd&}t|ƒ‚|�pôˆ d' ˆ d  ˆ d( ˆ d  fˆ_t d)d*ˆj ||ˆ f¡gˆ_d S )+NrY   éÿ   r   TFr[   r
   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)rF   )Úselfr   r   Úcheck_required_header_commentsÓ   s    

z:EpsImageFile._open.<locals>.check_required_header_commentsr/   r	   )rM   r   c              
     s¶   zt  | ¡}W n4 tjyB } zd}t|ƒ|‚W Y d }~n
d }~0 0 |sLdS | dd¡\}}|ˆj|< |dkr²|dkr|d‰n6ˆ rˆˆr²ˆr²zdd	„ |  ¡ D ƒ‰ W n ty°   Y n0 dS )
Núnot an EPS fileFr   r%   r^   z(atend)Tc                 S  s   g | ]}t t|ƒƒ‘qS r   )r   Úfloat)Ú.0Úir   r   r   Ú
<listcomp>õ   ó    z<EpsImageFile._open.<locals>.read_comment.<locals>.<listcomp>)ÚsplitÚmatchÚreÚerrorr`   Úgroupr_   Ú	Exception)rM   ÚmÚerF   ÚkÚv©Zbounding_boxZreading_trailer_commentsra   Ztrailer_reachedr   r   Úread_commentà   s$     
z(EpsImageFile._open.<locals>.read_commentr   rh   s   
ú%rc   é   s   %%EndCommentszlatin-1r]   é	   Ú zbad EPS headeré   s   %ImageData:é   c                 s  s   | ]}t |ƒV  qd S ©N)r   )re   Úvaluer   r   r   Ú	<genexpr>L  s   z%EpsImageFile._open.<locals>.<genexpr>rS   Ú1é   é   s   %%EOFs	   %%Trailerz!cannot determine EPS bounding boxr%   r&   Úeps©r   r   )Ú_find_offsetr"   r:   Ú_modeÚ	bytearrayÚ
memoryviewr>   Úordr`   r/   Úfieldrj   rm   r   r_   r   ri   Úmode_mapÚ
ValueErrorÚ_sizer   Ú_Tiler!   r    )ra   rG   ÚoffsetZimagedata_sizeZbyte_arrZbytes_mvÚ
bytes_readZreading_header_commentsrb   rt   ÚbyterF   rM   ro   rq   Zimage_data_valuesÚcolumnsÚrowsZ	bit_depthZmode_idr   rs   r   Ú_open¿   s¨    
$




ÿ



þÿzEpsImageFile._openr   r   )r"   r   c                 C  sl   |  d¡}|dkr.| dtj¡ | ¡ }d}n6t|ƒdkrX|  d¡}t|ƒ}t|dƒ}nd}t|ƒ‚||fS )NrS   rR   r   rT   r   rc   )r>   r:   r;   r<   r=   rU   r`   )ra   r"   rM   rG   r�   rF   r   r   r   rƒ   w  s    

zEpsImageFile._find_offsetr   Fr   r	   zImage.core.PixelAccess | None)r#   r$   r   c                 C  sD   | j r8t| j | j| j||ƒ| _| jj| _| jj| _g | _ tj 	| ¡S r{   )
r    rO   r!   r"   rC   Úmoder„   r‹   r   rB   )ra   r#   r$   r   r   r   rB   Ž  s    

zEpsImageFile.load)Úposr   c                 C  s   d S r{   r   )ra   r”   r   r   r   Ú	load_seek™  s    zEpsImageFile.load_seekN)r   F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚformatÚformat_descriptionr‰   r’   rƒ   rB   r•   r   r   r   r   rW   ·   s    9 ÿrW   zImage.Imagezstr | bytesr[   )rC   r"   Úfilenamer�   r   c              	   C  s˜  |   ¡  | jdkrd}n,| jdkr(d}n| jdkr8d}nd}t|ƒ‚|r¨| 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ƒ�rN| ¡  t | |t 	dd| j ¡g¡ | d¡ | d¡ t|dƒ�r”| ¡  d S )!z*EPS Writer for the Python Imaging Library.rX   )r   r   s   imagerY   )r   r&   s   false 3 colorimagerZ   )r   rS   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)
rB   r“   rŠ   rA   r!   r6   rž   r   Ú_saverŒ   )rC   r"   rœ   r�   ÚoperatorrF   r   r   r   rŸ   ¢  sB    









&


rŸ   z.psz.epszapplication/postscript)r   F)r   ) Ú
__future__r   r;   r4   rk   r   r   r2   Útypingr   rx   r   r   Ú_binaryr   rU   Úcompileri   rˆ   r   Ú__annotations__r   r   rO   rV   rW   rŸ   Zregister_openrš   Zregister_saveZregister_extensionsZregister_mimer   r   r   r   Ú<module>   s2   

  ûh l4