
    jke              	          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      \  ZZZ ej                  d	d
      Z e ej                  de	dz   z  d            Z e ej                  de	dz   z  d            Z e ed dD               Z e ej                  de	dz   z  d
            ZdgZ ede	dz         D ]6  Zed   Z ed  e ee            D              dz   Zej7                  e       8  ed eD              Z[[ ed  ee      D              Z ed  ee      D              Z ed  ee      D              Zd Z  G d de!      Z" G d de      Z# ee#d      Z$ ee#e      Z% ee#e      Z& ee#eez        Z' ee#eez        Z( ee#eez        Z)ejT                  dfdZ+e,d k(  r e$       Z-e-j]                  d!       e-j_                  d"       e-j_                  d#       e-ja                  d$d%d&       e-j_                  d'       e-jc                           e2e-jf                         yy)(    )BasePen)partial)countN   zt x yTrealcFzx:%d   zy:%dc              #   b   K   | ]'  }t        j                  d t        dz   |fz  d       ) yw)zp:%d[%s]r
   Tr   N)spsymbolsn).0ws     8/usr/lib/python3/dist-packages/fontTools/misc/symfont.py	<genexpr>r      s+     M1

:Q
2>>Ms   -/01zc:%d)r
   r   c              #   H   K   | ]  }t         |d z
     t         |   z     ywr
   N)last)r   js     r   r   r      s!     A1a!etAw&As    ")r   c              #   8   K   | ]  }t        |d d         y w)Nr   )tuple)r   items     r   r   r      s     ME$s),Ms   c              #   ^   K   | ]$  \  }t        fd t        |      D               & yw)c              3   \   K   | ]#  \  }}|t         |z  z  d t         z
  |z
  z  z   % ywr   )t)r   ir	   r   s      r   r   z<genexpr>.<genexpr>   s/     	FDAq!ad(a!eQ'
'	Fs   ),N)r   	enumerate)r   coeffsr   s     @r   r   r      s-      6 
	FIf4E	FF   *-c              #   ^   K   | ]$  \  }t        fd t        d      D               & yw)c              3   Z   K   | ]!  t        fd t              D               # yw)c              3   B   K   | ]  \  }}t         |      |z    y wN)P)r   r   	bernsteinr   s      r   r   z<genexpr>.<genexpr>.<genexpr>!   s"     JLAyAaDGiJs   Nsumr    )r   r   
bernsteinss    @r   r   z<genexpr>.<genexpr>    s)      
 	JIj4IJJ
s   '+   N)r   ranger   r   r+   s     @r   r   r      s5      
 	:	 
 
q
 r"   c              #   X   K   | ]"  \  }}t        d  t        |      D               $ yw)c              3   :   K   | ]  \  }}t         |   |z    y wr&   )C)r   r   r(   s      r   r   z<genexpr>.<genexpr>'   s     C\Q	!yCs   Nr)   r.   s      r   r   r   &   s,      : CYz-BCCs   (*c                    t        j                  t        j                  |       t               } | j	                  t
        |d   t        |d   i      } t        j                  | t        j                  |d   t              z  t        ddf      } | S )Nr   r
   )r   	integratesympifyysubsxdiffr   )fcurveXYs     r   greenr;   ,   sk    	bjjmQ	''A	71:q'!*-.A
QQ//!Q;AH    c                       e Zd Zd Zd Zy)_BezierFuncsLazyc                      || _         i | _        y r&   )_symfunc	_bezfuncs)selfsymfuncs     r   __init__z_BezierFuncsLazy.__init__4   s    r<   c                    t        |dz         D cg c]  }d|z  	 }}t        | j                  t        |         }t	        j
                  |j                  t        t        d                  }t	        j                  ||      S c c}w )Nr
   zp%d )
