1*e1fe3e4aSElliott Hughes"""Pen multiplexing drawing to one or more pens.""" 2*e1fe3e4aSElliott Hughes 3*e1fe3e4aSElliott Hughesfrom fontTools.pens.basePen import AbstractPen 4*e1fe3e4aSElliott Hughes 5*e1fe3e4aSElliott Hughes 6*e1fe3e4aSElliott Hughes__all__ = ["TeePen"] 7*e1fe3e4aSElliott Hughes 8*e1fe3e4aSElliott Hughes 9*e1fe3e4aSElliott Hughesclass TeePen(AbstractPen): 10*e1fe3e4aSElliott Hughes """Pen multiplexing drawing to one or more pens. 11*e1fe3e4aSElliott Hughes 12*e1fe3e4aSElliott Hughes Use either as TeePen(pen1, pen2, ...) or TeePen(iterableOfPens).""" 13*e1fe3e4aSElliott Hughes 14*e1fe3e4aSElliott Hughes def __init__(self, *pens): 15*e1fe3e4aSElliott Hughes if len(pens) == 1: 16*e1fe3e4aSElliott Hughes pens = pens[0] 17*e1fe3e4aSElliott Hughes self.pens = pens 18*e1fe3e4aSElliott Hughes 19*e1fe3e4aSElliott Hughes def moveTo(self, p0): 20*e1fe3e4aSElliott Hughes for pen in self.pens: 21*e1fe3e4aSElliott Hughes pen.moveTo(p0) 22*e1fe3e4aSElliott Hughes 23*e1fe3e4aSElliott Hughes def lineTo(self, p1): 24*e1fe3e4aSElliott Hughes for pen in self.pens: 25*e1fe3e4aSElliott Hughes pen.lineTo(p1) 26*e1fe3e4aSElliott Hughes 27*e1fe3e4aSElliott Hughes def qCurveTo(self, *points): 28*e1fe3e4aSElliott Hughes for pen in self.pens: 29*e1fe3e4aSElliott Hughes pen.qCurveTo(*points) 30*e1fe3e4aSElliott Hughes 31*e1fe3e4aSElliott Hughes def curveTo(self, *points): 32*e1fe3e4aSElliott Hughes for pen in self.pens: 33*e1fe3e4aSElliott Hughes pen.curveTo(*points) 34*e1fe3e4aSElliott Hughes 35*e1fe3e4aSElliott Hughes def closePath(self): 36*e1fe3e4aSElliott Hughes for pen in self.pens: 37*e1fe3e4aSElliott Hughes pen.closePath() 38*e1fe3e4aSElliott Hughes 39*e1fe3e4aSElliott Hughes def endPath(self): 40*e1fe3e4aSElliott Hughes for pen in self.pens: 41*e1fe3e4aSElliott Hughes pen.endPath() 42*e1fe3e4aSElliott Hughes 43*e1fe3e4aSElliott Hughes def addComponent(self, glyphName, transformation): 44*e1fe3e4aSElliott Hughes for pen in self.pens: 45*e1fe3e4aSElliott Hughes pen.addComponent(glyphName, transformation) 46*e1fe3e4aSElliott Hughes 47*e1fe3e4aSElliott Hughes 48*e1fe3e4aSElliott Hughesif __name__ == "__main__": 49*e1fe3e4aSElliott Hughes from fontTools.pens.basePen import _TestPen 50*e1fe3e4aSElliott Hughes 51*e1fe3e4aSElliott Hughes pen = TeePen(_TestPen(), _TestPen()) 52*e1fe3e4aSElliott Hughes pen.moveTo((0, 0)) 53*e1fe3e4aSElliott Hughes pen.lineTo((0, 100)) 54*e1fe3e4aSElliott Hughes pen.curveTo((50, 75), (60, 50), (50, 25)) 55*e1fe3e4aSElliott Hughes pen.closePath() 56