Draws the signature mark.

        Note that this draws OUTSIDE the rectangle we're given. If
        cropping is involved, then this obviously won't work.

def render(self, rectangle, data):
        """Draws the signature mark.

        Note that this draws OUTSIDE the rectangle we're given. If
        cropping is involved, then this obviously won't work."""

        size = (1.0 - 2.0*self.margin) * rectangle.h
        offset = self.margin * rectangle.h
        per_mark = 1.0 / float(self.total)
        bottom = offset + size * float(self.index) * per_mark
        top = bottom + per_mark * size

        c = data['output']
        with c:
            c.translate(rectangle.x, rectangle.y)
            c.draw_polygon(
                0, top, -self.width, bottom, self.width, bottom,
                fill=self.color
                )