)Ejg ddlmZmZ ddlZn#eef$r ddlmZYnwxYwejZdgZ GddeZ e dkr1ddl m Z mZmZeddd e fd efd e d zfd e ezfded zfgdSdS))BasePenOpenContourErrorN)cython MomentsPenc^.eZdZddZdZdZdZejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ej ejej ej dZ ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej !ejej "ejej #ejej $ejej %ejej &ejej 'ejej (ejej )ejej *ejej +ejej ,ejej -ejej .ejej /ejej 0ejej 1ejej 2ejej 3ejej 4ejej 5ejej 6ejej 7ejej 8ejej 9ejej :ejej ;ejej <ejej =ejej >ejej ej ejej ej ejej ej ?d@Z ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej !ejej "ejej #ejej $ejej %ejej &ejej 'ejej (ejej )ejej *ejej +ejej ,ejej -ejej .ejej /ejej 0ejej 1ejej 2ejej 3ejej 4ejej 5ejej 6ejej 7ejej 8ejej 9ejej :ejej ;ejej <ejej =ejej >ejej Aejej Bejej Cejej Dejej Eejej Fejej Gejej Hejej Iejej Jejej Kejej Lejej Mejej Nejej Oejej Pejej Qejej Rejej Sejej Tejej Uejej Vejej Wejej Xejej Yejej Zejej [ejej \ejej ]ejej ^ejej _ejej `ejej aejej bejej cejej dejej eejej fejej gejej hejej iejej jejej kejej lejej mejej nejej oejej pejej qejej rejej sejej tejej uejej vejej wejej xejej yejej zejej {ejej |ejej }ejej ~ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ejej ej ejej ej ejej ej ?ejej ej dZ dS)rNctj||d|_d|_d|_d|_d|_d|_dS)Nr)r__init__areamomentXmomentYmomentXXmomentXYmomentYY)selfglyphsets KC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/pens/momentsPen.pyr zMomentsPen.__init__sCx(((      c||_dSN) _startPointrp0s r_moveTozMomentsPen._moveTosrc||}||jkr||jdSdSr)_getCurrentPointr_lineTors r _closePathzMomentsPen._closePathsD  " " $ $ ! ! ! LL) * * * * * " !rcb|}||jkrtddS)Nz1Glyph statistics is not defined on open contours.)rrrrs r_endPathzMomentsPen._endPath"s8  " " $ $ ! ! !"#VWW W " !r)r0)r1)r2)r3)r4)r5)r6)r7)r8)r9)r10)r11)r12)x0y0)x1y1c|\}}|\}}||z}||z}|dz}||z} ||z } | |z} |dz} d|z} |dz}|dz}|dz}|dz}|dz}|xj| dz |dz z |||zzdz zz c_|xj| |zdz | dz z | |zdz z | | |zzdz zz c_|xj| |zdz ||zdz z ||zdz z |||z||zzzdz zz c_|xj| |zdz ||zdz z || zdz z | | z|zdz z |dzd|z|zzdz zz c_|xj| |zdz ||zdz z | | zdz z | | |zd|zz|zzdz z||z||z zdz z z c_|xj| |zdz ||zdz z ||zdz z ||zdz z |||z||zz||zzzdz zz c_dS)N rr r r r rr)rp1r-r.r/r0r r!r"r#r$r%r&r'r(r)r*r+r,s rrzMomentsPen._lineTo's &&((BB "W "W U "W "W "W U V U U!e!e!e bS1WrAv%b2g(:::  b1 rAv-R! ;bBGnq>PPP  C"HqL27Q; &b1 4rR"WrBw=N7ORS7S S  D2INBhl 2gl 2glR !eq2v{#b(  )  C"HrM2gk 2gl BGa"f$r)*R/ 02gb!B&  '  C"HrM2gl Bhm Bhm C#IR'"r'12R7  8 r)r13)r14)r15)r16)r17)r18)r19)r20)r21)r22)r23)r24)r25)r26)r27)r28)r29)r30)r31)r32)r33)r34)r35)r36)r37)r38)r39)r40)r41)r42)r43)r44)r45)r46)r47)r48)r49)r50)r51)r52)r53)x2y2cf |\}}|\}}|\}}d|z} | |z} ||z} d| z} d|z} d|z}|dz}|dz}d|z}d|z}d|z}| |z}|dz}d|z}| |z}||z}d|z}| |z| z}| |z}|dz}d|z}|dz}||z}d|z} |dz}!||z}"d|!z}#|dz}$|dz}%d|z}&d|z}'d|z|z}(d|z})d|z}*d|z}+||z},| d |,zz}-d|z}.d |z}/d |z|z}0|)|z}1d |z}2d |z}3d|z}4d |z}5d|z}6d|z}7d|z}8d |z|z| z}9d |dzz}:|dz};|dz}|xj| dz | dz z || |z|zzdz z||zdz z|| |zzdz z z c_|xj| | |zzdz |||z|zzdz z||zd z z||zdz z ||zdz z |||z ||zz |zzdz z||d|zz|zzdz z z c_|xj| dz ||zdz z | dz z |!||zzdz z || |z|z|z|"z|#z||zzzdz z||z||zzd z z|| |zzdz z z c_|xj|| d|zz |+|zz |-z||zzzd z d|$z|zdz z|%|&zd z z |%|zdz z |(| d|zz zd z z ||z| |)z zdz z |dz|'d|zz|zzdz z|| |z||.zz| |.zz |*|zz |/|zz|0z |1z ||zzzd z z |d |$zd|%zz|(z|*|zzzd z z z c_|xj|||zd|zzd|!zz|2|zz|3z|7|zzzdz ||z|4|5z zdz z ||zd z z |!|/|6|zzd|zzzdz z |2|z|zdz z |3|zdz z ||z|)|zzdz z|| |z||"zz|z||8zz|!|+zz |#|zz |,|7zz|9zzd z z||| z|'|zz|,|6zz|0z|1zzd z z z c_|xj| |3zd z ||&zd z z |!||-z|=|zzzd z z |:|zd z z |;|zdz z |<|8|zzdz z |||7z||zz||=zz|!|&zz|"|>zz|#|zz|3|zz|:zd|;zzd|zz|| zz |9zzd z z z c_dS)Nr2r3r6 r4r5r8<iiTH#r9)?rr:p2r-r.r/r0rdrer r!r"r#r$r%r&r'r(r)r*r+r,r;r<r=r>r?r@rArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZr[r\r]r^r_r`rarbrcs? r _qCurveToOnezMomentsPen._qCurveToOnecst&&((BBB V "W "W V V V U U V "W"f2g!e2g2g2g"f2gl2g!e#g!eBh#g!e2g#g!e!e2g"f2gl"f2g2g2g28m2g2g"frkBh2g3h#g3h2g2g"f#glS "a%i!e!e2g2g C!G1f BGbL!A% &2gk BGnq  !  DSD2I  #S2X]#b( )2gl 2gl 2gl   C#Ib(3./"4  5 C!b&L2%&+  ,  D2IBhm Bh S2X# $BGcMC'#-3b2g=>C  D 2gr"R'  ( BHo"  #  2C<#(*S027: ;c A#glS  !Ci#o Bhl R!b&[!C'  ( 2gc"S(  ) !esR"W}r)*R/  0R)s(((     r'   &AGa#g%+cBh67#=' > , 38a#g%c 1C"H| dz}?|?| z}@|dz}Ad|Az}B|dz}Cd |z}Dd|z}E|| z}F|3| z}Gd|dz z |@dz z |B|d| zzzdz z |C|D|Ez| zzdz z ||/|z|4|zz|8| zzd|zd|Az| zz|L|ozzzd!z z z c_dS)6Nr4rgr3r2-rl rnr5rhrmriiv~?*izZ6rjrpr88ii$i rqroFr6ii0H,iii iQrkir9)rr:rsp3r-r.r/r0rdrerrr r!r"r#r$r%r&r'r(r)r*r+r,r;r<r=r>r?r@rArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZr[r\r]r^r_r`rarbrcrurvrwrxryrzr{r|r}r~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrs r _curveToOnezMomentsPen._curveToOne6sFT&&((BBBB V "W "W "W V V V V V U2gBh!eBhBh"f2gBh!e#g!e2g"f2g"fBhm"f2gdRi"s(""f2g2g3h#g2gBh2gBh"f2g"fBh2g3h2gCi#("2gBh!e3hBh!eBh!e#g!e2g"fBhBh#g2g"fBh2g3h#g!e!eBhBh!eBh2gBhBhc!Bh2g3h2g2g2g3h2gCi#)#2gBhBh2gBh3h2gCiCiBhBhmBh3hBh2gBwRxRx"s("S3Y^3cCi?SyBwbyBwRxbyBwCxSyCxBwRxczBH$BwCxRxRxRxBwRxRxCx"}sRx'"s(2S3Y^C1u1u1u1uRxby39$SyBw C"H2g BGnr! "BGb2g%*+b0 1"fR 2%  & "frkB   BGbL!B&  '  #IAg Ag cTBY#% &R!b&[!C'  ( R#XR'",-3  4 cTCZ#%&,  -BHsNS()C/ 0S((  (  ( r'   *C#(NS2X-3c9BGCDsJ+ K 0 C39  #Ag Ci Ag R!b&[!C'  ( S3Y^$s*  + b((s()     s(     (C"HrCx'#-3b2g=>D) E*2gr"R'+ (,C"HsRx'#(2S83>rIJSP- Q 2 D3J3$) $t +#gsS2X-34t; <b(((  (  ( )   c s(((s(  s(      6BHrMBH,rCx7#=>E7 F8#glS 9 !:Ci$; <Bhl= >Bh3$)$t+? ,@#gs#d*A +B!esSy38+b01C7C! 8Ds *s(R-  )  ( ((( ( ( ( c' (( (!"s(#$(R-% ,-E8 rc )(s(s(  )   )(R- (   sF H R ECK% Ci!m #glR #gR"s(2R#X=CGH4O Pt )t)     s(*     $QWrCx'"r'12U:% ;&S3Y_s*S0367%?' @(BHsRx'"s(2S83>?%G) H*#gs#c)+ *,"frkS1r6\*S0- 1.bt)b.!*t))  t)  t) t)*t) t)  (R-  ( () )!")#$(R-% &('(s(R-) *)b.+!23/0 bs )*t)  )  s( )  c< zT ))s(  (  ( ()b.!s( r'B, s( s(  !{M O ` EDL4 Sj4 Ri"n $h#)$t+ ,cCi"n%+  , D2I$rDy028;rs8<<<<<<<<&MMMM $&&&%%%%%%%%& ? .Q  Q  Q  Q  Q  Q  Q  Q  h z::::::::::M  N N A  Q  A        s