Files
Jungfraujoch/viewer/windows/JFJochMagnifierWindow.cpp
T
leonarski_f 8a582b8a90
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 10m28s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 11m39s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 12m8s
Build Packages / build:rpm (rocky8) (push) Successful in 12m57s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m20s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 13m43s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 13m54s
Build Packages / XDS test (durin plugin) (push) Successful in 8m50s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m23s
Build Packages / Generate python client (push) Successful in 15s
Build Packages / Create release (push) Skipped
Build Packages / XDS test (neggia plugin) (push) Successful in 8m33s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m26s
Build Packages / Build documentation (push) Successful in 38s
Build Packages / build:rpm (rocky9) (push) Successful in 12m39s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 9m34s
Build Packages / DIALS test (push) Successful in 12m28s
Build Packages / Unit tests (push) Failing after 40m27s
JFJochMagnifierWindow: Fixed
2026-06-09 12:09:40 +02:00

46 lines
1.6 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 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<SimpleImage>();
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);
}