Example #1
0
def draw_controlpoint(painter, controlpoint, drawtangent=True, colors=None):
    colors = colors or COLORS.copy()
    selected = 'controlpoint.centerselected'
    colorkey = selected if controlpoint.selected else 'controlpoint.center'
    painter.setBrush(QtGui.QColor(colors[colorkey]))
    painter.setPen(QtGui.QColor(colors[colorkey]))
    center_rect = create_rect_from_point(controlpoint.center)
    painter.drawRect(center_rect)

    if drawtangent is False or controlpoint.linear is True:
        return

    painter.setBrush(QtGui.QColor(0, 0, 0, 0))
    if controlpoint.autotangent is True:
        color = colors['controlpoint.autotangent']
    else:
        color = colors['controlpoint.tangentlocked']
    painter.setPen(QtGui.QColor(color))

    tin_rect = create_rect_from_point(controlpoint.tangentin)
    painter.drawRect(tin_rect)
    line = QtCore.QLine(controlpoint.tangentin.toPoint(),
                        controlpoint.center.toPoint())
    painter.drawLine(line)

    tout_rect = create_rect_from_point(controlpoint.tangentout)
    painter.drawRect(tout_rect)
    line = QtCore.QLine(controlpoint.center.toPoint(),
                        controlpoint.tangentout.toPoint())
    painter.drawLine(line)
Example #2
0
def draw_empty_image(painter, rect, name=''):
    color = QtGui.QColor(NOIMAGE_COLORS["backgroundcolor"])
    brush = QtGui.QBrush(color)
    color = QtGui.QColor(NOIMAGE_COLORS["bordercolor"])
    pen = QtGui.QPen(color)
    painter.setBrush(brush)
    painter.setPen(pen)
    painter.drawRect(rect)
    color = QtGui.QColor(NOIMAGE_COLORS["crosscolor"])
    pen.setColor(color)
    painter.setPen(pen)
    painter.drawLine(QtCore.QLine(rect.bottomLeft(), rect.topRight()))
    painter.drawLine(QtCore.QLine(rect.topLeft(), rect.bottomRight()))
    color = QtGui.QColor(NOIMAGE_COLORS["textcolor"])
    pen.setColor(color)
    painter.setPen(pen)
    font = QtGui.QFont()
    font.setBold(True)
    font.setItalic(False)
    size = ceil(sqrt((rect.width()**2) + (rect.width()**2)) / 15)
    font.setPixelSize(size)
    painter.setFont(font)
    flags = QtCore.Qt.AlignVCenter | QtCore.Qt.AlignCenter
    painter.drawText(QtCore.QRectF(rect), flags, "No Image")

    font = QtGui.QFont()
    font.setBold(True)
    font.setItalic(False)
    font.setPixelSize(15)
    painter.setFont(font)
    flags = QtCore.Qt.AlignCenter | QtCore.Qt.AlignBottom
    textrect = QtCore.QRectF(rect)
    painter.drawText(textrect, flags, name)
Example #3
0
 def paint(self, painter, option, widget):
     painter.fillRect(widget.rect(), QtGui.QBrush(QtGui.QColor(0,0,0,0), QtCore.Qt.SolidPattern))
     lines = []
     for y in range(self.size+1):
         lines.append(QtCore.QLine(0, y*self.scale, self.size*self.scale, y*self.scale))
     for x in range(self.size+1):
         lines.append(QtCore.QLine(x*self.scale, 0, x*self.scale, self.size*self.scale))
     painter.drawLines(lines)
 def renderPlus(self):
     generator, painter = self.__initSVGFile("plus.svg")
     painter.setPen(QtGui.QPen(QtCore.Qt.white, self.__thickness))
     painter.drawLine(
         QtCore.QLine(self.__thickness, self.__height / 2,
                      self.__width - self.__thickness, self.__height / 2))
     painter.drawLine(
         QtCore.QLine(self.__width / 2, self.__thickness, self.__width / 2,
                      self.__height - self.__thickness))
     painter.end()
    def renderExclamation(self):
        ratio = self.__width * self.__goldenRatio

        generator, painter = self.__initSVGFile("exclamation.svg")
        painter.setPen(QtGui.QPen(QtCore.Qt.yellow, self.__thickness))
        painter.translate(self.__width / 2, self.__thickness / 2)
        painter.drawLine(QtCore.QLine(0, 0, 0, ratio))
        painter.drawLine(
            QtCore.QLine(0, self.__height - self.__thickness / 2, 0,
                         self.__height - self.__thickness))
        painter.end()
 def renderCross(self):
     generator, painter = self.__initSVGFile("cross.svg")
     painter.setPen(QtGui.QPen(QtCore.Qt.red, self.__thickness))
     painter.drawLine(
         QtCore.QLine(self.__thickness, self.__thickness,
                      self.__width - self.__thickness,
                      self.__height - self.__thickness))
     painter.drawLine(
         QtCore.QLine(self.__width - self.__thickness, self.__thickness,
                      self.__thickness, self.__height - self.__thickness))
     painter.end()
