[interpolatable] Derive RecordingPen from AbstractPen, not BasePen
This commit is contained in:
parent
f0584a8507
commit
5a06247ef8
@ -8,7 +8,7 @@ other interpolatability (or lack thereof) issues.
|
|||||||
from __future__ import print_function, division, absolute_import
|
from __future__ import print_function, division, absolute_import
|
||||||
from fontTools.misc.py23 import *
|
from fontTools.misc.py23 import *
|
||||||
|
|
||||||
from fontTools.pens.basePen import BasePen
|
from fontTools.pens.basePen import AbstractPen, BasePen
|
||||||
from fontTools.pens.statisticsPen import StatisticsPen
|
from fontTools.pens.statisticsPen import StatisticsPen
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
@ -47,33 +47,28 @@ class PerContourOrComponentPen(PerContourPen):
|
|||||||
self.value[-1].addComponent(glyphName, transformation)
|
self.value[-1].addComponent(glyphName, transformation)
|
||||||
|
|
||||||
|
|
||||||
class RecordingNoComponentsPen(BasePen):
|
class RecordingPen(AbstractPen):
|
||||||
def __init__(self, glyphset=None): # glyphset is unused
|
def __init__(self):
|
||||||
BasePen.__init__(self, glyphset)
|
|
||||||
self._glyphset = glyphset
|
|
||||||
self.value = []
|
self.value = []
|
||||||
def _moveTo(self, p0):
|
def moveTo(self, p0):
|
||||||
self.value.append(('moveTo', (p0,)))
|
self.value.append(('moveTo', (p0,)))
|
||||||
def _lineTo(self, p1):
|
def lineTo(self, p1):
|
||||||
self.value.append(('lineTo', (p1,)))
|
self.value.append(('lineTo', (p1,)))
|
||||||
def _qCurveToOne(self, p1, p2):
|
def qCurveTo(self, *points):
|
||||||
self.value.append(('qCurveTo', (p1,p2)))
|
self.value.append(('qCurveTo', points))
|
||||||
def _curveToOne(self, p1, p2, p3):
|
def curveTo(self, *points):
|
||||||
self.value.append(('curveTo', (p1,p2,p3)))
|
self.value.append(('curveTo', points))
|
||||||
def _closePath(self):
|
def closePath(self):
|
||||||
self.value.append(('closePath', ()))
|
self.value.append(('closePath', ()))
|
||||||
def _endPath(self):
|
def endPath(self):
|
||||||
self.value.append(('endPath', ()))
|
self.value.append(('endPath', ()))
|
||||||
|
def addComponent(self, glyphName, transformation):
|
||||||
|
self.value.append(('addComponent', (glyphName, transformation)))
|
||||||
|
|
||||||
def replay(self, pen):
|
def replay(self, pen):
|
||||||
for operator,operands in self.value:
|
for operator,operands in self.value:
|
||||||
getattr(pen, operator)(*operands)
|
getattr(pen, operator)(*operands)
|
||||||
|
|
||||||
class RecordingPen(RecordingNoComponentsPen):
|
|
||||||
|
|
||||||
def addComponent(self, glyphName, transformation):
|
|
||||||
self.value.append(('addComponent', (glyphName, transformation)))
|
|
||||||
|
|
||||||
|
|
||||||
def _vdiff(v0, v1):
|
def _vdiff(v0, v1):
|
||||||
return tuple(b-a for a,b in zip(v0,v1))
|
return tuple(b-a for a,b in zip(v0,v1))
|
||||||
@ -137,7 +132,8 @@ def test(glyphsets, glyphs=None, names=None):
|
|||||||
#print('.', end='')
|
#print('.', end='')
|
||||||
glyph = glyphset[glyph_name]
|
glyph = glyphset[glyph_name]
|
||||||
|
|
||||||
perContourPen = PerContourOrComponentPen(RecordingPen, glyphset=glyphset)
|
penClass = lambda glyphset: RecordingPen()
|
||||||
|
perContourPen = PerContourOrComponentPen(penClass, glyphset=glyphset)
|
||||||
glyph.draw(perContourPen)
|
glyph.draw(perContourPen)
|
||||||
contourPens = perContourPen.value
|
contourPens = perContourPen.value
|
||||||
del perContourPen
|
del perContourPen
|
||||||
|
Loading…
x
Reference in New Issue
Block a user