§
    ¢”j‘  ã                   óN   — d dl mZ d dlmZ d dlmZ d dlZ G d„ de¦  «        ZdS )é    )Úquadratic_to_curves)ÚContourFilterPen)ÚReverseContourPenNc                   ó6   ‡ — e Zd ZdZ	 	 	 dˆ fd„	Zd„ Zd„ Zˆ xZS )ÚQu2CuPena5  A filter pen to convert quadratic bezier splines to cubic curves
    using the FontTools SegmentPen protocol.

    Args:

        other_pen: another SegmentPen used to draw the transformed outline.
        max_err: maximum approximation error in font units. For optimal results,
            if you know the UPEM of the font, we recommend setting this to a
            value equal, or close to UPEM / 1000.
        reverse_direction: flip the contours' direction but keep starting point.
        stats: a dictionary counting the point numbers of cubic segments.
    FNc                 ó–   •— |rt          |¦  «        }t          ¦   «                              |¦  «         || _        || _        || _        d S )N)r   ÚsuperÚ__init__Ú	all_cubicÚmax_errÚstats)ÚselfÚ	other_penr   r   Úreverse_directionr   Ú	__class__s         €úf/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/pens/qu2cuPen.pyr
   zQu2CuPen.__init__$   sK   ø€ ð ð 	5Ý)¨)Ñ4Ô4ˆIÝ‰Œ×Ò˜Ñ#Ô#Ð#Ø"ˆŒØˆŒØˆŒ
ˆ
ˆ
ó    c              #   óN  K  — t          || j        | j        ¬¦  «        }| j        �J|D ]G}t	          t          |¦  «        dz
  ¦  «        }| j                             |d¦  «        dz   | j        |<   ŒH|D ]2}t          |¦  «        dk    rd|dd …         fV — Œ$d|dd …         fV — Œ3d S )N)r   é   r   é   é   ÚcurveToÚqCurveTo)r   r   r   r   ÚstrÚlenÚget)r   ÚqÚcurvesÚcurveÚns        r   Ú_quadratics_to_curvezQu2CuPen._quadratics_to_curve3   sÎ   è è € Ý$ Q¨¬ÀÄÐOÑOÔOˆØŒ:Ð!Øð 9ð 9�Ý�˜E™
œ
 Q™Ñ'Ô'�Ø $¤
§¢¨q°!Ñ 4Ô 4°qÑ 8�”
˜1‘�Øð 	.ð 	.ˆEÝ�5‰zŒz˜QŠˆØ  %¨¨¨¤)Ð,Ð,Ð,Ð,Ð,à! 5¨¨¨¤9Ð-Ð-Ð-Ð-Ð-ð		.ð 	.r   c                 óÀ  — g }d }g }|D ]­\  }}|dk    rS| j         st          |¦  «        dk    r9|d         �1|d         €t          d¦  «        ‚|                     |f|z   ¦  «         nC|r*|                     |                      |¦  «        ¦  «         g }|                     ||f¦  «         |r|d         nd }Œ®|r(|                     |                      |¦  «        ¦  «         | j         sö|}g }|D ]ï\  }}|dk    rÍ|rË|d         d         dk    r¹|d         d         d         }|d         d         d         }|d         }	|�‡t          j        |	d         |d         z
  |d         |d         z
  ¦  «        rTt          j        |	d         |d         z
  |d         |d         z
  ¦  «        r!|d         d         d d…         |z   }
||
f|d<   ŒØ|                     ||f¦  «         Œð|S )Nr   r   éÿÿÿÿz4oncurve-less contours with all_cubic not implementedr   r   éþÿÿÿ)r   r   ÚNotImplementedErrorÚappendÚextendr!   ÚmathÚisclose)r   ÚcontourÚ
quadraticsÚ	currentPtÚ
newContourÚopÚargsÚpt0Úpt1Úpt2ÚnewArgss              r   ÚfilterContourzQu2CuPen.filterContour?   s;  € Øˆ
Øˆ	Øˆ
Øð 	3ð 	3‰HˆB�Ø�ZÒÐØ”ð  Ý#& t¡9¤9¨q¢= =°T¸"´XÐ5Ià˜”8Ð#Ý-ØNñô ð ð ×!Ò! 9 ,°Ñ"5Ñ6Ô6Ð6Ð6àð $Ø×%Ò% d×&?Ò&?À
Ñ&KÔ&KÑLÔLÐLØ!#�JØ×!Ò! 2 t *Ñ-Ô-Ð-Ø$(Ð2˜˜Rœ˜¨dˆIˆIØð 	EØ×Ò˜d×7Ò7¸
ÑCÔCÑDÔDÐDàŒ~ð 	.à ˆGØˆJØ#ð .ð .‘��DØ˜Ò#Ð#¨
Ð#°zÀ"´~ÀaÔ7HÈJÒ7VÐ7VØ$ Rœ.¨Ô+¨BÔ/�CØ$ Rœ.¨Ô+¨BÔ/�CØ˜qœ'�Cà˜Ý œL¨¨Q¬°#°a´&©¸#¸a¼&À3ÀqÄ6¹/ÑJÔJð (å œL¨¨Q¬°#°a´&©¸#¸a¼&À3ÀqÄ6¹/ÑJÔJð (ð #-¨R¤.°Ô"3°C°R°CÔ"8¸4Ñ"?˜Ø*,¨g¨˜
 2™Ø à×!Ò! 2 t *Ñ-Ô-Ð-Ð-àÐr   )FFN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r!   r4   Ú__classcell__)r   s   @r   r   r      sp   ø€ € € € € ðð ð" ØØðð ð ð ð ð ð
.ð 
.ð 
.ð*ð *ð *ð *ð *ð *ð *r   r   )ÚfontTools.qu2cur   ÚfontTools.pens.filterPenr   Ú fontTools.pens.reverseContourPenr   r(   r   © r   r   ú<module>r>      s…   ðð  0Ð /Ð /Ð /Ð /Ð /Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø >Ð >Ð >Ð >Ð >Ð >Ø €€€ðSð Sð Sð Sð SÐñ Sô Sð Sð Sð Sr   