def drawSizeInfo(self): sizeInfoAreaWidth = 200 sizeInfoAreaHeight = 30 spacing = 5 rect = self.selected_area.normalized() sizeInfoArea = QRect(rect.left(), rect.top() - spacing - sizeInfoAreaHeight, sizeInfoAreaWidth, sizeInfoAreaHeight) if sizeInfoArea.top() < 0: sizeInfoArea.moveTopLeft(rect.topLeft() + QPoint(spacing, spacing)) if sizeInfoArea.right() >= self.screenPixel.width(): sizeInfoArea.moveTopLeft(rect.topLeft() - QPoint(spacing, spacing) - QPoint(sizeInfoAreaWidth, 0)) if sizeInfoArea.left() < spacing: sizeInfoArea.moveLeft(spacing) if sizeInfoArea.top() < spacing: sizeInfoArea.moveTop(spacing) self.items_to_remove.append( self.graphics_scene.addRect(QRectF(sizeInfoArea), QPen(Qt.white), QBrush(Qt.black))) sizeInfo = self.graphics_scene.addSimpleText(' {0} x {1}'.format( rect.width() * self.scale, rect.height() * self.scale)) sizeInfo.setPos(sizeInfoArea.topLeft() + QPoint(0, 2)) sizeInfo.setPen(QPen(QColor(255, 255, 255), 2)) self.items_to_remove.append(sizeInfo)
def erase_cursor_rect(self, pos: Tuple[int, int]): painter = QPainter(self.cursors_pixmap) cursor_rect = QRect(self.byte_rect) h = cursor_rect.height() i, j = pos cursor_rect.moveTopLeft(QPoint(i * self.byte_advance, j * h)) painter.setCompositionMode(QPainter.CompositionMode_Source) painter.setPen(Qt.NoPen) painter.setBrush(Qt.transparent) painter.drawRect(cursor_rect) painter.setCompositionMode(QPainter.CompositionMode_SourceOver)
def print_to_pixmap(self, painter, byte_addr, string, pen): index = self.byte_index(byte_addr) byte_rect = QRect(self.byte_rect) h = byte_rect.height() painter.setBrush(BRUSH_EMPTY) for digit1, digit2 in pairs(string): i, j = next(index) txt = digit1 + digit2 byte_rect.moveTopLeft(QPoint(i * self.byte_advance, j * h)) painter.setPen(Qt.NoPen) painter.drawRect(byte_rect) painter.setPen(pen) painter.drawText(byte_rect, Qt.AlignCenter, f'{txt}')
def draw_cursor_rect(self, pos: Tuple[int, int], brush, addr): painter = QPainter(self.cursors_pixmap) cursor_rect = QRect(self.byte_rect) h = cursor_rect.height() i, j = pos cursor_rect.moveTopLeft(QPoint(i * self.byte_advance, j * h)) painter.setPen(Qt.NoPen) painter.setBrush(brush) painter.drawRect(cursor_rect) painter.setFont(self.font) txt = self.bytes_field[addr][0] painter.setPen(PEN_BCK) painter.drawText(cursor_rect, Qt.AlignCenter, f'{txt}') painter.end()