a
    —ÆàgO  ã                   @   sH  d dl mZ d dlmZ d dlmZ d dlZd dlZdZ	ej
ddd�\ZZZej
d	d
d�Zeej
de	d  dd�ƒZeej
de	d  dd�ƒZeedd„ dD ƒŽ ƒZeej
de	d  d
d�ƒZdgZede	d ƒD ]4Zed Zedd„ eeeƒƒD ƒƒd Ze e¡ qÒedd„ eD ƒƒZ[[edd„ eeƒD ƒƒZedd„ eeƒD ƒƒZedd„ eeƒD ƒƒZdd„ Z G dd„ de!ƒZ"G dd„ deƒZ#ee#dd �Z$ee#ed �Z%ee#ed �Z&ee#ee d �Z'ee#ee d �Z(ee#ee d �Z)ej*dfd!d"„Z+e,d#k�rDe$ƒ Z-e- .d$¡ e- /d%¡ e- /d&¡ e- 0d'd(d)¡ e- /d*¡ e- 1¡  e2e-j3ƒ dS )+é    )ÚBasePen)Úpartial)ÚcountNé   zt x yT©ÚrealÚcFzx:%dé   zy:%dc                 c   s(   | ] }t jd td |f dd�V  qdS )zp:%d[%s]r	   Tr   N)ÚspÚsymbolsÚn)Ú.0Úw© r   úO/var/www/sistema_ama/venv/lib/python3.9/site-packages/fontTools/misc/symfont.pyÚ	<genexpr>   ó    r   Z01zc:%d)r	   r   éÿÿÿÿc                 c   s"   | ]}t |d   t |  V  qdS ©r	   N)Úlast)r   Újr   r   r   r      r   ©r   c                 c   s   | ]}t |d d… ƒV  qd S )Nr   )Útuple)r   Úitemr   r   r   r      r   c                 #   s,   | ]$\‰ }t ‡ fd d„t|ƒD ƒƒV  qdS )c                 3   s.   | ]&\}}|t |  d t  ˆ |   V  qdS r   )Út)r   Úir   ©r   r   r   r      r   ú<genexpr>.<genexpr>N)r   Ú	enumerate)r   Zcoeffsr   r   r   r      s   ÿc                 #   s,   | ]$\}‰ t ‡ fd d„tdƒD ƒƒV  qdS )c                 3   s(   | ] ‰ t ‡ fd d„tˆƒD ƒƒV  qdS )c                 3   s"   | ]\}}t | ˆ  | V  qd S ©N)ÚP©r   r   Z	bernstein©r   r   r   r   !   r   z<genexpr>.<genexpr>.<genexpr>N©Úsumr   )r   ©Ú
bernsteinsr"   r   r       s   ÿr   é   N)r   Úrange)r   r   r   r%   r   r      s   üþc                 c   s(   | ] \}}t d d„ t|ƒD ƒƒV  qdS )c                 s   s   | ]\}}t | | V  qd S r   )ÚCr!   r   r   r   r   '   r   r   Nr#   )r   r   r&   r   r   r   r   &   s   ÿc                 C   sT   t  t  | ¡t¡ } |  t|d t|d i¡} t  | t  |d t¡ tddf¡} | S )Nr   r	   )r
   Z	integrateZsympifyÚyÚsubsÚxÚdiffr   )ÚfZcurveXYr   r   r   Úgreen,   s    "r/   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_BezierFuncsLazyc                 C   s   || _ i | _d S r   )Ú_symfuncZ	_bezfuncs)ÚselfZsymfuncr   r   r   Ú__init__4   s    z_BezierFuncsLazy.__init__c                 C   sH   dd„ t |d ƒD ƒ}t| jt| ƒ}t | ttdƒ¡¡}t 	||¡S )Nc                 S   s   g | ]}d | ‘qS )zp%dr   )r   Údr   r   r   Ú
<listcomp>9   r   z0_BezierFuncsLazy.__missing__.<locals>.<listcomp>r	   r   )
r(   r/   r1   ÚBezierCurver
   Ú	gcd_termsÚcollectr$   r    Zlambdify)r2   r   Úargsr.   r   r   r   Ú__missing__8   s    z_BezierFuncsLazy.__missing__N)Ú__name__Ú
__module__Ú__qualname__r3   r:   r   r   r   r   r0   3   s   r0   c                   @   sV   e Zd Zi Zedd„ ƒZddd„Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚGreenPenc                 C   s*   t |ƒ}|| jvr t|ƒ| j|< | j| S r   )ÚstrÚ_BezierFuncsr0   )ZcelfÚfuncZfuncstrr   r   r   Ú_getGreenBezierFuncsB   s    
zGreenPen._getGreenBezierFuncsNc                 C   s"   t  | |¡ |  |¡| _d| _d S )Nr   )r   r3   rB   Ú_funcsÚvalue)r2   rA   Zglyphsetr   r   r   r3   I   s    zGreenPen.__init__c                 C   s
   || _ d S r   )Ú_startPoint©r2   Úp0r   r   r   Ú_moveToN   s    zGreenPen._moveToc                 C   s"   |   ¡ }|| jkr|  | j¡ d S r   )Ú_getCurrentPointrE   Ú_lineTorF   r   r   r   Ú
