From 8879318c0bd0d206ec41883f31471b40b12a7518 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 21 Feb 2017 12:10:30 -0600 Subject: [PATCH] Move RecordingPen to fontTools.pens.recordingPen --- Lib/fontTools/pens/recordingPen.py | 40 ++++++++++++++++++++++++++++++ Snippets/interpolatable.py | 24 +----------------- 2 files changed, 41 insertions(+), 23 deletions(-) create mode 100644 Lib/fontTools/pens/recordingPen.py diff --git a/Lib/fontTools/pens/recordingPen.py b/Lib/fontTools/pens/recordingPen.py new file mode 100644 index 000000000..efd39198c --- /dev/null +++ b/Lib/fontTools/pens/recordingPen.py @@ -0,0 +1,40 @@ +from __future__ import print_function, division, absolute_import +from fontTools.misc.py23 import * +from fontTools.pens.basePen import AbstractPen + + +__all__ = ["AbstractPen"] + + +class RecordingPen(AbstractPen): + def __init__(self): + self.value = [] + def moveTo(self, p0): + self.value.append(('moveTo', (p0,))) + def lineTo(self, p1): + self.value.append(('lineTo', (p1,))) + def qCurveTo(self, *points): + self.value.append(('qCurveTo', points)) + def curveTo(self, *points): + self.value.append(('curveTo', points)) + def closePath(self): + self.value.append(('closePath', ())) + def endPath(self): + self.value.append(('endPath', ())) + def addComponent(self, glyphName, transformation): + self.value.append(('addComponent', (glyphName, transformation))) + + def replay(self, pen): + for operator,operands in self.value: + getattr(pen, operator)(*operands) + + +if __name__ == "__main__": + from fontTools.pens.basePen import _TestPen + pen = RecordingPen() + pen.moveTo((0, 0)) + pen.lineTo((0, 100)) + pen.curveTo((50, 75), (60, 50), (50, 25)) + pen.closePath() + from pprint import pprint + pprint(pen.value) diff --git a/Snippets/interpolatable.py b/Snippets/interpolatable.py index be371b8e5..b66329f70 100755 --- a/Snippets/interpolatable.py +++ b/Snippets/interpolatable.py @@ -9,6 +9,7 @@ from __future__ import print_function, division, absolute_import from fontTools.misc.py23 import * from fontTools.pens.basePen import AbstractPen, BasePen +from fontTools.pens.recordingPen import RecordingPen from fontTools.pens.statisticsPen import StatisticsPen import itertools @@ -47,29 +48,6 @@ class PerContourOrComponentPen(PerContourPen): self.value[-1].addComponent(glyphName, transformation) -class RecordingPen(AbstractPen): - def __init__(self): - self.value = [] - def moveTo(self, p0): - self.value.append(('moveTo', (p0,))) - def lineTo(self, p1): - self.value.append(('lineTo', (p1,))) - def qCurveTo(self, *points): - self.value.append(('qCurveTo', points)) - def curveTo(self, *points): - self.value.append(('curveTo', points)) - def closePath(self): - self.value.append(('closePath', ())) - def endPath(self): - self.value.append(('endPath', ())) - def addComponent(self, glyphName, transformation): - self.value.append(('addComponent', (glyphName, transformation))) - - def replay(self, pen): - for operator,operands in self.value: - getattr(pen, operator)(*operands) - - def _vdiff(v0, v1): return tuple(b-a for a,b in zip(v0,v1)) def _vlen(vec):