Rebuilds a smooth path based on the inputed points and set \
        parameters for this item.
        
        :return     <QPainterPath>

def rebuildSmooth(self):
        """
        Rebuilds a smooth path based on the inputed points and set \
        parameters for this item.
        
        :return     <QPainterPath>
        """
        # collect the control points
        points = self.controlPoints()

        # create the path
        path = QPainterPath()

        if len(points) == 3:
            x0, y0 = points[0]
            x1, y1 = points[1]
            xN, yN = points[2]

            path.moveTo(x0, y0)
            path.quadTo(x1, y1, xN, yN)

        elif len(points) == 4:
            x0, y0 = points[0]
            x1, y1 = points[1]
            x2, y2 = points[2]
            xN, yN = points[3]

            path.moveTo(x0, y0)
            path.cubicTo(x1, y1, x2, y2, xN, yN)

        elif len(points) == 6:
            x0, y0 = points[0]
            x1, y1 = points[1]
            x2, y2 = points[2]
            x3, y3 = points[3]
            x4, y4 = points[4]
            xN, yN = points[5]

            xC = (x2 + x3) / 2.0
            yC = (y2 + y3) / 2.0

            path.moveTo(x0, y0)
            path.cubicTo(x1, y1, x2, y2, xC, yC)
            path.cubicTo(x3, y3, x4, y4, xN, yN)

        else:
            x0, y0 = points[0]
            xN, yN = points[-1]

            path.moveTo(x0, y0)
            path.lineTo(xN, yN)

        return path