
    hi                     V    S r SSKJr  SSKJrJrJrJr  SSKrS/r	S r
 " S S\5      rg)z#Calculate the perimeter of a glyph.    )BasePen)approximateQuadraticArcLengthCcalcQuadraticArcLengthCapproximateCubicArcLengthCcalcCubicArcLengthCNPerimeterPenc                 T    [         R                  " U S   US   -
  U S   US   -
  5      $ )Nr      )mathhypot)p0p1s     M/var/www/html/env/lib/python3.13/site-packages/fontTools/pens/perimeterPen.py	_distancer      s+    ::bebemRURU]33    c                   T    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rS rS rSrg)r      Nc                     [         R                  " X5        SU l        X l        US:  a  U R                  OU R
                  U l        US:  a  U R                  U l	        g U R                  U l	        g )Nr   g~jtX?g~jtH?)
r   __init__value	tolerance_addCubicQuadrature_addCubicRecursive	_addCubic_addQuadraticQuadrature_addQuadraticExact_addQuadratic)selfglyphsetr   s      r   r   PerimeterPen.__init__   sm    (
" )2V(;D$$AXAX 	
 G# (( 	 (( 	r   c                     Xl         g N)_PerimeterPen__startPointr   r   s     r   _moveToPerimeterPen._moveTo'   s    r   c                 z    U R                  5       nXR                  :w  a  U R                  U R                  5        g g r"   )_getCurrentPointr#   _lineTor$   s     r   
_closePathPerimeterPen._closePath*   s3    ""$"""LL**+ #r   c                 `    U R                  5       nU =R                  [        X!5      -  sl        g r"   )r(   r   r   )r   r   r   s      r   r)   PerimeterPen._lineTo/   s#    ""$

i''
r   c                 B    U =R                   [        XU5      -  sl         g r"   )r   r   r   c0c1c2s       r   r   PerimeterPen._addQuadraticExact3   s    

-bb99
r   c                 B    U =R                   [        XU5      -  sl         g r"   )r   r   r/   s       r   r   $PerimeterPen._addQuadraticQuadrature6   s    

4RR@@
r   c                 n    U R                  5       nU R                  [        U6 [        U6 [        U6 5        g r"   )r(   r   complex)r   r   p2r   s       r   _qCurveToOnePerimeterPen._qCurveToOne9   s.    ""$7B<"w|Dr   c           	      X    U =R                   [        XX4U R                  5      -  sl         g r"   )r   r   r   r   r0   r1   r2   c3s        r   r   PerimeterPen._addCubicRecursive=   s    

)""$..II
r   c                 B    U =R                   [        XX45      -  sl         g r"   )r   r   r<   s        r   r    PerimeterPen._addCubicQuadrature@   s    

0@@
r   c                 |    U R                  5       nU R                  [        U6 [        U6 [        U6 [        U6 5        g r"   )r(   r   r7   )r   r   r8   p3r   s        r   _curveToOnePerimeterPen._curveToOneC   s2    ""$w|Wb\7B<"Nr   )__startPointr   r   r   r   )Ng{Gzt?)__name__
__module____qualname____firstlineno__r   r%   r*   r)   r   r   r9   r   r   rC   __static_attributes__ r   r   r   r      s9    
",
(:AEJAOr   )__doc__fontTools.pens.basePenr   fontTools.misc.bezierToolsr   r   r   r   r   __all__r   r   rK   r   r   <module>rP      s7    ) *   
40O7 0Or   