Example #7
0
    def paintTickMarks(self, qp):
        if (self.struct_times_days != None):
            qp.setPen(self.pen_tick_days)
            qp.setBrush(self.color_tick_days)
            qp.setFont(self.font_tick_days)
            metrics = qp.fontMetrics()
            for n, time_struct in enumerate(self.struct_times_days):
                if (n == 0):
                    mstime = self.t0
                else:
                    mstime = self.mstimestamps_days[n]
                if (mstime >= self.t0):
                    x0 = int(round(self.pixel_per_msec *
                                   (mstime - self.t0))) + self.lmx
                    y0 = 0
                    timestr=str(time_struct.tm_mday) + ". " + \
                                str(time_struct.tm_mon) + ". " + str(time_struct.tm_year)
                    fx = 0
                    fy = int(round(metrics.height()))
                    qp.drawText(QtCore.QPoint(x0 + fx, y0 + fy), timestr)

        if (self.struct_times_major != None):
            qp.setPen(self.pen_tick_major)
            qp.setBrush(self.color_tick_major)
            qp.setFont(self.font_tick_major)
            metrics = qp.fontMetrics()
            for n, time_struct in enumerate(self.struct_times_major):
                mstime = self.mstimestamps_major[n]
                if (mstime >= self.t0):
                    x0 = int(round(self.pixel_per_msec *
                                   (mstime - self.t0))) + self.lmx
                    x1 = x0
                    y0 = self.ytick
                    y1 = y0 + self.matick
                    qp.drawLine(QtCore.QLine(x0, y0, x0, y1))
                    timestr=str(time_struct.tm_hour) + ":" + \
                                str(time_struct.tm_min) + ":" + str(time_struct.tm_sec)
                    fx = -int(round(metrics.width(timestr) / 2))
                    fy = int(round(metrics.height()))
                    qp.drawText(QtCore.QPoint(x0 + fx, y1 + fy), timestr)

        if (self.struct_times_minor != None):
            qp.setPen(self.pen_tick_minor)
            qp.setBrush(self.color_tick_minor)
            for n, time_struct in enumerate(self.struct_times_minor):
                mstime = self.mstimestamps_minor[n]
                if (mstime >= self.t0):
                    x0 = int(round(self.pixel_per_msec *
                                   (mstime - self.t0))) + self.lmx
                    x1 = x0
                    y0 = self.ytick
                    y1 = y0 + self.mitick
                    qp.drawLine(QtCore.QLine(x0, y0, x0, y1))
    def renderCheckmark(self):
        invertedRatio = self.__width * (1 - self.__goldenRatio)
        ratio = self.__width * self.__goldenRatio

        generator, painter = self.__initSVGFile("checkmark.svg")
        painter.translate(invertedRatio,
                          self.__height - 2.5 * self.__thickness)
        painter.setPen(QtGui.QPen(QtCore.Qt.green, self.__thickness))
        marginRatio = ratio * 0.85
        invertedRatio *= 0.75
        painter.drawLine(QtCore.QLine(0, 0, marginRatio, -marginRatio))
        painter.drawLine(QtCore.QLine(0, 0, -invertedRatio, -invertedRatio))
        painter.end()
