a
    ¦¾deÌ1  ã                   @   sª   d Z ddlmZmZ ddlmZmZmZ ddlm	Z	m
Z
mZmZ ddlmZ G dd„ deƒZd	d
„ Zdd„ Zdd„ Zddd„Zeƒ  eƒ ¡ dde	dddddfdd„ZdS ))ÚsetFontÚpathNumTruncÚprocessGlyphÚtext2PathDescriptionÚ	text2PathÚRenderPMErroré    )ÚgetFontÚ
unicode2T1)Úopen_and_readÚisBytesÚrl_execé   )Ú_baseGFontNameÚ_PATH_OP_ARG_COUNTÚ_PATH_OP_NAMESÚ
definePath)Úexc_infoc                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   úQ/var/www/sistema_ama/venv/lib/python3.9/site-packages/reportlab/graphics/utils.pyr      s   r   c                 C   sÀ   t tttƒ d d… ƒƒ\}}ddlm} |jdkrŒdd l}|j 	|j 
|j¡d¡}td|| |¡f ƒ dD ]}td|tt||ƒƒf ƒ qldt| ƒt|ƒ||f }|d	7 }t|ttd
�ƒ d S )Né   r   )Ú	rl_configZfontsz!!!!! %s: %s)ZT1SearchPathZTTFSearchPathz!!!!! rl_config.%s = %szWraise RenderPMError("Error in setFont(%s,%s) missing the T1 files?\nOriginally %s: %s")z
 from None)r   )ÚlistÚmapÚstrr   Z	reportlabr   ÚverboseÚosÚpathÚjoinÚdirnameÚ__file__ÚprintÚlistdirÚreprÚgetattrr   Údictr   )ÚfontNameÚfontSizeÚs1Ús2r   r   Ú_Úcoder   r   r   Ú
_errorDump   s    
r.   c              
   C   s¨   z|   ||¡ W n’ ty¢ } zz|jd  d¡s:t||ƒ ddlm} z$t|ƒ}|||j 	¡ |j
jtƒ W n   t||ƒ Y n0 |   ||¡ W Y d }~n
d }~0 0 d S )Nr   zCan't find font!)Ú
makeT1Font)r   Ú
ValueErrorÚargsÚendswithr.   Ú_rl_renderPMr/   r   ÚfaceÚ
findT1FileÚencodingZvectorr
   )Úgsr(   r)   Úer/   Úfr   r   r   r      s    
r   c                 C   s   t | ƒ| krt | ƒS t| dƒS )Né   )ÚintÚround)Únr   r   r   r   -   s    r   N©ÚfreetypeÚ	_renderPMc              	      st  ddl m}m} ˆd urˆ}|dkr6|dkr0dnd‰n||v rD|‰ntd|›d�ƒ‚ˆft‡fd	d
„|D ƒƒ ‰ˆD ]â‰ˆdkrîzdd l‰W n ty¢   Y qtY n0 dd l‰G ‡‡fdd„dƒ‰ ddtddddd f‡ fdd„	}t	|ˆ d�  S ˆdkrtzdd l
}W n t�y   Y qtY n0 ddd„‰ddtddddd f‡fdd„	}t	|ˆtd�  S qt‡fdd„}t	||||d�S )Nr   )Ú	textPathsÚrenderPMBackendÚbackendZ	rlPyCairor?   r@   z
textPaths=z7 should be one of 'backend', 'freetype' or '_renderPM')c                 3   s   | ]}|ˆ kr|V  qd S ©Nr   )Ú.0r,   )Útpr   r   Ú	<genexpr>;   ó    z(__makeTextPathsCode__.<locals>.<genexpr>c                       sF   e Zd Z” j” jB ” jB Zdd„ Z‡ ‡fdd„Zdde	dfdd„Z
d	S )
z)__makeTextPathsCode__.<locals>.FTTextPathc                 S   s
   i | _ d S rD   )Úfaces)Úselfr   r   r   Ú__init__E   s    z2__makeTextPathsCode__.<locals>.FTTextPath.__init__c                    s~   || j vrtt|ƒ}|s&td|›d�ƒ‚|jr@|jj}ˆ |¡}nt|jdd ƒ}|s\|j ¡ }ˆ  	|¡}||f| j |< | j | S )Nzfont z has not been registeredZpfbFileName)
