"""Pen multiplexing drawing to one or more pens."""
from __future__ import print_function, division, absolute_import
from fontTools.misc.py23 import *
from fontTools.pens.basePen import AbstractPen


__all__ = ["TeePen"]


class TeePen(AbstractPen):
	"""Pen multiplexing drawing to one or more pens.

	Use either as TeePen(pen1, pen2, ...) or TeePen(iterableOfPens)."""

	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()
