
    <`                         d dl mZ d Z G d de          Zedk    r,d dlZd dlZ ej         ej                    j	                   dS dS )    )BasePenc                 @    d                     d | D                       S )N c                 ,    g | ]}t          |          S  )str).0is     9lib/python3.11/site-packages/fontTools/pens/svgPathPen.py
<listcomp>z!pointToString.<locals>.<listcomp>   s    (((SVV(((    )join)pts    r   pointToStringr      s#    88((R((()))r   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )
SVGPathPenc                 h    t          j        | |           g | _        d | _        d | _        d | _        d S )N)r   __init__	_commands_lastCommand_lastX_lastY)selfglyphSets     r   r   zSVGPathPen.__init__
   s6    x((( r   c                 T    | j         dk    r| j                            d           dS dS )z
        >>> pen = SVGPathPen(None)
        >>> pen.moveTo((0, 0))
        >>> pen.moveTo((10, 10))
        >>> pen._commands
        ['M10 10']
        MN)r   r   popr   s    r   _handleAnchorzSVGPathPen._handleAnchor   s6     ##Nr""""" $#r   c                     |                                   dt          |          z  }| j                            |           d| _        |\  | _        | _        dS )aV  
        >>> pen = SVGPathPen(None)
        >>> pen.moveTo((0, 0))
        >>> pen._commands
        ['M0 0']

        >>> pen = SVGPathPen(None)
        >>> pen.moveTo((10, 0))
        >>> pen._commands
        ['M10 0']

        >>> pen = SVGPathPen(None)
        >>> pen.moveTo((0, 10))
        >>> pen._commands
        ['M0 10']
        zM%sr   N)r    r   r   appendr   r   r   )r   r   ts      r   _moveTozSVGPathPen._moveTo   sX    " 	]2&&'a   #% T[[[r   c                    |\  }}|| j         k    r|| j        k    rdS || j         k    rd}t          |          }nN|| j        k    rd}t          |          }n1| j        dk    rd}dt	          |          z   }nd}t	          |          }d}|r||z  }|| _        ||z  }| j                            |           |\  | _         | _        dS )aU  
        # duplicate point
        >>> pen = SVGPathPen(None)
        >>> pen.moveTo((10, 10))
        >>> pen.lineTo((10, 10))
        >>> pen._commands
        ['M10 10']

        # vertical line
        >>> pen = SVGPathPen(None)
        >>> pen.moveTo((10, 10))
        >>> pen.lineTo((10, 0))
        >>> pen._commands
        ['M10 10', 'V0']

        # horizontal line
        >>> pen = SVGPathPen(None)
        >>> pen.moveTo((10, 10))
        >>> pen.lineTo((0, 10))
        >>> pen._commands
        ['M10 10', 'H0']

        # basic
        >>> pen = SVGPathPen(None)
        >>> pen.lineTo((70, 80))
        >>> pen._commands
        ['L70 80']

        # basic following a moveto
        >>> pen = SVGPathPen(None)
        >>> pen.moveTo((0, 0))
        >>> pen.lineTo((10, 10))
        >>> pen._commands
        ['M0 0', ' 10 10']
        NVHr   r   L )r   r   r   r   r   r   r"   )r   r   xycmdptsr#   s          r   _lineTozSVGPathPen._lineTo3   s    H 1T[ 0 0F$+Ca&&CC$+Ca&&CC#%%Cb)))CC C##C 	$HA #D	Sa   #% T[[[r   c                     d}|t          |          dz   z  }|t          |          dz   z  }|t          |          z  }| j                            |           d| _        |\  | _        | _        dS )z
        >>> pen = SVGPathPen(None)
        >>> pen.curveTo((10, 20), (30, 40), (50, 60))
        >>> pen._commands
        ['C10 20 30 40 50 60']
        Cr   Nr   r   r"   r   r   r   )r   pt1pt2pt3r#   s        r   _curveToOnezSVGPathPen._curveToOneu   sy     	]3#%%	]3#%%	]3a   #& T[[[r   c                     |J d}|t          |          dz   z  }|t          |          z  }| j                            |           d| _        |\  | _        | _        dS )z
        >>> pen = SVGPathPen(None)
        >>> pen.qCurveTo((10, 20), (30, 40))
        >>> pen._commands
        ['Q10 20 30 40']
        NQr   r1   )r   r2   r3   r#   s       r   _qCurveToOnezSVGPathPen._qCurveToOne   sk     	]3#%%	]3a   #& T[[[r   c                 d    | j                             d           d| _        dx| _        | _        dS )zp
        >>> pen = SVGPathPen(None)
        >>> pen.closePath()
        >>> pen._commands
        ['Z']
        ZN)r   r"   r   r   r   r   s    r   
_closePathzSVGPathPen._closePath   s4     	c"""$((dkkkr   c                 X    |                                   d| _        dx| _        | _        dS )zn
        >>> pen = SVGPathPen(None)
        >>> pen.endPath()
        >>> pen._commands
        ['Z']
        N)r;   r   r   r   r   s    r   _endPathzSVGPathPen._endPath   s.     	 $((dkkkr   c                 6    d                     | j                  S )Nr)   )r   r   r   s    r   getCommandszSVGPathPen.getCommands   s    wwt~&&&r   N)__name__
__module____qualname__r   r    r$   r.   r5   r8   r;   r=   r?   r   r   r   r   r      s          	# 	# 	#& & &.@& @& @&D' ' '' ' '	) 	) 	)	) 	) 	)' ' ' ' 'r   r   __main__N)
fontTools.pens.basePenr   r   r   r@   sysdoctestexittestmodfailedr   r   r   <module>rJ      s    * * * * * ** * *b' b' b' b' b' b' b' b'J zJJJNNNCH_W_%&&&&& r   