Source code for neoscore.interface.rich_text_interface

from dataclasses import dataclass
from typing import Optional

from neoscore.core.units import Unit
from neoscore.interface.font_interface import FontInterface
from neoscore.interface.positioned_object_interface import PositionedObjectInterface
from neoscore.interface.qt.converters import point_to_qt_point_f
from neoscore.interface.qt.q_rich_text_item import QRichTextItem


[docs]@dataclass(frozen=True) class RichTextInterface(PositionedObjectInterface): """An interface for graphical text objects.""" html_text: str font: FontInterface width: Optional[Unit] = None
[docs] def render(self): """Render the line to the scene.""" self._register_qt_object(self._create_qt_object())
def _create_qt_object(self) -> QRichTextItem: """Create and return this interface's underlying Qt object""" qt_object = QRichTextItem() qt_object.setHtml(self.html_text) qt_object.document().setDocumentMargin(0) qt_object.setPos(point_to_qt_point_f(self.pos)) qt_object.setTextWidth(self.width.base_value if self.width is not None else -1) qt_object.setFont(self.font.qt_object) qt_object.setTransformOriginPoint(point_to_qt_point_f(self.transform_origin)) if self.scale != 1: qt_object.setScale(self.scale) if self.rotation != 0: qt_object.setRotation(self.rotation) return qt_object