Skip to content

Pane Content Scale

pane_content_scale

This is part of the janus package.

Attributes

__author__ module-attribute

__author__ = 'Jan Meyer'
__copyright__ = '(c)2022 DESY, FS-BMX'

__email__ module-attribute

__email__ = 'jan.meyer@desy.de'

__license__ module-attribute

__license__ = 'GPL'

Classes

PaneContentScale

PaneContentScale(pane: Optional[Pane] = None)

Bases: PaneContent

Source code in mfx/roadrunner/janus/widgets/pane/pane_content_scale.py
def __init__(self, pane: Optional[Pane] = None) -> None:
    PaneContent.__init__(self, pane)
Attributes
PANE_SCALE_LENGTH class-attribute instance-attribute
PANE_SCALE_LENGTH = 200.0
Functions
paint_event
paint_event(painter: QPainter) -> bool
Source code in mfx/roadrunner/janus/widgets/pane/pane_content_scale.py
def paint_event(self, painter: QPainter) -> bool:
    if Pane.TRANSFORM_ZOOM in self.pane.shared["transforms"]:
        zoom = self.pane.shared["transforms"][Pane.TRANSFORM_ZOOM].m11()
    else:
        zoom = 1.0
    if "conversion" in self.pane.shared:
        conversion = self.pane.shared["conversion"]
    else:
        conversion = 1
    target_length = PaneContentScale.PANE_SCALE_LENGTH
    length = zoom * PaneContentScale.PANE_SCALE_LENGTH * conversion
    display_um = PaneContentScale.PANE_SCALE_LENGTH
    um_scale = 1
    while(abs(length - target_length) > target_length * 0.5):
        if length - target_length > 0:
            length /= 2
            display_um /= 2
            um_scale /= 2
        elif length - target_length < 0:
            length *= 2
            display_um *= 2
            um_scale *= 2
        else:
            break
    text = f"{display_um} um"
    text_len = painter.fontMetrics().width(text)
    height = 10
    bg_rect = QRect(0, 0, int(length) + 10, height + 20)
    pos = QPointF(painter.device().width() - bg_rect.width() - 1, painter.device().height() - bg_rect.height() - 1)
    scale_position = QTransform().translate(pos.x(), pos.y())
    bg_color = QColor(0, 0, 0, 128)
    painter.save()
    painter.setTransform(scale_position)
    painter.fillRect(bg_rect, bg_color)
    painter.translate(5, 15)
    painter.setPen(Qt.white)
    painter.drawLine(QPointF(0, 0), QPointF(0, 10))
    painter.drawLine(QPointF(0, 5), QPointF(length, 5))
    painter.drawLine(QPointF(length, 0), QPointF(length, 10))
    painter.drawText(int(length / 2 - text_len / 2), 1, text)
    painter.restore()
    return False
paint_priority
paint_priority() -> int
Source code in mfx/roadrunner/janus/widgets/pane/pane_content_scale.py
def paint_priority(self) -> int:
    return PaneContent.PRIORITY_SCALE