def rebuildPolygons(self, path):
        """
        Rebuilds the polygons that will be used on this path.
        
        :param      path    | <QPainterPath>
        
        :return     <list> [ <QPolygonF>, .. ]
        """
        output = []

        # create the input arrow
        if self.showInputArrow():
            if self.inputArrowStyle() & self.ArrowStyle.Inverted:
                a = QPointF(0, -4)
                b = QPointF(-10, 0)
                c = QPointF(0, 4)
            else:
                a = QPointF(-10, -4)
                b = QPointF(0, 0)
                c = QPointF(-10, 4)

            if self.inputArrowStyle() & self.ArrowStyle.Filled:
                poly = QPolygonF([a, b, c, a])
            else:
                poly = QPolygonF([a, b, c])

            mpoly = self.mappedPolygon(poly, path, 1.0)
            output.append(mpoly)

        # create the direction arrow
        if self.showDirectionArrow():
            a = QPointF(-5, -4)
            b = QPointF(5, 0)
            c = QPointF(-5, 4)

            mpoly = self.mappedPolygon(QPolygonF([a, b, c, a]), path, 0.5)
            output.append(mpoly)

        # create the output arrow
        if self.showOutputArrow():
            if self.outputArrowStyle() & self.ArrowStyle.Inverted:
                a = QPointF(0, -4)
                b = QPointF(10, 0)
                c = QPointF(0, 4)
            else:
                a = QPointF(10, -4)
                b = QPointF(0, 0)
                c = QPointF(10, 4)

            if self.outputArrowStyle() & self.ArrowStyle.Filled:
                poly = QPolygonF([a, b, c, a])
            else:
                poly = QPolygonF([a, b, c])

            mpoly = self.mappedPolygon(poly, path, 0)
            output.append(mpoly)

        return output