// SPDX-FileCopyrightText: 2026 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include "JFJochMagnifierWindow.h" #include "../image_viewer/JFJochSimpleImage.h" #include "../SimpleImage.h" #include JFJochMagnifierWindow::JFJochMagnifierWindow(QWidget *parent) : JFJochHelperWindow(parent) { setWindowTitle("Magnifier"); m_image = new JFJochSimpleImage(this); m_image->setZoom(m_magnification); setCentralWidget(m_image); resize(320, 320); } void JFJochMagnifierWindow::imageLoaded(std::shared_ptr image) { if (!image) { m_have_image = false; m_image->setImage(nullptr); return; } const double scale = m_have_image ? m_image->GetScaleFactor() : m_magnification; const QPointF center = m_have_image ? m_image->mapToScene(m_image->viewport()->rect().center()) : QPointF(image->Dataset().experiment.GetXPixelsNum() * 0.5, image->Dataset().experiment.GetYPixelsNum() * 0.5); const auto &exp = image->Dataset().experiment; auto si = std::make_shared(); si->image = CompressedImage(image->Image(), exp.GetXPixelsNum(), exp.GetYPixelsNum()); m_image->setImage(si); m_image->applyViewport(QTransform::fromScale(scale, scale), center); m_have_image = true; } void JFJochMagnifierWindow::centerAt(QPointF scenePos) { if (!m_have_image || !isVisible()) return; double scale = m_image->GetScaleFactor(); m_image->applyViewport(QTransform::fromScale(scale, scale), scenePos); }