def ellipse(self, x, y, width, height):
     """adds an ellipse to the path"""
     pointList = pdfgeom.bezierArc(x, y, x + width, y + height, 0, 360)
     self._code.append('%0.4f %0.4f m' % pointList[0][:2])
     for curve in pointList:
         self._code.append('%0.4f %0.4f %0.4f %0.4f %0.4f %0.4f c' %
                           curve[2:])
 def arcTo(self, x1, y1, x2, y2, startAng=0, extent=90):
     """Like arc, but draws a line from the current point to
     the start if the start is not the current point."""
     pointList = pdfgeom.bezierArc(x1, y1, x2, y2, startAng, extent)
     self._code.append('%0.4f %0.4f l' % pointList[0][:2])
     for curve in pointList:
         self._code.append('%0.4f %0.4f %0.4f %0.4f %0.4f %0.4f c' %
                           curve[2:])
 def ellipse(self, x1, y1, x2, y2, stroke=1, fill=0):
     """Uses bezierArc, which conveniently handles 360 degrees -
     nice touch Robert"""
     pointList = pdfgeom.bezierArc(x1, y1, x2, y2, 0, 360)
     #move to first point
     self._code.append('n %0.4f %0.4f m' % pointList[0][:2])
     for curve in pointList:
         self._code.append('%0.4f %0.4f %0.4f %0.4f %0.4f %0.4f c' %
                           curve[2:])
     #finish
     self._code.append(PATH_OPS[stroke, fill, self._fillMode])
    def arc(self, x1, y1, x2, y2, startAng=0, extent=90):
        """Contributed to piddlePDF by Robert Kern, 28/7/99.
        Draw a partial ellipse inscribed within the rectangle x1,y1,x2,y2,
        starting at startAng degrees and covering extent degrees.   Angles
        start with 0 to the right (+x) and increase counter-clockwise.
        These should have x1<x2 and y1<y2.

        The algorithm is an elliptical generalization of the formulae in
        Jim Fitzsimmon's TeX tutorial <URL: http://www.tinaja.com/bezarc1.pdf>."""

        pointList = pdfgeom.bezierArc(x1, y1, x2, y2, startAng, extent)
        #move to first point
        self._code.append('%0.4f %0.4f m' % pointList[0][:2])
        for curve in pointList:
            self._code.append('%0.4f %0.4f %0.4f %0.4f %0.4f %0.4f c' %
                              curve[2:])
    def wedge(self, x1, y1, x2, y2, startAng, extent, stroke=1, fill=0):
        """Like arc, but connects to the centre of the ellipse.
        Most useful for pie charts and PacMan!"""

        x_cen = (x1 + x2) / 2.
        y_cen = (y1 + y2) / 2.
        pointList = pdfgeom.bezierArc(x1, y1, x2, y2, startAng, extent)

        self._code.append('n %0.4f %0.4f m' % (x_cen, y_cen))
        # Move the pen to the center of the rectangle
        self._code.append('%0.4f %0.4f l' % pointList[0][:2])
        for curve in pointList:
            self._code.append('%0.4f %0.4f %0.4f %0.4f %0.4f %0.4f c' %
                              curve[2:])
        # finish the wedge
        self._code.append('%0.4f %0.4f l ' % (x_cen, y_cen))
        # final operator
        self._code.append(PATH_OPS[stroke, fill, self._fillMode])