L iiVdZddlmZddlmZmZmZmZddlZdgZ dZ GddeZ y)z#Calculate the perimeter of a glyph.)BasePen)approximateQuadraticArcLengthCcalcQuadraticArcLengthCapproximateCubicArcLengthCcalcCubicArcLengthCN PerimeterPencRtj|d|dz |d|dz S)Nr)mathhypot)p0p1s a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/fontTools/pens/perimeterPen.py _distancers+ ::bebemRURU] 33cJeZdZd dZdZdZdZdZdZdZ d Z d Z d Z y) rNctj||d|_||_|dk\r |jn |j |_|dk\r|j|_ y|j|_ y)Nrg~jtX?g~jtH?) r__init__value tolerance_addCubicQuadrature_addCubicRecursive _addCubic_addQuadraticQuadrature_addQuadraticExact _addQuadratic)selfglyphsetrs rrzPerimeterPen.__init__sqx( " )2V(;D $ $AXAX  G#  ( ( (( rc||_yN)_PerimeterPen__startPointrr s r_moveTozPerimeterPen._moveTo's rcz|j}||jk7r|j|jyyr )_getCurrentPointr!_lineTor"s r _closePathzPerimeterPen._closePath*s5  " " $ "" " LL** + #rcb|j}|xjt||z c_yr )r%rr)rrr s rr&zPerimeterPen._lineTo/s%  " " $ iB'' rcD|xjt|||z c_yr )rrrc0c1c2s rrzPerimeterPen._addQuadraticExact3s -b"b99 rcD|xjt|||z c_yr )rrr*s rrz$PerimeterPen._addQuadraticQuadrature6s 4RR@@ rcn|j}|jt|t|t|yr )r%rcomplex)rrp2r s r _qCurveToOnezPerimeterPen._qCurveToOne9s.  " " $ 7B<"w|Drc \|xjt|||||jz c_yr )rrrrr+r,r-c3s rrzPerimeterPen._addCubicRecursive=s" )"b"b$..II rcF|xjt||||z c_yr )rrr4s rrz PerimeterPen._addCubicQuadrature@s 0RR@@ rc||j}|jt|t|t|t|yr )r%rr0)rrr1p3r s r _curveToOnezPerimeterPen._curveToOneCs2  " " $ w|Wb\7B<"Nr)Ng{Gzt?) __name__ __module__ __qualname__rr#r'r&rrr2rrr9rrrrs9 ", (:AEJAOr) __doc__fontTools.pens.basePenrfontTools.misc.bezierToolsrrrrr __all__rrr=rrrBs7)*    40O70Or