INNER CODE UNIT · Python
OutlinePen
varunsalian/debrify · dev/launch_animations/generate_recreations.py:29
class OutlinePen(BasePen):
def __init__(self, glyphs=None, scale=1):
super().__init__(glyphs)
self.scale = scale
self.paths = []
def point(self, p): return [round(p[0]*self.scale, 4), round(-p[1]*self.scale, 4)]
def _moveTo(self, p):
self.v, self.ins, self.outs = [self.point(p)], [[0, 0]], [[0, 0]]
def _lineTo(self, p):
self.v.append(self.point(p)); self.ins.append([0, 0]); self.outs.append([0, 0])
def _curveToOne(self, a, b, end):
a, b, end = self.point(a), self.point(b), self.point(end)
self.outs[-1] = [a[i]-self.v[-1][i] for i in (0, 1)]
self.v.append(end); self.ins.append([b[i]-end[i] for i in (0, 1)]); self.outs.append([0, 0])
def _qCurveToOne(self, control, end):
start = self._getCurrentPoint()
a = tuple(start[i]+(control[i]-start[i])*2/3 for i in (0, 1))
b = tuple(end[i]+(control[i]-end[i])*2/3 for i in (0, 1))