a
    ¥Q•h,>  ã                   @   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a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 )é    Né   )ÚImageÚ	ImageFile)Úi32le)Ú	deprecatez^%%([^:]*):[ \t]*(.*)[ \t]*$z^%[%!\w]([^:]*)[ \t]*$c                  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)Ú	gs_binaryÚsysÚplatformÚ
startswithÚgs_windows_binaryÚshutilÚwhichÚ
subprocessÚ
check_callÚDEVNULLÚOSError)r   Úbinary© r   úK/var/www/sistema_ama/venv/lib/python3.9/site-packages/PIL/EpsImagePlugin.pyÚhas_ghostscript,   s     
r   Fc                 C   s”  t ƒ sd}t|ƒ‚| d \}} }}|\}	}
t|ƒp4d}|d | |d | f}d|d  |
d |
d   d|d  |
d |
d   f}t ¡ \}}t |¡ d}t|dƒrÀtj 	|j
¡rÀ|j
}n¨t ¡ \}}t |¡ |}t|d	ƒr}| dtj¡ | ¡ }| d¡ |}|dkrH| t|d
ƒ¡}|s.qH|t|ƒ8 }| |¡ q
W d  ƒ n1 s^0    Y  |rrdnd}t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yD   Y n0 n6zt |¡ |rdt |¡ W n tyz   Y n0 0 |j  !¡ }| ¡  |S )z!Render an image using Ghostscriptz%Unable to locate Ghostscript on pathsr   r   g      R@é   é   NÚnameÚwbi  ZpngalphaZppmrawz-qz-g%dx%dz-r%fx%fz-dBATCHz	-dNOPAUSEz-dSAFERz	-sDEVICE=z-sOutputFile=z-cú z
 translatez-fZ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   ZSTARTUPINFOZdwFlagsZSTARTF_USESHOWWINDOWr   r   ÚloadÚunlinkÚimÚcopy)ÚtileÚsizeÚfpÚscaleÚtransparencyÚmsgÚdecoderÚoffsetÚdataÚlengthÚbboxÚresZout_fdÚoutfileZinfile_tempÚinfileZin_fdÚfÚfsizeZ
lengthfileÚsÚdeviceÚcommandr   Zout_imr2   r   r   r   ÚGhostscriptC   sŠ    þ



.ï


û

rG   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 )NrH   é   zSIf you need the functionality of this class you will need to implement it yourself.)Úaction)r   r6   Úchar)Úselfr6   r   r   r   Ú__init__©   s    ýzPSFile.__init__c                 C   s   d | _ | j ||¡ d S ©N)rK   r6   r(   )rL   r;   Úwhencer   r   r   r(   ³   s    zPSFile.seekc                 C   st   | j pdg}d | _ | j d¡}|dvrFt|ƒrF| |¡ | j d¡}q| j d¡| _ | j dv rdd | _ d |¡ d¡S )Nó    r   ó   
úlatin-1)rK   r6   r,   r.   ÚappendÚjoinÚdecode)rL   rD   Úcr   r   r   Úreadline·   s    

zPSFile.readlineN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rM   r)   ÚSEEK_SETr(   rW   r   r   r   r   rH   £   s   
rH   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    rb   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 LibraryZEPSzEncapsulated PostscriptÚLÚLABÚRGBÚCMYK)r   r   r   r]   c                    sÀ  ˆ  ˆj¡\‰ ‰ˆj ˆ¡ dˆ_d ˆ_tdƒ}t|ƒ}d}d}d‰d‰‡fdd„}‡ ‡‡‡‡fdd	„}ˆj d
¡}|dkrŠ|dkrìq¢nb|dv rž|dkrìqhnN|dkrÖ|d tdƒkrÄd}t	|ƒ‚n|rÒ|ƒ  d}d}|d ||< |d
7 }qh|r¨|d tdƒks|d d… dkr"|ƒ  d}qht
|d |… dƒ}	||	ƒsœt |	¡}
|
rŠ|
 d
¡}|d d… dkr~|dd … ˆjd< n
dˆj|< n|	d dkršnd}t|ƒ‚nô|d d… dkrH|d|…  d d¡}dd„ |d d… D ƒ\}}}}|d
krþdˆ_n<|dkr¢zˆj| ˆ_W n ty2   Y q¢Y n0 nq¢||fˆ_d S ˆr†ˆr†|d d… dkrjq¢t
|d |… dƒ}	||	ƒ n|d d… d krœd‰d}qh|ƒ  ˆjs¼d!}t|ƒ‚d S )"Nrf   éÿ   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)r9   )rL   r   r   Úcheck_required_header_commentsé   s    

