def recompute(self): path = CreatePath() vertices = self.vertices radius = self.radius twopi = 2 * pi halfpi = pi / 2 for i in range(vertices + 1): path.AppendLine(Polar(radius, (twopi * i) / vertices + halfpi), ContAngle) path.ClosePath() path.Transform(self.trafo) if self.objects: self.objects[0].SetPaths((path,)) else: self.set_objects([PolyBezier((path,))])
def convert_outline(outline): paths = [] trafo = Scale(0.001) for closed, sub in outline: if closed: sub.append(sub[0]) path = CreatePath() paths.append(path) for item in sub: if len(item) == 2: apply(path.AppendLine, item) else: apply(path.AppendBezier, item) if closed: path.load_close() for path in paths: path.Transform(trafo) return tuple(paths)
def recompute(self): paths = [] trafo = self.trafo(Scale(self.size / float(char_scale))) width = 0 for char in self.text: segs = char_segs.get(char) if segs is not None: for seg in segs: path = CreatePath() map(path.AppendLine, segments[seg]) path.ClosePath() path.Translate(width, 0) path.Transform(trafo) paths.append(path) width = width + char_width paths = tuple(paths) if self.objects: self.objects[0].SetPaths(paths) else: self.set_objects([PolyBezier(paths)])