class GlyphPointPen(AbstractPointPen):
    """A point pen.

    See :mod:`fontTools.pens.basePen` and :mod:`fontTools.pens.pointPen` for an
    introduction to pens.
    """

    __slots__ = "_glyph", "_contour"

    def __init__(self, glyph: "Glyph") -> None:
        self._glyph: "Glyph" = glyph
        self._contour: Optional[Contour] = None

    def beginPath(self,
                  identifier: Optional[str] = None,
                  **kwargs: Any) -> None:
        self._contour = Contour(identifier=identifier)

    def endPath(self) -> None:
        if self._contour is None:
            raise ValueError("Call beginPath first.")
        self._glyph.contours.append(self._contour)
        self._contour = None

    def addPoint(
        self,
        pt: Tuple[float, float],
        segmentType: Optional[str] = None,
        smooth: bool = False,
        name: Optional[str] = None,
        identifier: Optional[str] = None,
        **kwargs: Any,
    ) -> None:
        if self._contour is None:
            raise ValueError("Call beginPath first.")
        x, y = pt
        self._contour.append(
            Point(x,
                  y,
                  type=segmentType,
                  smooth=smooth,
                  name=name,
                  identifier=identifier))

    def addComponent(
        self,
        baseGlyph: str,
        transformation: Transform,
        identifier: Optional[str] = None,
        **kwargs: Any,
    ) -> None:
        component = Component(baseGlyph, transformation, identifier=identifier)
        self._glyph.components.append(component)
Esempio n. 2
0
class GlyphPointPen(AbstractPointPen):
    __slots__ = "_glyph", "_contour"

    def __init__(self, glyph):
        self._glyph = glyph
        self._contour = None

    def beginPath(self, identifier=None, **kwargs):
        self._contour = Contour(identifier=identifier)

    def endPath(self):
        self._glyph.contours.append(self._contour)
        self._contour = None

    def addPoint(self,
                 pt,
                 segmentType=None,
                 smooth=False,
                 name=None,
                 identifier=None,
                 **kwargs):
        x, y = pt
        self._contour.append(
            Point(x,
                  y,
                  type=segmentType,
                  smooth=smooth,
                  name=name,
                  identifier=identifier))

    def addComponent(self,
                     baseGlyph,
                     transformation,
                     identifier=None,
                     **kwargs):
        component = Component(baseGlyph, transformation, identifier=identifier)
        self._glyph.components.append(component)
Esempio n. 3
0
def test_contour_getControlBounds(contour: Contour) -> None:
    assert contour.getControlBounds() == (0, 0, 10, 20)
    assert contour.getControlBounds(layer={}) == (0, 0, 10, 20)
Esempio n. 4
0
def test_contour_getBounds(contour: Contour) -> None:
    assert contour.getBounds() == (0, 0, 7.5, 20)
    assert contour.getBounds(layer={}) == (0, 0, 7.5, 20)
    assert contour.bounds == (0, 0, 7.5, 20)
Esempio n. 5
0
 def beginPath(self, identifier: str | None = None, **kwargs: Any) -> None:
     self._contour = Contour(identifier=identifier)
Esempio n. 6
0
 def beginPath(self, identifier=None, **kwargs):
     self._contour = Contour(identifier=identifier)
 def beginPath(self,
               identifier: Optional[str] = None,
               **kwargs: Any) -> None:
     self._contour = Contour(identifier=identifier)