Exemplo n.º 1
0
    def __drawTrackLines(self, painter, start, end):
        # Draw only from pixel start to end
        painter.setPen(QtCore.Qt.DashLine)
        painter.setOpacity(0.3)
        # Draw horizontal lines
        # for track in range(0, self.numberoftracks + 1):
        #    y = (track * 34) + 18
        #    painter.drawLine(start, y, end, y)
        for i, track in enumerate(self._tracks):
            track.draw(painter, start, end, i)

        # Draw vertical lines
        for x in range(start - (start % 100), end, 100):
            painter.drawLine(x, 20, x, self.height())
            string = "{0}".format(int(round(x / self._scale)))
            boundtext = painter.boundingRect(QtCore.QRectF(), string)
            painter.drawText(x - boundtext.width() / 2, 15, string)

            if self._video_fps:
                string = "{0}".format(
                    int(round((x / self._scale) * (1000.0 / self._video_fps))))
                boundtext = painter.boundingRect(QtCore.QRectF(), string)
                painter.drawText(x - boundtext.width() / 2, 30, string)

        painter.setOpacity(1.0)

        for index, track in enumerate(self._tracks):
            track.drawLabels(painter, index)
Exemplo n.º 2
0
    def __draw_track_lines(self, painter, start, end):
        """
        Draw the track lines.
        :param QPainter painter: Qt QPainter object.
        :param int start: Initial X coordinate pixel to paint.
        :param int end: Final X coordinate pixel to paint.
        """
        # Draw only from pixel start to end
        painter.setPen(QtCore.Qt.DashLine)
        painter.setOpacity(0.3)
        for i, track in enumerate(self._tracks):
            track.draw(painter, start, end)

        # Draw vertical lines
        for x in range(start - (start % 100), end, 100):
            painter.drawLine(x, self.TOPTRACK_HEIGHT, x, self.height())
            string = "{0}".format(int(round(x / self._scale)))
            boundtext = painter.boundingRect(QtCore.QRectF(), string)
            painter.drawText(x - boundtext.width() / 2, 15, string)

            if self._video_fps:
                string = "{0}".format(
                    int(round((x / self._scale) * (1000.0 / self._video_fps))))
                boundtext = painter.boundingRect(QtCore.QRectF(), string)
                painter.drawText(x - boundtext.width() / 2, 30, string)

        painter.setOpacity(1.0)
Exemplo n.º 3
0
    def paintEvent(self, e):
        # call the base implementation to paint normal interface
        QWidget.paintEvent(self, e);
        draw = QPainter();
        draw.begin(self)

        h = self.height() - 1
        diff = (self._higher - self._lower) * self.scale

        try:
            self._step = float(self.width()) / float(diff)
        except ZeroDivisionError:
            self._step = 0
        x_start = (self._minVal - self._lower) * self._step * self.scale
        x_end = (self._maxVal - self._lower) * self._step * self.scale

        draw.setOpacity(1.0)
        draw.setBrush(QtCore.Qt.NoBrush)
        draw.setPen(QColor(200, 200, 255))

        for i in range( int(self.width()/5), int(self.width()-self.width()/5) + 1, int(self.width()/5) ): 
            draw.drawLine(i, 0, i, h)

        draw.setBrush(QColor(238, 238, 238))
        draw.setPen(QColor(238, 238, 238))
        draw.drawRoundedRect(0, 2, self.width(), h - 4, 3, 3)

        draw.setBrush(QColor(33, 133, 208))
        draw.setPen(QColor(33, 133, 208))
        draw.drawRoundedRect(int(round(x_start)), 2, int(round(x_end - x_start)), h - 4, 3, 3)
        # draw.setOpacity(1.0)
        draw.setFont(QFont('Decorative', 8))
        draw.setPen(QColor(80, 80, 80))

        str(self._maxVal) if self._use_float else str(int(round(self._maxVal)))

        boundtext = draw.boundingRect(QtCore.QRectF(),
                                      str(self._higher) if self._use_float else str(int(round(self._higher))))
        draw.drawText(self.width() - boundtext.width(), 14,
                      str(self._higher) if self._use_float else str(int(round(self._higher))))
        draw.drawText(0, 14, str(self._lower) if self._use_float else str(int(round(self._lower))))

        draw.setPen(QColor(255, 255, 255))
        boundtext = draw.boundingRect(QtCore.QRectF(),
                                      str(self._minVal) if self._use_float else str(int(round(self._minVal))))
        draw.drawText(x_start + 2, 14, str(self._minVal) if self._use_float else str(int(round(self._minVal))))
        boundtext = draw.boundingRect(QtCore.QRectF(),
                                      str(self._maxVal) if self._use_float else str(int(round(self._maxVal))))
        draw.drawText(x_end - boundtext.width(), 14,
                      str(self._maxVal) if self._use_float else str(int(round(self._maxVal))))

        draw.end()
Exemplo n.º 4
0
 def _get_buffer(size, filename):
     buffer = QtSvg.QSvgGenerator()
     buffer.setResolution(
         int(QApplication.primaryScreen().logicalDotsPerInch()))
     buffer.setFileName(filename)
     buffer.setViewBox(QtCore.QRectF(0, 0, size.width(), size.height()))
     return buffer
