Files
Jungfraujoch/viewer/windows/JFJochMagnifierWindow.cpp
T

39 lines
1.2 KiB
C++

// SPDX-FileCopyrightText: 2026 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#include "JFJochMagnifierWindow.h"
#include "../image_viewer/JFJochSimpleImage.h"
#include "../SimpleImage.h"
#include <QTransform>
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<const JFJochReaderImage> image) {
if (!image) {
m_have_image = false;
m_image->setImage(nullptr);
return;
}
const auto &exp = image->Dataset().experiment;
auto si = std::make_shared<SimpleImage>();
si->image = CompressedImage(image->Image(), exp.GetXPixelsNum(), exp.GetYPixelsNum());
m_image->setImage(si);
m_image->setZoom(m_magnification);
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);
}