o
    ii                     @   sR   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d Z
G dd deZdS )	z#Calculate the perimeter of a glyph.    )BasePen)approximateQuadraticArcLengthCcalcQuadraticArcLengthCapproximateCubicArcLengthCcalcCubicArcLengthCNPerimeterPenc                 C   s$   t | d |d  | d |d  S )Nr      )mathhypot)p0p1 r   j/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/fontTools/pens/perimeterPen.py	_distance   s   $r   c                   @   s^   e Zd ZdddZdd Zdd Zd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd ZdS )r   N{Gzt?c                 C   sN   t | | d| _|| _|dkr| jn| j| _|dkr!| j| _	d S | j| _	d S )Nr   g~jtX?g~jtH?)
r   __init__value	tolerance_addCubicQuadrature_addCubicRecursive	_addCubic_addQuadraticQuadrature_addQuadraticExact_addQuadratic)selfZglyphsetr   r   r   r   r      s   zPerimeterPen.__init__c                 C   s
   || _ d S N)_PerimeterPen__startPointr   r   r   r   r   _moveTo'   s   
zPerimeterPen._moveToc                 C   s&   |   }|| jkr| | j d S d S r   )_getCurrentPointr   _lineTor   r   r   r   
_closePath*   s   
zPerimeterPen._closePathc                 C   s    |   }|  jt||7  _d S r   )r   r   r   )r   r   r   r   r   r   r    /   s   zPerimeterPen._lineToc                 C      |  j t|||7  _ d S r   )r   r   r   c0c1c2r   r   r   r   3      zPerimeterPen._addQuadraticExactc                 C   r"   r   )r   r   r#   r   r   r   r   6   r'   z$PerimeterPen._addQuadraticQuadraturec                 C   s&   |   }| t| t| t|  d S r   )r   r   complex)r   r   p2r   r   r   r   _qCurveToOne9   s   zPerimeterPen._qCurveToOnec                 C   s    |  j t||||| j7  _ d S r   )r   r   r   r   r$   r%   r&   c3r   r   r   r   =   s    zPerimeterPen._addCubicRecursivec                 C   s   |  j t||||7  _ d S r   )r   r   r+   r   r   r   r   @   s   z PerimeterPen._addCubicQuadraturec                 C   s,   |   }| t| t| t| t|  d S r   )r   r   r(   )r   r   r)   Zp3r   r   r   r   _curveToOneC   s   $zPerimeterPen._curveToOne)Nr   )__name__
__module____qualname__r   r   r!   r    r   r   r*   r   r   r-   r   r   r   r   r      s    
)__doc__ZfontTools.pens.basePenr   ZfontTools.misc.bezierToolsr   r   r   r   r	   __all__r   r   r   r   r   r   <module>   s   