Source code for neoscore.interface.qt.q_rich_text_item

from PyQt5.QtCore import QPointF
from PyQt5.QtGui import QBrush, QColor, QPainter, QPen
from PyQt5.QtWidgets import QGraphicsItem, QGraphicsTextItem

from neoscore.core import env
from neoscore.core.point import ORIGIN
from neoscore.interface.qt.converters import point_to_qt_point_f


[docs]class QRichTextItem(QGraphicsTextItem): """A lighted specialized version of ``QGraphicsTextItem`` * Enables painter caching * Allows debugging bounding rect drawing * Enables anti-aliasing """
[docs] def __init__( self, transform_origin: QPointF = ORIGIN, ): """ Args: transform_origin: The origin point for rotation and scaling transforms """ super().__init__() self.setCacheMode(QGraphicsItem.CacheMode.DeviceCoordinateCache) self.setTransformOriginPoint(point_to_qt_point_f(transform_origin))
[docs] def paint(self, painter: QPainter, *args, **kwargs): if env.DEBUG: bounding_rect = self.boundingRect() painter.setBrush(QBrush()) painter.setPen(QPen(QColor("#ff0000"), 0)) painter.drawRect(bounding_rect) # Enable text anti-aliasing - for some reason the global render hint isn't # applied here. painter.setRenderHint(0x02) super().paint(painter, *args, **kwargs)