Exemplo n.º 5
0
def createAttributePixmap(char, background=Qt.black, color=Qt.white):
    """
    Create a QIcon with a given character. The icon is 13 pixels high and wide.

    :param char: The character that is printed in the icon
    :type char: str
    :param background: the background color (default: black)
    :type background: QColor
    :param color: the character color (default: white)
    :type color: QColor
    :rtype: QIcon
    """
    icon = QtGui.QIcon()
    for size in (13, 16, 18, 20, 22, 24, 28, 32, 64):
        pixmap = QtGui.QPixmap(size, size)
        pixmap.fill(Qt.transparent)
        painter = QtGui.QPainter()
        painter.begin(pixmap)
        painter.setRenderHints(painter.Antialiasing | painter.TextAntialiasing
                               | painter.SmoothPixmapTransform)
        painter.setPen(background)
        painter.setBrush(background)
        margin = 1 + size // 16
        text_margin = size // 20
        rect = QtCore.QRectF(margin, margin, size - 2 * margin,
                             size - 2 * margin)
        painter.drawRoundedRect(rect, 30.0, 30.0, Qt.RelativeSize)
        painter.setPen(color)
        font = painter.font()  # type: QtGui.QFont
        font.setPixelSize(size - 2 * margin - 2 * text_margin)
        painter.setFont(font)
        painter.drawText(rect, Qt.AlignCenter, char)
        painter.end()
        icon.addPixmap(pixmap)
    return icon
Exemplo n.º 6
0
 def _get_target(scene, painter, buffer, source):
     try:
         brush = scene.backgroundBrush()
         if brush.style() == QtCore.Qt.NoBrush:
             brush = QtGui.QBrush(scene.palette().color(QtGui.QPalette.Base))
     except AttributeError:  # not a QGraphicsView/Scene
         brush = QtGui.QBrush(QtCore.Qt.white)
     painter.fillRect(buffer.rect(), brush)
     return QtCore.QRectF(0, 0, source.width(), source.height())
Exemplo n.º 7
0
    def paintEvent(self, e):
        """
		
		:param e: 
		:return: 
		"""
        self._is_painting = True
        super(EventsWidget, self).paintEvent(e)

        painter = QPainter()
        painter.begin(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setFont(QFont('Decorative', 8))

        slider_pos = self._scroll.sliderPosition()
        start = slider_pos * self._scale
        end = start + self.width() * self._scale

        for i, track in enumerate(self._tracks):
            if self._break_draw:
                break
            track.draw_events(painter,
                              start,
                              end,
                              track_index=i,
                              left_shift=-self._scroll.sliderPosition(),
                              scale=self._scale)

        # Draw only from pixel start to end
        painter.setPen(QtCore.Qt.DashLine)
        painter.setOpacity(0.3)

        # print('Draw', start, end, self._scale, self._scroll.sliderPosition(), self.width())

        # Draw vertical lines
        for x in range(start - (start % (100 * self._scale)), end,
                       100 * self._scale):
            x2draw = (x - slider_pos * self._scale) // self._scale
            painter.drawLine(x2draw, 20, x2draw, self.height())
            string = str(x)
            boundtext = painter.boundingRect(QtCore.QRectF(), string)
            painter.drawText(x2draw - boundtext.width() / 2, 15, string)

        for index, track in enumerate(self._tracks):
            top = self.which_top(index)
            # print(top)
            painter.drawLine(0, top, self.width(), top)
            painter.drawText(10, top + 15, track.title)
        painter.setOpacity(1.0)

        self._pointer.draw(painter, left_shift=-slider_pos,
                           scale=self._scale)  # Draw the time pointer
        painter.end()

        self._break_draw = False
        self._is_painting = False
def drawDistBar(painter, rect, distribution, colortable):
    """
    Parameters
    ----------
    painter : QtGui.QPainter
    rect : QtCore.QRect
    distribution : numpy.ndarray
    colortable : List[QtGui.QColor]
    """
    # assert numpy.isclose(numpy.sum(distribution), 1.0)
    # assert numpy.all(distribution >= 0)
    painter.save()
    painter.translate(rect.topLeft())
    for dvalue, color in zip(distribution, colortable):
        if dvalue and numpy.isfinite(dvalue):
            painter.setBrush(color)
            width = rect.width() * dvalue
            painter.drawRoundedRect(QtCore.QRectF(0, 0, width, rect.height()), 1, 2)
            painter.translate(width, 0.0)
    painter.restore()
Exemplo n.º 9
0
 def _get_target(scene, painter, buffer, source):
     return QtCore.QRectF(0, 0, source.width(), source.height())
Exemplo n.º 10
0
 def _get_buffer(size, filename):
     buffer = QtSvg.QSvgGenerator()
     buffer.setResolution(QApplication.desktop().logicalDpiX())
     buffer.setFileName(filename)
     buffer.setViewBox(QtCore.QRectF(0, 0, size.width(), size.height()))
     return buffer