diff --git a/Lib/fontTools/pens/teePen.py b/Lib/fontTools/pens/teePen.py new file mode 100644 index 000000000..31aba7b62 --- /dev/null +++ b/Lib/fontTools/pens/teePen.py @@ -0,0 +1,43 @@ +from __future__ import print_function, division, absolute_import +from fontTools.misc.py23 import * +from fontTools.pens.basePen import AbstractPen + + +__all__ = ["TeePen"] + + +class TeePen(AbstractPen): + def __init__(self, *pens): + if len(pens) == 1: + pens = pens[0] + self.pens = pens + def moveTo(self, p0): + for pen in self.pens: + pen.moveTo(p0) + def lineTo(self, p1): + for pen in self.pens: + pen.lineTo(p1) + def qCurveTo(self, *points): + for pen in self.pens: + pen.qCurveTo(*points) + def curveTo(self, *points): + for pen in self.pens: + pen.curveTo(*points) + def closePath(self): + for pen in self.pens: + pen.closePath() + def endPath(self): + for pen in self.pens: + pen.endPath() + def addComponent(self, glyphName, transformation): + for pen in self.pens: + pen.addComponent(glyphName, transformation) + + +if __name__ == "__main__": + from fontTools.pens.basePen import _TestPen + pen = TeePen(_TestPen(), _TestPen()) + pen.moveTo((0, 0)) + pen.lineTo((0, 100)) + pen.curveTo((50, 75), (60, 50), (50, 25)) + pen.closePath() diff --git a/Snippets/interpolatable.py b/Snippets/interpolatable.py index c646ad07e..37d8f63ba 100755 --- a/Snippets/interpolatable.py +++ b/Snippets/interpolatable.py @@ -75,34 +75,6 @@ class RecordingPen(RecordingNoComponentsPen): self.value.append(('addComponent', (glyphName, transformation))) -class TeePen(object): - def __init__(self, *pens, glyphset=None): # glyphset is unused - if len(pens) == 1: - pens = pens[0] - self.pens = pens - def moveTo(self, p0): - for pen in self.pens: - pen.moveTo(p0) - def lineTo(self, p1): - for pen in self.pens: - pen.lineTo(p1) - def qCurveTo(self, p1, p2): - for pen in self.pens: - pen.qCurveTo(p1, p2) - def curveTo(self, p1, p2, p3): - for pen in self.pens: - pen.curveTo(p1, p2, p3) - def closePath(self): - for pen in self.pens: - pen.closePath() - def endPath(self): - for pen in self.pens: - pen.endPath() - def addComponent(self, glyphName, transformation): - for pen in self.pens: - pen.addComponent(glyphName, transformation) - - def _vdiff(v0, v1): return tuple(b-a for a,b in zip(v0,v1)) def _vlen(vec):