39 lines
1.2 KiB
C++
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);
|
|
}
|