rI   r   r0   Ú_dynamicFontr4   Z	_ttf_dataÚBytesIOr&   r5   ZFace)rJ   r(   ÚfontZpath_or_streamr4   ©r?   Úior   r   r   H   s    


z1__makeTextPathsCode__.<locals>.FTTextPath.setFontr   éè  c                    s:  |   |¡\}}||j ‰|ˆ ‰|ˆ ‰g ‰ g }	ˆ j‰| dd¡}
|
rd‡‡fdd„‰‡‡fdd„‰n‡‡fdd„‰‡‡fdd„‰‡ ‡‡‡fdd	„}‡‡‡fd
d„}‡ ‡‡‡fdd„}‡‡‡fdd„}|d ˆ }| j}|D ]L}|dkrôd‰ˆ|8 ‰qÚ| ||¡ |jjj| ||||d� ˆ|jj	j
 ‰qÚˆ �r6ˆdƒ ˆ S )NÚtruncater   c                    s   t ˆ| ˆ   ƒS rD   ©r   ©Úx©Ú__dx__Úscaler   r   Ú<lambda>e   rH   zF__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.<lambda>c                    s   t ˆ| ˆ   ƒS rD   rS   ©Úy©Ú__dy__rX   r   r   rY   f   rH   c                    s   ˆ| ˆ   S rD   r   rT   rV   r   r   rY   h   rH   c                    s   ˆ| ˆ   S rD   r   rZ   r\   r   r   rY   i   rH   c                    s*   ˆ rˆdƒ ˆdˆ| j ƒˆ| jƒfƒ d S )N©Ú	closePathÚmoveTo©rU   r[   ©ÚaÚctx©ÚPÚP_appendÚxptÚyptr   r   Úmove_tok   s    zE__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.move_toc                    s   ˆ dˆ| j ƒˆ| jƒfƒ d S )NÚlineTora   rb   ©rg   rh   ri   r   r   Úline_too   s    zE__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.line_toc           	         sž   ˆ rˆ d dd… n
| j | jf\}}ˆ| j ƒ}ˆ| jƒ}ˆ|j ƒ}ˆ|jƒ}ˆd||| d d  ||| d d  ||| d  ||| d  ||fƒ dS )zusing the cubic equivalentéÿÿÿÿéþÿÿÿNÚcurveTor   é   ra   )	rc   Úbrd   Zx0Zy0Úx1Úy1Zx2Úy2re   r   r   Úconic_tor   s    $



zF__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.conic_toc              	      s>   ˆ dˆ| j ƒˆ| jƒˆ|j ƒˆ|jƒˆ|j ƒˆ|jƒfƒ d S )Nrp   ra   )rc   rr   Úcrd   rl   r   r   Úcubic_to{   s    zF__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.cubic_tog333333ó?Ú
)rj   rm   rv   rx   r^   )r   Zunits_per_EMÚappendÚpopÚftLFlagsZ	load_charZglyphÚoutlineZ	decomposeZmetricsZhoriAdvance)rJ   ÚtextrU   r[   r(   r)   Úkwdsr4   rN   ÚSrR   rj   rm   rv   rx   Z
lineHeightr|   rw   r   )rf   rg   rW   r]   rX   rh   ri   r   Ú
_text2Path[   s:    
	z4__makeTextPathsCode__.<locals>.FTTextPath._text2PathN)r   r   r   ZFT_LOAD_DEFAULTZFT_LOAD_NO_SCALEZFT_LOAD_NO_BITMAPr|   rK   r   r   r�   r   rO   r   r   Ú
FTTextPathC   s   r‚   rQ   Ústartr   c	                    sÂ  t |ƒ}	|	jr |	js td| ƒ‚g j}
|dks`t| ||ƒ}|dkrL|| }n|dkr`||d  }|du rnˆ ƒ }|	jr”|
|j| ||||||d�ƒ �n(t| ƒ�r6z|  d¡} W nˆ t	�y4 } zn|j
d	d
… \}}t	|j
dd
… d|j
d
 | t|d dƒ|… | ||… | ||d … f f Ž ‚W Y d}~n
d}~0 0 t| |	g|	j ƒ}t|ƒd }t|ƒD ]^\}\}}t|tƒ�r€| |j¡}|
|j||||j|||d�ƒ ||k�r\|| ||¡7 }�q\|
jS )zñfreetype text2PathDescription(text, x=0, y=0, fontName='fontname',
                                    fontSize=1000, font = 'fontName',
                                    anchor='start', truncate=1, pathReverse=0, gs=None)
                ú=text2PathDescription doesn't support multi byte fonts like %rrƒ   ÚendÚmiddleç       @N)rU   r[   r(   r)   rR   ÚpathReverseÚutf8r   é   ú%s
%s-->%s<--%sé
   r   r   )r   Ú
