diff --git a/viewer/image_viewer/JFJochImage.cpp b/viewer/image_viewer/JFJochImage.cpp index ed030ef0..a11db19e 100644 --- a/viewer/image_viewer/JFJochImage.cpp +++ b/viewer/image_viewer/JFJochImage.cpp @@ -948,4 +948,17 @@ void JFJochImage::adjustForeground(bool input) { void JFJochImage::beforeOverlayCleared() {} +double JFJochImage::GetScaleFactor() const { + return scale_factor; +} +void JFJochImage::setZoom(double input) { + if (std::isfinite(input) && input > 0) { + scale_factor = input; + if (!scene()) + return; + scale(input, input); + updateOverlay(); + emitViewportChanged(); + } +} diff --git a/viewer/image_viewer/JFJochImage.h b/viewer/image_viewer/JFJochImage.h index 593cda04..f16ec3ec 100644 --- a/viewer/image_viewer/JFJochImage.h +++ b/viewer/image_viewer/JFJochImage.h @@ -131,7 +131,8 @@ public slots: void fitToView(); void adjustForeground(bool input); - + void setZoom(double input); public: explicit JFJochImage(QWidget *parent = nullptr); + double GetScaleFactor() const; }; \ No newline at end of file diff --git a/viewer/windows/JFJochMagnifierWindow.cpp b/viewer/windows/JFJochMagnifierWindow.cpp index 266a5056..8027652e 100644 --- a/viewer/windows/JFJochMagnifierWindow.cpp +++ b/viewer/windows/JFJochMagnifierWindow.cpp @@ -11,6 +11,7 @@ JFJochMagnifierWindow::JFJochMagnifierWindow(QWidget *parent) : JFJochHelperWindow(parent) { setWindowTitle("Magnifier"); m_image = new JFJochSimpleImage(this); + m_image->setZoom(m_magnification); setCentralWidget(m_image); resize(320, 320); } @@ -25,11 +26,13 @@ void JFJochMagnifierWindow::imageLoaded(std::shared_ptr auto si = std::make_shared(); 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; - m_image->applyViewport(QTransform::fromScale(m_magnification, m_magnification), scenePos); + double scale = m_image->GetScaleFactor(); + m_image->applyViewport(QTransform::fromScale(scale, scale), scenePos); }