from __future__ import print_function, division, absolute_import
from fontTools.misc.py23 import *
from fontTools.pens.basePen import BasePen


__all__ = ["WxPen"]


class WxPen(BasePen):

	def __init__(self, glyphSet, path=None):
		BasePen.__init__(self, glyphSet)
		if path is None:
			import wx
			path = wx.GraphicsRenderer.GetDefaultRenderer().CreatePath()
		self.path = path

	def _moveTo(self, p):
		self.path.MoveToPoint(*p)

	def _lineTo(self, p):
		self.path.AddLineToPoint(*p)

	def _curveToOne(self, p1, p2, p3):
		self.path.AddCurveToPoint(*p1+p2+p3)

	def _qCurveToOne(self, p1, p2):
		self.path.AddQuadCurveToPoint(*p1+p2)

	def _closePath(self):
		self.path.CloseSubpath()