z:EpsImageFile._open.<locals>.check_required_header_commentsc              
      sô   zt  | ¡}W n4 tjyB } zd}t|ƒ|‚W Y d }~n
d }~0 0 |rð| dd¡\}}|ˆj|< |dkrì|dkrxd‰ntˆjr†ˆrìˆrìzRdd„ |  ¡ D ƒ}|d |d	  |d
 |d  fˆ_ddˆj ˆˆ |ffgˆ_	W n t
yê   Y n0 dS d S )Núnot an EPS filer   r   rj   z(atend)Tc                 S   s   g | ]}t t|ƒƒ‘qS r   )r   Úfloat)Ú.0Úir   r   r   Ú
<listcomp>  rP   z=EpsImageFile._open.<locals>._read_comment.<locals>.<listcomp>r   r   Úeps©r   r   )ÚsplitÚmatchÚreÚerrorrl   Úgrouprk   Ú_sizer5   r4   Ú	Exception)rD   ÚmÚer9   ÚkÚvÚbox©r=   r;   Zreading_trailer_commentsrL   Ztrailer_reachedr   r   Ú_read_commentñ   s0     
ÿÿ"ÿ
z)EpsImageFile._open.<locals>._read_commentr   rP   rQ   ú%rn   é   s   %%EndCommentsrR   é   ri   é	   Ú zbad EPS headerrI   s   %ImageData:é   c                 s   s   | ]}t |ƒV  qd S rN   )r   )rp   Úvaluer   r   r   Ú	<genexpr>Y  s   z%EpsImageFile._open.<locals>.<genexpr>r]   Ú1é   s   %%EOFs	   %%Trailerz!cannot determine EPS bounding box)Ú_find_offsetr6   r(   Ú_moderz   Ú	bytearrayÚ
memoryviewr,   Úordrl   ÚstrÚfieldrv   ry   rk   r   ru   Úmode_mapÚ
ValueError)rL   Zbyte_arrZbytes_mvÚ
bytes_readZreading_header_commentsrm   r‚   Úbyter9   rD   r|   r~   Zimage_data_valuesÚcolumnsÚrowsZ	bit_depthZmode_idr   r   r   Ú_openÙ   s”    
$




ÿ



zEpsImageFile._openc                 C   sl   |  d¡}|dkr.| dtj¡ | ¡ }d}n6t|ƒdkrX|  d¡}t|ƒ}t|dƒ}nd}t|ƒ‚||fS )Nr]   r^   r   r_   r…   rn   )r,   r(   r)   r*   r+   r`   rl   )rL   r6   rD   r=   r;   r9   r   r   r   r   }  s    

zEpsImageFile._find_offsetr   Fc                 C   sD   | j r8t| j | j| j||ƒ| _| jj| _| jj| _g | _ tj 	| ¡S rN   )
r4   rG   r5   r6   r2   ÚmoderŽ   rz   r   r0   )rL   r7   r8   r   r   r   r0   ”  s    

zEpsImageFile.loadc                 O   s   d S rN   r   )rL   ÚargsÚkwargsr   r   r   Ú	load_seek  s    zEpsImageFile.load_seekN)r   F)rX   rY   rZ   r[   ÚformatÚformat_descriptionr”   rš   r   r0   rž   r   r   r   r   rc   Ñ   s    %
	rc   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 | |dd| j ddfg¡ | d¡ | d ¡ t|dƒr”| ¡  dS )!z*EPS Writer for the Python Imaging Library.rd   )r…   r   s   imagerf   )r…   r   s   false 3 colorimagerg   )r…   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
)	r0   r›   r•   r/   r5   r$   r¢   r   Ú_save)r2   r6   Úfilenamers   Úoperatorr9   r   r   r   r£   ¦  sB    









&


r£   z.psz.epszapplication/postscript)r   F)r   )r)   r"   rw   r   r   r    r‡   r   r   Ú_binaryr   r`   Z
_deprecater   Úcompileru   r“   r
   r   r   rG   rH   rb   rc   r£   Úregister_openrŸ   Úregister_saveÚregister_extensionsÚregister_mimer   r   r   r   Ú<module>   s.   


`%	 V
4