Example #9
0
    def paintEvent(self, event):
        painter = QtGui.QPainter(self)
        painter.begin(self)

        # Gradient
        gradient = QtGui.QLinearGradient(0.0, 0.0, 0.0, self.height())
        white_color = QtGui.QColor()
        color = 1.0 * self.value if self.value <= 1.0 else 1.0
        white_color.setRgbF(color, color, color)
        black_color = QtGui.QColor()
        if self.value >= 1.0:
            color = min((1.0 * self.value) - 1.0, 1.0)
        else:
            color = 0.0
        black_color.setRgbF(color, color, color)
        gradient.setColorAt(0, white_color)
        gradient.setColorAt(1, black_color)
        painter.fillRect(0, 0, self.width(), self.height(), gradient)

        # Selected color point
        painter.setPen(QtCore.Qt.darkGray)
        for i in range(self.GRID_NUMBER):
            d = (self.height() / self.GRID_NUMBER)
            step_y = (i * d) + (d / 2)
            size = self.SELECT_SIZE / 2
            pos_x = QtCore.QPoint((self.width() / 2) - size - 1, step_y)
            pos_y = QtCore.QPoint((self.width() / 2) + size, step_y)
            line = QtCore.QLine(pos_x, pos_y)
            painter.drawLine(line)

        painter.end()
Example #10
0
def get_value_line(slider, value):
    rect = slider.rect()
    horizontal_divisor = float(slider.maximum - slider.minimum)
    horizontal_unit_size = rect.width() / horizontal_divisor
    left = (value - slider.minimum) * horizontal_unit_size
    start = QtCore.QPoint(left, rect.top())
    end = QtCore.QPoint(left, rect.bottom())
    return QtCore.QLine(start, end)
Example #11
0
 def paintTimeBar(self, qp):
     if (self.mstime != None):
         qp.setPen(self.pen_timebar)
         qp.setBrush(self.color_timebar)
         x0 = int(round(
             (self.mstime - self.t0) * self.pixel_per_msec)) + self.lmx
         y0 = 0
         y1 = self.h + self.lmy + self.umy
         qp.drawLine(QtCore.QLine(x0, y0, x0, y1))
Example #12
0
 def paint(self, painter, option, widget):
     try:
         line = self.__calc2SpecialRectCentorLineIntersect()
         line = QtCore.QLine(line[0], line[1])
         painter.setPen(self.pen)
         painter.drawLine(line)
         pt1 = line.p1()  # draw arrow
         angle, arrowLen, arrowAngle = math.atan2(line.dy(),
                                                  line.dx()), 16, PI / 6
         pt2 = pt1 + QtCore.QPoint(
             math.cos(angle + arrowAngle) * arrowLen,
             math.sin(angle + arrowAngle) * arrowLen)
         pt3 = pt1 + QtCore.QPoint(
             math.cos(angle - arrowAngle) * arrowLen,
             math.sin(angle - arrowAngle) * arrowLen)
         painter.drawLine(pt1, pt2)
         painter.drawLine(pt1, pt3)
     except Exception as e:
         traceback.print_exc()
Example #13
0
    def _draw_lines(self, painter):
        points = self._get_points()
        lines = []
        values = self.values()
        if not any([1 for f in values if f is not None]):
            return lines

        if values[0] is None:
            point = QtCore.QPoint(0, points[0].y())
            points.insert(0, point)

        if values[-1] is None:
            point = QtCore.QPoint(200, points[-1].y())
            points.append(point)

        for index, point in enumerate(points[:-1]):
            line = QtCore.QLine(point, points[index + 1])
            lines.append(line)

        pen = QtGui.QPen(QtGui.QColor('orange'))
        painter.setPen(pen)
        for line in lines:
            painter.drawLine(line)
    def paintEvent(self, event):
        #args: [QEvent]
        if any([self.hotBox.name == "main", self.hotBox.name == "viewport"]):
            # self.raise_()
            # self.setWindowFlags(QtCore.Qt.WA_TransparentForMouseEvents)

            #Initialize painter
            painter = QtGui.QPainter(self)
            pen = QtGui.QPen(QtGui.QColor(115, 115,
                                          115), 3, QtCore.Qt.SolidLine,
                             QtCore.Qt.RoundCap, QtCore.Qt.RoundJoin)
            painter.setPen(pen)
            painter.setRenderHint(QtGui.QPainter.Antialiasing, True)
            painter.setBrush(QtGui.QColor(115, 115, 115))
            painter.drawEllipse(self.hotBox.point, 5, 5)

            #perform paint
            if self.hotBox.mousePosition:
                mouseX = self.hotBox.mousePosition.x()
                mouseY = self.hotBox.mousePosition.y()
                line = QtCore.QLine(mouseX, mouseY, self.hotBox.point.x(),
                                    self.hotBox.point.y())
                painter.drawLine(line)
                painter.drawEllipse(mouseX - 5, mouseY - 5, 10, 10)