
    ]Mhi                     ^    d Z ddlmZ ddlmZmZmZmZ ddlZdgZ	d Z
 G d de          ZdS )z#Calculate the perimeter of a glyph.    )BasePen)approximateQuadraticArcLengthCcalcQuadraticArcLengthCapproximateCubicArcLengthCcalcCubicArcLengthCNPerimeterPenc                 h    t          j        | d         |d         z
  | d         |d         z
            S )Nr      )mathhypot)p0p1s     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/pens/perimeterPen.py	_distancer      s,    :bebemRURU]333    c                   L    e Zd ZddZd Zd Zd Zd Zd Zd	 Z	d
 Z
d Zd ZdS )r   N{Gzt?c                     t          j        | |           d| _        || _        |dk    r| j        n| j        | _        |dk    r| j        n| j        | _	        d S )Nr   g~jtX?g~jtH?)
r   __init__value	tolerance_addCubicQuadrature_addCubicRecursive	_addCubic_addQuadraticQuadrature_addQuadraticExact_addQuadratic)selfglyphsetr   s      r   r   zPerimeterPen.__init__   sp    x(((
" )2V(;(;D$$AX 	
 G## ((( 	r   c                     || _         d S N)_PerimeterPen__startPointr   r   s     r   _moveTozPerimeterPen._moveTo'   s    r   c                 |    |                                  }|| j        k    r|                     | j                   d S d S r!   )_getCurrentPointr"   _lineTor#   s     r   
_closePathzPerimeterPen._closePath*   sD    ""$$"""LL*+++++ #"r   c                 j    |                                  }| xj        t          ||          z  c_        d S r!   )r&   r   r   )r   r   r   s      r   r'   zPerimeterPen._lineTo/   s1    ""$$

iB'''



r   c                 D    | xj         t          |||          z  c_         d S r!   )r   r   r   c0c1c2s       r   r   zPerimeterPen._addQuadraticExact3   s#    

-b"b999



r   c                 D    | xj         t          |||          z  c_         d S r!   )r   r   r+   s       r   r   z$PerimeterPen._addQuadraticQuadrature6   s#    

4RR@@@



r   c                     |                                  }|                     t          | t          | t          |            d S r!   )r&   r   complex)r   r   p2r   s       r   _qCurveToOnezPerimeterPen._qCurveToOne9   s=    ""$$7B<"w|DDDDDr   c           	      R    | xj         t          ||||| j                  z  c_         d S r!   )r   r   r   r   r,   r-   r.   c3s        r   r   zPerimeterPen._addCubicRecursive=   s)    

)"b"b$.III



r   c                 F    | xj         t          ||||          z  c_         d S r!   )r   r   r5   s        r   r   z PerimeterPen._addCubicQuadrature@   s%    

0RR@@@



r   c                     |                                  }|                     t          | t          | t          | t          |            d S r!   )r&   r   r1   )r   r   r2   p3r   s        r   _curveToOnezPerimeterPen._curveToOneC   sA    ""$$w|Wb\7B<"NNNNNr   )Nr   )__name__
__module____qualname__r   r$   r(   r'   r   r   r3   r   r   r:    r   r   r   r      s        
 
 
 
"  , , ,
( ( (: : :A A AE E EJ J JA A AO O O O Or   )__doc__fontTools.pens.basePenr   fontTools.misc.bezierToolsr   r   r   r   r   __all__r   r   r>   r   r   <module>rC      s    ) ) * * * * * *             
4 4 40O 0O 0O 0O 0O7 0O 0O 0O 0O 0Or   