def drawPolygon(self, points, mode): self.apply_graphics_state() if not points: return p = Path() p.move_to(points[0].x(), points[0].y()) for point in points[1:]: p.line_to(point.x(), point.y()) p.close() fill_rule = {self.OddEvenMode:'evenodd', self.WindingMode:'winding'}.get(mode, 'evenodd') self.pdf.draw_path(p, stroke=True, fill_rule=fill_rule, fill=(mode in (self.OddEvenMode, self.WindingMode, self.ConvexMode)))
def drawPoints(self, points): self.apply_graphics_state() p = Path() for point in points: p.move_to(point.x(), point.y()) p.line_to(point.x(), point.y() + 0.001) self.pdf.draw_path(p, stroke=self.do_stroke, fill=False)
def convert_path(path): # {{{ p = Path() i = 0 while i < path.elementCount(): elem = path.elementAt(i) em = (elem.x, elem.y) i += 1 if elem.isMoveTo(): p.move_to(*em) elif elem.isLineTo(): p.line_to(*em) elif elem.isCurveTo(): added = False if path.elementCount() > i+1: c1, c2 = path.elementAt(i), path.elementAt(i+1) if (c1.type == path.CurveToDataElement and c2.type == path.CurveToDataElement): i += 2 p.curve_to(em[0], em[1], c1.x, c1.y, c2.x, c2.y) added = True if not added: raise ValueError('Invalid curve to operation') return p
def convert_path(self, path): p = Path() i = 0 while i < path.elementCount(): elem = path.elementAt(i) em = (elem.x, elem.y) i += 1 if elem.isMoveTo(): p.move_to(*em) elif elem.isLineTo(): p.line_to(*em) elif elem.isCurveTo(): added = False if path.elementCount() > i + 1: c1, c2 = path.elementAt(i), path.elementAt(i + 1) if c1.type == path.CurveToDataElement and c2.type == path.CurveToDataElement: i += 2 p.curve_to(em[0], em[1], c1.x, c1.y, c2.x, c2.y) added = True if not added: raise ValueError("Invalid curve to operation") return p