
    ]Mh                     H   d dl mZmZ ddgZ G d de          Z G d de          Zedk    rsd dlmZ  e ed          d	          Z	e	
                    d
           e	                    d           e	                    dddd
           e	                                 dS dS )    )	FilterPenFilterPointPenTransformPenTransformPointPenc                   R     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Z xZS )r   zkPen that transforms all coordinates using a Affine transformation,
    and passes them to another pen.
    c                     t          t          |                               |           t          |d          sddlm}  || }|| _        |j        | _        g | _	        dS )zThe 'outPen' argument is another pen object. It will receive the
        transformed coordinates. The 'transformation' argument can either
        be a six-tuple, or a fontTools.misc.transform.Transform object.
        transformPointr   	TransformN)
superr   __init__hasattrfontTools.misc.transformr   _transformationr	   _transformPoint_stack)selfoutPentransformationr   	__class__s       [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/pens/transformPen.pyr   zTransformPen.__init__   sr    
 	lD!!**6222~'788 	8::::::&Y7N--<    c                 `    | j                             |                     |                     d S N)_outPenmoveTor   r   pts     r   r   zTransformPen.moveTo   ,    D004455555r   c                 `    | j                             |                     |                     d S r   )r   lineTor   r   s     r   r!   zTransformPen.lineTo   r   r   c                 J     | j         j        |                     |            d S r   )r   curveTo_transformPointsr   pointss     r   r#   zTransformPen.curveTo    s(    d33F;;<<<<r   c                     |d         "|                      |d d                   d gz   }n|                      |          } | j        j        |  d S )N)r$   r   qCurveTor%   s     r   r)   zTransformPen.qCurveTo#   s[    ":**6#2#;774&@FF**622Fv&&&&r   c                 .    | j         fd|D             S )Nc                 &    g | ]} |          S  r,   ).0r   r	   s     r   
<listcomp>z1TransformPen._transformPoints.<locals>.<listcomp>,   s#    444rr""444r   )r   )r   r&   r	   s     @r   r$   zTransformPen._transformPoints*   s%    -4444V4444r   c                 8    | j                                          d S r   )r   	closePathr   s    r   r0   zTransformPen.closePath.   s         r   c                 8    | j                                          d S r   )r   endPathr1   s    r   r3   zTransformPen.endPath1   s    r   c                 p    | j                             |          }| j                            ||           d S r   r   	transformr   addComponent)r   	glyphNamer   s      r   r7   zTransformPen.addComponent4   s6    -77GG!!)^<<<<<r   )__name__
__module____qualname____doc__r   r   r!   r#   r)   r$   r0   r3   r7   __classcell__r   s   @r   r   r      s             6 6 66 6 6= = =' ' '5 5 5! ! !  = = = = = = =r   c                   0     e Zd ZdZ fdZddZd Z xZS )r   a^  PointPen that transforms all coordinates using a Affine transformation,
    and passes them to another PointPen.

    For example::

        >>> from fontTools.pens.recordingPen import RecordingPointPen
        >>> rec = RecordingPointPen()
        >>> pen = TransformPointPen(rec, (2, 0, 0, 2, -10, 5))
        >>> v = iter(rec.value)
        >>> pen.beginPath(identifier="contour-0")
        >>> next(v)
        ('beginPath', (), {'identifier': 'contour-0'})

        >>> pen.addPoint((100, 100), "line")
        >>> next(v)
        ('addPoint', ((190, 205), 'line', False, None), {})

        >>> pen.endPath()
        >>> next(v)
        ('endPath', (), {})

        >>> pen.addComponent("a", (1, 0, 0, 1, -10, 5), identifier="component-0")
        >>> next(v)
        ('addComponent', ('a', <Transform [2 0 0 2 -30 15]>), {'identifier': 'component-0'})
    c                     t                                          |           t          |d          sddlm}  || }|| _        |j        | _        dS )zThe 'outPointPen' argument is another point pen object.
        It will receive the transformed coordinates.
        The 'transformation' argument can either be a six-tuple, or a
        fontTools.misc.transform.Transform object.
        r	   r   r
   N)r   r   r   r   r   r   r	   r   )r   outPointPenr   r   r   s       r   r   zTransformPointPen.__init__T   sg     	%%%~'788 	8::::::&Y7N--<r   NFc                 X     | j         j        |                     |          |||fi | d S r   )r   addPointr   )r   r   segmentTypesmoothnamekwargss         r   rC   zTransformPointPen.addPointb   sI      $$k64	
 	
CI	
 	
 	
 	
 	
r   c                 b    | j                             |          } | j        j        ||fi | d S r   r5   )r   baseGlyphNamer   rG   s       r   r7   zTransformPointPen.addComponentg   s=    -77GG!!-JJ6JJJJJr   )NFN)r9   r:   r;   r<   r   rC   r7   r=   r>   s   @r   r   r   9   sl         4= = = = =
 
 
 

K K K K K K Kr   __main__)_TestPenN)   r   g      ?rL   ir   )r   r   )r   d   )2   K   )<   rN   )rN      )fontTools.pens.filterPenr   r   __all__r   r   r9   fontTools.pens.basePenrK   penr   r!   r#   r0   r,   r   r   <module>rV      s   > > > > > > > > .
//= /= /= /= /=9 /= /= /=d0K 0K 0K 0K 0K 0K 0K 0Kf z//////
,xx~~'=
>
>CJJvJJxKK(Hf555MMOOOOO r   