Exemple #1
0
    def get_path(self, p1, p2):
        self.p1 = p1
        self.p2 = p2
        path = QtGui.QPainterPath(self.p1)

        points = []

        sd = self.p2 - self.p1
        if abs(sd.x()) <= self.WIDTH:  # draw a line
            pass
        elif sd.y() < 2 * self.WIDTH:
            s1 = self.p1 + QtCore.QPointF(0, self.WIDTH)
            d1 = self.p2 - QtCore.QPointF(0, self.WIDTH)

            s1d1 = d1 - s1
            s2 = s1 + QtCore.QPointF(s1d1.x() / 2., 0)
            d2 = s2 + QtCore.QPointF(0, s1d1.y())
            points.extend([s1, s2, d2, d1])
        else:
            s1 = self.p1 + QtCore.QPointF(0, sd.y() / 2.)
            d1 = self.p2 - QtCore.QPointF(0, sd.y() / 2.)
            points.extend([s1, d1])

        points.append(self.p2)
        for pt in points:
            path.lineTo(pt)

        return path
Exemple #2
0
 def _make_path(self, pen=None):
     if pen == None:
         pen = self.pen()
     else:
         self.setPen(pen)
     penWidth = pen.widthF()
     path = QtGui.QPainterPath()
     path.addRoundedRect(
         self.rect().adjusted(penWidth, penWidth, -penWidth, -penWidth),
         self.__radius, self.__radius)
     return path
Exemple #3
0
    def shape(self):
        path = QtGui.QPainterPath()

        # Enlarge selection zone
        diff = self.p2 - self.p1

        if (abs(diff.x()) > abs(diff.y())):
            dp = QtCore.QPointF(0, 10)
        else:
            dp = QtCore.QPointF(10, 0)

        p1 = self.p1 - dp
        p2 = self.p1 + dp
        p3 = self.p2 + dp
        p4 = self.p2 - dp
        poly = QtGui.QPolygonF([p1, p2, p3, p4])
        path.addPolygon(poly)

        return path
Exemple #4
0
    def get_path(self, p1, p2):
        self.p1 = p1
        self.p2 = p2
        path = QtGui.QPainterPath(self.p1)

        sd = self.p2 - self.p1
        if abs(sd.x()) <= self.WIDTH:  # draw a line
            path.lineTo(self.p2)
        elif sd.y() < self.WIDTH:
            py = QtCore.QPointF(0, max(self.WIDTH, -sd.y()))
            path.cubicTo(self.p1 + py, self.p2 - py, self.p2)

        else:
            py = QtCore.QPointF(0, sd.y() / 2.)
            pm = (self.p1 + self.p2) / 2.
            path.quadTo(self.p1 + py, pm)
            path.quadTo(self.p2 - py, self.p2)

        return path
Exemple #5
0
 def get_path(self, p1, p2):
     self.p1 = p1
     self.p2 = p2
     path = QtGui.QPainterPath(self.p1)
     path.lineTo(self.p2)
     return path