_closePathQ   s    
zGreenPen._closePathc                 C   s   |   ¡ }|| jkrt‚d S r   )rI   rE   ÚNotImplementedErrorrF   r   r   r   Ú_endPathV   s    
zGreenPen._endPathc                 C   s&   |   ¡ }|  j| jd ||ƒ7  _d S )Nr	   ©rI   rD   rC   )r2   Úp1rG   r   r   r   rJ   \   s    zGreenPen._lineToc                 C   s(   |   ¡ }|  j| jd |||ƒ7  _d S )Nr'   rN   )r2   rO   Úp2rG   r   r   r   Ú_qCurveToOne`   s    zGreenPen._qCurveToOnec                 C   s*   |   ¡ }|  j| jd ||||ƒ7  _d S )Nr   rN   )r2   rO   rP   Zp3rG   r   r   r   Ú_curveToOned   s    zGreenPen._curveToOne)N)r;   r<   r=   r@   ÚclassmethodrB   r3   rH   rK   rM   rJ   rQ   rR   r   r   r   r   r>   ?   s   

r>   )rA   c           
         sÜ  |d urt d| ƒ t d| | f |d� |D ]\}}t d| |d� q,t dd|d� dD �]8‰ d	d
„ tˆ d ƒD ƒ‰‡ fdd„|D ƒ}dd„ |D ƒ}‡fdd„|D ƒ}tj|ddd„ tƒ D ƒd�\}}t ƒ  |D ]\}}	t d| |d� qÐˆ dk�rt d|d� n.ˆ dk�rt d|d� nˆ dk�r0t d|d� |D ]\}}	t d||	f |d� �q4t |d� tdd„ |D ƒ|ƒD ]\}}	t d||	f |d� �qrqXt d|  |d� |D ]"\}}t d|t|ƒf |d� �q¨t d|d� d S ) Nz"""%s"""ap  from fontTools.pens.basePen import BasePen, OpenContourError
try:
	import cython
except (AttributeError, ImportError):
	# if cython not installed, use mock module with no-op decorators and types
	from fontTools.misc import cython
COMPILED = cython.compiled


__all__ = ["%s"]

class %s(BasePen):

	def __init__(self, glyphset=None):
		BasePen.__init__(self, glyphset)
)Úfilez		self.%s = 0aT  
	def _moveTo(self, p0):
		self._startPoint = p0

	def _closePath(self):
		p0 = self._getCurrentPoint()
		if p0 != self._startPoint:
			self._lineTo(self._startPoint)

	def _endPath(self):
		p0 = self._getCurrentPoint()
		if p0 != self._startPoint:
			raise OpenContourError(
							"Glyph statistics is not defined on open contours."
			)
Ú )ÚendrT   )r	   r'   r   c                 S   s4   i | ],}t d ƒD ]}t| | ttg| | “qqS )r'   )r(   r    ÚXÚY)r   r   r   r   r   r   Ú
<dictcomp>¤   r   z!printGreenPen.<locals>.<dictcomp>r	   c                    s   g | ]\}}t |tˆ  ƒ‘qS r   )r/   r6   )r   Únamer.   r   r   r   r5   ¥   r   z!printGreenPen.<locals>.<listcomp>c              	   S   s"   g | ]}t  | ttd ƒ¡¡‘qS )r   )r
   r7   r8   r$   r    ©r   r.   r   r   r   r5   ¦   r   c                    s   g | ]}|  ˆ ¡‘qS r   ©r+   r[   r\   r   r   r5   §   r   Úbasicc                 s   s   | ]}t  d | ¡V  qdS )zr%dN)r
   ZSymbol)r   r   r   r   r   r   «   r   z printGreenPen.<locals>.<genexpr>)Zoptimizationsr   z!	@cython.locals(%s=cython.double)z¯	@cython.locals(x0=cython.double, y0=cython.double)
	@cython.locals(x1=cython.double, y1=cython.double)
	def _lineTo(self, p1):
		x0,y0 = self._getCurrentPoint()
		x1,y1 = p1
r'   zù	@cython.locals(x0=cython.double, y0=cython.double)
	@cython.locals(x1=cython.double, y1=cython.double)
	@cython.locals(x2=cython.double, y2=cython.double)
	def _qCurveToOne(self, p1, p2):
		x0,y0 = self._getCurrentPoint()
		x1,y1 = p1
		x2,y2 = p2
r   a=  	@cython.locals(x0=cython.double, y0=cython.double)
	@cython.locals(x1=cython.double, y1=cython.double)
	@cython.locals(x2=cython.double, y2=cython.double)
	@cython.locals(x3=cython.double, y3=cython.double)
	def _curveToOne(self, p1, p2, p3):
		x0,y0 = self._getCurrentPoint()
		x1,y1 = p1
		x2,y2 = p2
		x3,y3 = p3
z			%s = %sc                 S   s   g | ]}|d  ‘qS r   r   r[   r   r   r   r5   Ü   r   z		self.%s += %szj
if __name__ == '__main__':
	from fontTools.misc.symfont import x, y, printGreenPen
	printGreenPen('%s', [z		      ('%s', %s),z			     ]))Úprintr(   r
   Zcser   Úzipr?   )
ZpenNameÚfuncsrT   Ú	docstringrZ   r.   ZgreensZdefsÚexprsrD   r   )r   r+   r   ÚprintGreenPent   sr    ðîî
ý

ø

	ö
ô
üúrc   Ú__main__)éd   re   )re   éÈ   )rf   rf   )rf   éú   )é,  rh   )rg   i^  )rf   re   )4ZfontTools.pens.basePenr   Ú	functoolsr   Ú	itertoolsr   Zsympyr
   Úsysr   r   r   r,   r*   r   r   rW   rX   r_   r    r)   ZBinomialCoefficientr(   r   r   ÚlenÚthisÚappendr   ZBernsteinPolynomialr6   ZBezierCurveCr/   Údictr0   r>   ZAreaPenZ
MomentXPenZ
MomentYPenZMomentXXPenZMomentYYPenZMomentXYPenÚstdoutrc   r;   ZpenZmoveToZlineToZcurveToZ	closePathr^   rD   r   r   r   r   Ú<module>   s\   þûþ-x