_multiByterL   r0   ÚextendÚstringWidthr�   r   ÚdecodeÚUnicodeDecodeErrorr1   Úmaxr	   ÚsubstitutionFontsÚlenÚ	enumerateÚ
isinstanceÚbytesÚencNamer(   Ú__self__)r~   rU   r[   r(   r)   ÚanchorrR   rˆ   r7   rN   ÚP_extendÚtextLenr8   ÚiÚjÚFTÚnm1r9   Út)r‚   r   r   r   ‹   s8    
 
f
z3__makeTextPathsCode__.<locals>.text2PathDescription)r   r‚   c                 S   s\  g }g }g j }| rHt| ƒdkrH| d d dkrHd| d dd …  f|  } | pNdd D � ]þ}|d }|�r8|dv �r8|d dkrà|d= |rÊ|dd d	… |dd d	…  |dd d	…< |dd d	…< | ¡  | ¡  | dd
¡ |  d¡ d}|röttt|ƒƒ}|D ]4}	|tt 	|	¡  }
||	ft
|||
… ƒ ƒ |
}qúg }g }|  |¡ | |dd … ¡ qT|jS )Nr   r   rk   )ÚmoveToClosedr   ))r…   )r`   r¢   r…   r¢   r   r`   r_   )rz   r”   ÚreverseÚinsertr   r   r   r   r   ÚindexÚtuplerŽ   r™   )ÚGrR   rˆ   ÚOrf   ZR_appendÚgÚopr�   Úorž   r   r   r   r   µ   s6     2

z+__makeTextPathsCode__.<locals>.processGlyphc	                    s  t |ƒ}	|	jr |	js td| ƒ‚g j}
|dks`t| ||ƒ}|dkrL|| }n|dkr`||d  }|du r~ddlm} |d	d	ƒ}t|||ƒ |	jrº| 	| ||¡D ]}|
ˆ |||d
�ƒ qž�nBt
| ƒ�r\z|  d¡} W nˆ t�yZ } zn|jdd… \}}t|jdd… d|jd | t|d dƒ|… | ||… | ||d … f f Ž ‚W Y d}~n
d}~0 0 |	}t| |	g|	j ƒ}t|ƒd	 }t|ƒD ]t\}\}}||k�r®t||j|ƒ |}| 	|||¡D ]}|
ˆ |||d
�ƒ �q¼||k�r†|| | |j¡|¡7 }�q†|
jS )zò_renderPM text2PathDescription(text, x=0, y=0, fontName='fontname',
                                    fontSize=1000, font = 'fontName',
                                    anchor='start', truncate=1, pathReverse=0, gs=None)
                r„   rƒ   r…   r†   r‡   Nr   )Úgstater   )rR   rˆ   r‰   r   rŠ   r‹   rŒ   )r   r�   rL   r0   rŽ   r�   r3   r¬   r   Z_stringPathr   r�   r‘   r1   r’   r	   r“   r”   r•   r(   r˜   r™   )r~   rU   r[   r(   r)   rš   rR   rˆ   r7   rN   r›   rœ   r¬   r©   r8   r�   rž   ZfcrŸ   r    r9   r¡   )r   r   r   r   Ò   sF    


f

)r   r   r   c                     s   t dˆ ›�ƒ‚d S )Nz±This installation of reportLab has neither PYCAIRO or RENDERPM extras installed.
It cannot create paths from text.
Could not create text2PathDescription for using backends from )ÚRuntimeError)r1   r   )ÚTPr   r   r,   þ   s    z __makeTextPathsCode__.<locals>._)r   r   r‚   r   )r   r   )Zreportlab.rl_configrA   rB   r0   r¦   r?   ÚImportErrorrP   r   r'   r3   r   )rF   Z_TPrA   rB   r   r3   r,   r   )r‚   r®   r?   rP   r   rF   r   Ú__makeTextPathsCode__2   s@    
Hÿ#

ÿ*r°   rQ   rƒ   c	                 K   s2   |	  dt¡}
t|
| ||||||||d�	fi |	¤ŽS )Nr   )rU   r[   r(   r)   rš   rR   rˆ   r7   )r{   r   r   )r~   rU   r[   r(   r)   rš   rR   rˆ   r7   r   Zt2pdr   r   r   r     s    
ÿÿr   )Nr>   )Ú__all__Zreportlab.pdfbase.pdfmetricsr   r	   Zreportlab.lib.utilsr
   r   r   Zshapesr   r   r   r   Úsysr   Ú	Exceptionr   r.   r   r   r°   ÚglobalsÚupdater   r   r   r   r   Ú<module>   s   
 Sÿ