r-   r;   r@   BezierCurver   	gcd_termscollectr*   r'   lambdify)rB   r   dargsr9   s        r   __missing__z_BezierFuncsLazy.__missing__8   sh    #(Q<0a	00$--Q0LL3q":./{{4## 1s   BN)__name__
__module____qualname__rD   rM   rF   r<   r   r>   r>   3   s    $r<   r>   c                   L    e Zd Zi Zed        Zd
dZd Zd Zd Z	d Z
d Zd	 Zy)GreenPenc                     t        |      }|| j                  vrt        |      | j                  |<   | j                  |   S r&   )str_BezierFuncsr>   )celffuncfuncstrs      r   _getGreenBezierFuncszGreenPen._getGreenBezierFuncsB   s?    d)$+++)9$)?Dg&  ))r<   Nc                 j    t        j                  | |       | j                  |      | _        d| _        y )Nr   )r   rD   rY   _funcsvalue)rB   rW   glyphsets      r   rD   zGreenPen.__init__I   s+    x(//5
r<   c                     || _         y r&   )_GreenPen__startPointrB   p0s     r   _moveTozGreenPen._moveToN   s
    r<   c                 z    | j                         }|| j                  k7  r| j                  | j                         y y r&   )_getCurrentPointr_   _lineTor`   s     r   
_closePathzGreenPen._closePathQ   s5    ""$"""LL**+ #r<   c                 N    | j                         }|| j                  k7  rt        y r&   )rd   r_   NotImplementedErrorr`   s     r   _endPathzGreenPen._endPathV   s)    ""$"""%% #r<   c                 v    | j                         }| xj                   | j                  d   ||      z  c_        y )Nr
   rd   r\   r[   )rB   p1ra   s      r   re   zGreenPen._lineTo\   s/    ""$

ndkk!nR,,
r<   c                 x    | j                         }| xj                   | j                  d   |||      z  c_        y )Nr,   rk   )rB   rl   p2ra   s       r   _qCurveToOnezGreenPen._qCurveToOne`   s1    ""$

ndkk!nRR00
r<   c                 z    | j                         }| xj                   | j                  d   ||||      z  c_        y )Nr   rk   )rB   rl   rn   p3ra   s        r   _curveToOnezGreenPen._curveToOned   s3    ""$

ndkk!nRR44
r<   r&   )rN   rO   rP   rU   classmethodrY   rD   rb   rf   ri   re   ro   rr   rF   r<   r   rR   rR   ?   s<    L* *
,
&-15r<   rR   )rW   c                    |t        d|z         t        d| d| d|       |D ]  \  }}t        d|z  |        t        dd|	       d
D ]  }t        |dz         D ci c]/  }t        d      D ]  }t        |   |   t        t        g|   |   ! 1 }	}}|D cg c]  \  }}t        |t        |          }
}}|
D cg c]4  }t        j                  |j                  t        t        d                  6 }
}|
D cg c]  }|j                  |	       }
}t        j                  |
dd t               D              \  }}t                |D ]  \  }}t        d|z  |        |dk(  rt        d|       n%|dk(  rt        d|       n|dk(  rt        d|       |D ]  \  }}t        d|d||        t        |       t        |D cg c]  }|d   	 c}|      D ]  \  }}t        d|d||         t        d| z  |       |D ]"  \  }}t        d|dt        |      d|       $ t        d|       y c c}}w c c}}w c c}w c c}w c c}w ) Nz"""%s"""a$  from fontTools.pens.basePen import BasePen, OpenContourError
try:
	import cython

	COMPILED = cython.compiled
except (AttributeError, ImportError):
	# if cython not installed, use mock module with no-op decorators and types
	from fontTools.misc import cython

	COMPILED = False


__all__ = ["z
"]

class zS(BasePen):

	def __init__(self, glyphset=None):
		BasePen.__init__(self, glyphset)
)filez		self.%s = 0a  
	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:
			# Green theorem is not defined on open contours.
			raise OpenContourError(
							"Green theorem is not defined on open contours."
			)
 )endru   )r
   r,   r   r
   r,   rF   basicc              3   L   K   | ]  }t        j                  d |z          yw)zr%dN)r   Symbol)r   r   s     r   r   z printGreenPen.<locals>.<genexpr>   s     ;aRYYuqy);s   "$)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
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		z = r   z		self.z += zj
if __name__ == '__main__':
	from fontTools.misc.symfont import x, y, printGreenPen
	printGreenPen('%s', [z
		      ('z', z),z			     ]))printr-   r'   XYr;   rG   r   rH   rI   r*   r6   cser   ziprT   )penNamefuncsru   	docstringnamer9   r   r   r   r6   greensdefsexprsr\   s                 r   printGreenPenr   t   s   j9$%	( G'	( +.  1ao$401		" ',  :@/4QU|N!U1XN!Q!Q1%NNN:?@wtQ%;q>*@@?EF!",,qyyQ45FF(./1!&&,//ff!;57;
e 	 	IKD%5<4H	I6 	 !V  !V
    	:KD%u-D9	: 	4e4!4e< 	@KD%tU3$?	@s:@x 
	 		
   AatSV44@A	+D!K O@F/j  5s   $4I I9III"
__main__)d   r   )r      )r   r   )r      ),  r   )r   i^  )r   r   )4fontTools.pens.basePenr   	functoolsr   	itertoolsr   sympyr   sysr   r   r   r7   r5   r	   r   r}   r~   r   r'   r1   BinomialCoefficientr-   r   r   lenthisappendr    BernsteinPolynomialrG   BezierCurveCr;   dictr>   rR   AreaPen
MomentXPen
MomentYPenMomentXXPenMomentYYPenMomentXYPenstdoutr   rN   penmoveTolineTocurveTo	closePathr|   r\   rF   r<   r   <module>r      sy   *    

"**W4
(1aBJJs	*"**Vq1u%D
12	*"**Vq1u%D
12	#MM
NO	*"**Vq1u%E
23 h 	q!a% %Ar"DAc$i0@AADHDt$% M9LMM $ 23  
  
 ##67   "#67 	$t 	$'5w '5Z (
#XA&
XA&
hQU+hQU+hQU+ (+zzT y"x z
)CJJzJJzJJzKK
J
3JJzMMO	#)) r<   