1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- from fontTools.pens.basePen import BasePen
- from Quartz.CoreGraphics import CGPathCreateMutable, CGPathMoveToPoint
- from Quartz.CoreGraphics import CGPathAddLineToPoint, CGPathAddCurveToPoint
- from Quartz.CoreGraphics import CGPathAddQuadCurveToPoint, CGPathCloseSubpath
- __all__ = ["QuartzPen"]
- class QuartzPen(BasePen):
- """A pen that creates a CGPath
- Parameters
- - path: an optional CGPath to add to
- - xform: an optional CGAffineTransform to apply to the path
- """
- def __init__(self, glyphSet, path=None, xform=None):
- BasePen.__init__(self, glyphSet)
- if path is None:
- path = CGPathCreateMutable()
- self.path = path
- self.xform = xform
- def _moveTo(self, pt):
- x, y = pt
- CGPathMoveToPoint(self.path, self.xform, x, y)
- def _lineTo(self, pt):
- x, y = pt
- CGPathAddLineToPoint(self.path, self.xform, x, y)
- def _curveToOne(self, p1, p2, p3):
- (x1, y1), (x2, y2), (x3, y3) = p1, p2, p3
- CGPathAddCurveToPoint(self.path, self.xform, x1, y1, x2, y2, x3, y3)
- def _qCurveToOne(self, p1, p2):
- (x1, y1), (x2, y2) = p1, p2
- CGPathAddQuadCurveToPoint(self.path, self.xform, x1, y1, x2, y2)
- def _closePath(self):
- CGPathCloseSubpath(self.path)
|