Files
templates/python/set_devices/qt_ports/plot_annotations.py

29 lines
1.1 KiB
Python

"""Small right-aligned mathematical annotations shared by Qt plots."""
try:
from PySide6.QtCore import QRectF, Qt
from PySide6.QtGui import QColor
except ImportError:
from PySide2.QtCore import QRectF, Qt
from PySide2.QtGui import QColor
def paint_formulas(painter, rect, entries):
"""Draw (color, text) entries in the right half, wrapping long formulas."""
painter.save()
painter.setClipRect(rect)
metrics = painter.fontMetrics()
width = max(1., rect.width() * .48 - 12)
top = rect.top() + 5
flags = int(Qt.AlignRight | Qt.AlignTop | Qt.TextWordWrap)
for color, text in entries:
box = QRectF(rect.right() - width - 6, top, width, max(1., rect.bottom() - top))
height = painter.boundingRect(box, flags, text).height()
box.setHeight(height)
painter.fillRect(box.adjusted(-3, -1, 3, 1), QColor('#0b1119'))
painter.setPen(QColor(color))
painter.drawText(box, flags, text)
top += height + metrics.height() * .4
if top >= rect.bottom():
break
painter.restore()