jfjoch_viewer: Rename Image views to give more consistency. Continue merging code

This commit is contained in:
2025-11-07 12:13:32 +01:00
parent ae6574d3ec
commit 2fa7ca7fad
8 changed files with 96 additions and 100 deletions

View File

@@ -10,10 +10,10 @@ FIND_PACKAGE(Qt6 COMPONENTS Core Gui Widgets Charts DBus 3DCore 3DRender 3DInput
ADD_EXECUTABLE(jfjoch_viewer jfjoch_viewer.cpp JFJochViewerWindow.cpp JFJochViewerWindow.h
JFJochViewerMenu.cpp
JFJochViewerMenu.h
widgets/JFJochViewerImage.cpp
widgets/JFJochViewerImage.h
widgets/JFJochSimpleImageViewer.cpp
widgets/JFJochSimpleImageViewer.h
widgets/JFJochDiffractionImage.cpp
widgets/JFJochDiffractionImage.h
widgets/JFJochSimpleImage.cpp
widgets/JFJochSimpleImage.h
JFJochImageReadingWorker.cpp
JFJochImageReadingWorker.h
JFJochViewerDatasetInfo.cpp

View File

@@ -7,7 +7,7 @@
#include <QThread>
#include "JFJochImageReadingWorker.h"
#include "widgets/JFJochViewerImage.h"
#include "widgets/JFJochDiffractionImage.h"
#include "JFJochViewerSidePanel.h"
#include "JFJochViewerStatusBar.h"
#include "../common/CUDAWrapper.h"
@@ -63,7 +63,7 @@ JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString
h_splitter->setOrientation(Qt::Horizontal);
v_splitter->addWidget(h_splitter);
auto viewer = new JFJochViewerImage(this);
auto viewer = new JFJochDiffractionImage(this);
viewer->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
h_splitter->addWidget(viewer);
@@ -127,7 +127,7 @@ JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString
reading_worker, &JFJochImageReadingWorker::CloseFile);
connect(reading_worker, &JFJochImageReadingWorker::imageLoaded,
viewer, &JFJochViewerImage::loadImage);
viewer, &JFJochDiffractionImage::loadImage);
connect(reading_worker, &JFJochImageReadingWorker::imageLoaded,
side_panel, &JFJochViewerSidePanel::loadImage);
@@ -141,30 +141,30 @@ JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString
connect(toolBarImage, &JFJochViewerToolbarImage::loadImage, reading_worker, &JFJochImageReadingWorker::LoadImage);
connect(toolBarDisplay, &JFJochViewerToolbarDisplay::setForeground, viewer,
&JFJochViewerImage::changeForeground);
&JFJochDiffractionImage::changeForeground);
connect(toolBarDisplay, &JFJochViewerToolbarDisplay::setBackground, viewer,
&JFJochViewerImage::changeBackground);
&JFJochDiffractionImage::changeBackground);
connect(toolBarDisplay, &JFJochViewerToolbarDisplay::setAutoForeground, viewer,
&JFJochViewerImage::setAutoForeground);
&JFJochDiffractionImage::setAutoForeground);
connect(toolBarDisplay, &JFJochViewerToolbarDisplay::colorMapChanged, viewer,
&JFJochViewerImage::setColorMap);
&JFJochDiffractionImage::setColorMap);
connect(viewer, &JFJochViewerImage::foregroundChanged,
connect(viewer, &JFJochDiffractionImage::foregroundChanged,
toolBarDisplay, &JFJochViewerToolbarDisplay::updateForeground);
connect(viewer, &JFJochViewerImage::roiBoxUpdated,
connect(viewer, &JFJochDiffractionImage::roiBoxUpdated,
reading_worker, &JFJochImageReadingWorker::SetROIBox);
connect(viewer, &JFJochViewerImage::roiCircleUpdated,
connect(viewer, &JFJochDiffractionImage::roiCircleUpdated,
reading_worker, &JFJochImageReadingWorker::SetROICircle);
connect(viewer, &JFJochViewerImage::roiBoxUpdated,
connect(viewer, &JFJochDiffractionImage::roiBoxUpdated,
side_panel, &JFJochViewerSidePanel::SetROIBox);
connect(viewer, &JFJochViewerImage::roiCircleUpdated,
connect(viewer, &JFJochDiffractionImage::roiCircleUpdated,
side_panel, &JFJochViewerSidePanel::SetROICircle);
connect(side_panel, &JFJochViewerSidePanel::ROIBoxConfigured,
@@ -174,10 +174,10 @@ JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString
reading_worker, &JFJochImageReadingWorker::SetROICircle);
connect(side_panel, &JFJochViewerSidePanel::ROIBoxConfigured,
viewer, &JFJochViewerImage::SetROIBox);
viewer, &JFJochDiffractionImage::SetROIBox);
connect(side_panel, &JFJochViewerSidePanel::ROICircleConfigured,
viewer, &JFJochViewerImage::SetROICircle);
viewer, &JFJochDiffractionImage::SetROICircle);
connect(side_panel, &JFJochViewerSidePanel::AddROIToUserMask,
reading_worker, &JFJochImageReadingWorker::AddROIToUserMask);
@@ -240,31 +240,31 @@ JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString
connect(processingWindow, &JFJochViewerProcessingWindow::settingsChanged,
reading_worker, &JFJochImageReadingWorker::UpdateSpotFindingSettings);
connect(reflectionWindow, &JFJochHelperWindow::zoom, viewer, &JFJochViewerImage::centerOnSpot);
connect(spotWindow, &JFJochHelperWindow::zoom, viewer, &JFJochViewerImage::centerOnSpot);
connect(reflectionWindow, &JFJochHelperWindow::zoom, viewer, &JFJochDiffractionImage::centerOnSpot);
connect(spotWindow, &JFJochHelperWindow::zoom, viewer, &JFJochDiffractionImage::centerOnSpot);
connect(side_panel, &JFJochViewerSidePanel::showSpots,
viewer, &JFJochViewerImage::showSpots);
viewer, &JFJochDiffractionImage::showSpots);
connect(side_panel, &JFJochViewerSidePanel::showPredictions,
viewer, &JFJochViewerImage::showPredictions);
viewer, &JFJochDiffractionImage::showPredictions);
connect(side_panel, &JFJochViewerSidePanel::autoResRings,
viewer, &JFJochViewerImage::setResolutionRingAuto);
viewer, &JFJochDiffractionImage::setResolutionRingAuto);
connect(side_panel, &JFJochViewerSidePanel::setFeatureColor,
viewer, &JFJochViewerImage::setFeatureColor);
viewer, &JFJochDiffractionImage::setFeatureColor);
connect(side_panel, &JFJochViewerSidePanel::setFeatureColor,
calibrationWindow, &JFJochCalibrationWindow::setFeatureColor);
connect(side_panel, &JFJochViewerSidePanel::setSpotColor,
viewer, &JFJochViewerImage::setSpotColor);
viewer, &JFJochDiffractionImage::setSpotColor);
connect(side_panel, &JFJochViewerSidePanel::showHighestPixels,
viewer, &JFJochViewerImage::showHighestPixels);
viewer, &JFJochDiffractionImage::showHighestPixels);
connect(side_panel, &JFJochViewerSidePanel::showSaturatedPixels,
viewer, &JFJochViewerImage::showSaturation);
viewer, &JFJochDiffractionImage::showSaturation);
connect(side_panel, &JFJochViewerSidePanel::setResRings,
viewer, &JFJochViewerImage::setResolutionRing);
connect(viewer, &JFJochViewerImage::writeStatusBar,
viewer, &JFJochDiffractionImage::setResolutionRing);
connect(viewer, &JFJochDiffractionImage::writeStatusBar,
statusbar, &JFJochViewerStatusBar::display);
connect(metadataWindow, &JFJochViewerMetadataWindow::datasetUpdated,
@@ -274,7 +274,7 @@ JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString
side_panel, &JFJochViewerSidePanel::setResRings);
connect(side_panel, &JFJochViewerSidePanel::highlightIceRings,
viewer, &JFJochViewerImage::highlightIceRings);
viewer, &JFJochDiffractionImage::highlightIceRings);
connect(calibrationWindow, &JFJochCalibrationWindow::loadCalibration,
reading_worker, &JFJochImageReadingWorker::LoadCalibration);

View File

@@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#include "JFJochViewerImage.h"
#include "JFJochDiffractionImage.h"
#include "../../common/DiffractionGeometry.h"
#include <QGraphicsPixmapItem>
@@ -12,13 +12,13 @@
#include <cmath>
// Constructor
JFJochViewerImage::JFJochViewerImage(QWidget *parent) : JFJochImage(parent) {}
JFJochDiffractionImage::JFJochDiffractionImage(QWidget *parent) : JFJochImage(parent) {}
QPointF RoundPoint(const QPointF &input) {
return QPointF(qRound(input.x()), qRound(input.y()));
}
void JFJochViewerImage::mousePressEvent(QMouseEvent *event) {
void JFJochDiffractionImage::mousePressEvent(QMouseEvent *event) {
if (!scene() || !image) return;
mouse_event_type = MouseEventType::None;
@@ -62,7 +62,7 @@ void JFJochViewerImage::mousePressEvent(QMouseEvent *event) {
}
// Handle panning while moving the mouse
void JFJochViewerImage::mouseMoveEvent(QMouseEvent *event) {
void JFJochDiffractionImage::mouseMoveEvent(QMouseEvent *event) {
if (!scene() || !image) return;
auto coord = mapToScene(event->pos());
@@ -121,7 +121,7 @@ void JFJochViewerImage::mouseMoveEvent(QMouseEvent *event) {
QGraphicsView::mouseMoveEvent(event);
}
void JFJochViewerImage::mouseReleaseEvent(QMouseEvent *event) {
void JFJochDiffractionImage::mouseReleaseEvent(QMouseEvent *event) {
if (!scene() || !image) return;
setCursor(Qt::CursorShape::ArrowCursor);
@@ -139,7 +139,7 @@ void JFJochViewerImage::mouseReleaseEvent(QMouseEvent *event) {
QGraphicsView::mouseReleaseEvent(event);
}
void JFJochViewerImage::LoadImageInternal() {
void JFJochDiffractionImage::LoadImageInternal() {
if (!image || (image->Dataset().experiment.GetXPixelsNum() <= 0))
return;
@@ -196,7 +196,7 @@ void JFJochViewerImage::LoadImageInternal() {
}
}
void JFJochViewerImage::DrawSpots() {
void JFJochDiffractionImage::DrawSpots() {
// Compute current visible area in scene coordinates
const QRectF visibleRect = mapToScene(viewport()->geometry()).boundingRect();
@@ -225,7 +225,7 @@ void JFJochViewerImage::DrawSpots() {
}
}
void JFJochViewerImage::DrawPredictions() {
void JFJochDiffractionImage::DrawPredictions() {
QFont font("Arial", 2); // Font for pixel value text
font.setPixelSize(2); // This will render very small text (1-pixel high).
@@ -269,7 +269,7 @@ void JFJochViewerImage::DrawPredictions() {
}
}
void JFJochViewerImage::DrawResolutionRings() {
void JFJochDiffractionImage::DrawResolutionRings() {
// Get the visible area in the scene coordinates
QRectF visibleRect = mapToScene(viewport()->geometry()).boundingRect();
@@ -376,14 +376,14 @@ void JFJochViewerImage::DrawResolutionRings() {
}
}
void JFJochViewerImage::DrawBeamCenter() {
void JFJochDiffractionImage::DrawBeamCenter() {
auto geom = image->Dataset().experiment.GetDiffractionGeometry();
auto [beam_x, beam_y] = geom.GetDirectBeam_pxl();
DrawCross(beam_x, beam_y, 25, 5, 2);
}
void JFJochViewerImage::DrawTopPixels() {
void JFJochDiffractionImage::DrawTopPixels() {
int i = 0;
for (auto iter = image->ValidPixels().crbegin();
iter != image->ValidPixels().rend() && i < show_highest_pixels;
@@ -392,7 +392,7 @@ void JFJochViewerImage::DrawTopPixels() {
iter->second / image->Dataset().experiment.GetXPixelsNum() + 0.5, 15, 3);
}
void JFJochViewerImage::updateROI() {
void JFJochDiffractionImage::updateROI() {
if (roi_type == RoiType::RoiBox) {
QRect roi_box_int = QRectF(RoundPoint(roiStartPos), RoundPoint(roiEndPos)).normalized().toRect();
roi_box = roi_box_int;
@@ -407,7 +407,7 @@ void JFJochViewerImage::updateROI() {
updateOverlay();
}
void JFJochViewerImage::updateOverlay() {
void JFJochDiffractionImage::updateOverlay() {
if (!scene() || !image) return;
scene()->clear();
@@ -483,13 +483,13 @@ void JFJochViewerImage::updateOverlay() {
}
}
void JFJochViewerImage::resizeEvent(QResizeEvent *event) {
void JFJochDiffractionImage::resizeEvent(QResizeEvent *event) {
// Call the base class implementation first
QGraphicsView::resizeEvent(event);
updateOverlay();
}
void JFJochViewerImage::Redraw() {
void JFJochDiffractionImage::Redraw() {
if (!image) return;
// Save the current transformation (zoom state)
@@ -503,7 +503,7 @@ void JFJochViewerImage::Redraw() {
updateOverlay();
}
void JFJochViewerImage::loadImage(std::shared_ptr<const JFJochReaderImage> in_image) {
void JFJochDiffractionImage::loadImage(std::shared_ptr<const JFJochReaderImage> in_image) {
if (in_image) {
if (auto_foreground) {
foreground = in_image->GetAutoContrastValue();
@@ -519,7 +519,7 @@ void JFJochViewerImage::loadImage(std::shared_ptr<const JFJochReaderImage> in_im
}
void JFJochViewerImage::setAutoForeground(bool input) {
void JFJochDiffractionImage::setAutoForeground(bool input) {
auto_foreground = input;
if (image && auto_foreground) {
// If auto_foreground is not set, then view stays with the current settings till these are explicitely changed
@@ -531,51 +531,51 @@ void JFJochViewerImage::setAutoForeground(bool input) {
void JFJochViewerImage::setResolutionRing(QVector<float> v) {
void JFJochDiffractionImage::setResolutionRing(QVector<float> v) {
res_ring = v;
res_ring_auto = false;
Redraw();
}
void JFJochViewerImage::setResolutionRingAuto() {
void JFJochDiffractionImage::setResolutionRingAuto() {
res_ring_auto = true;
Redraw();
}
void JFJochViewerImage::showSpots(bool input) {
void JFJochDiffractionImage::showSpots(bool input) {
show_spots = input;
Redraw();
}
void JFJochViewerImage::showPredictions(bool input) {
void JFJochDiffractionImage::showPredictions(bool input) {
show_predictions = input;
Redraw();
}
void JFJochViewerImage::setSpotColor(QColor input) {
void JFJochDiffractionImage::setSpotColor(QColor input) {
spot_color = input;
Redraw();
}
void JFJochViewerImage::setPredictionColor(QColor input) {
void JFJochDiffractionImage::setPredictionColor(QColor input) {
prediction_color = input;
Redraw();
}
void JFJochViewerImage::showHighestPixels(int32_t v) {
void JFJochDiffractionImage::showHighestPixels(int32_t v) {
show_highest_pixels = v;
Redraw();
}
void JFJochViewerImage::DrawSaturation() {
void JFJochDiffractionImage::DrawSaturation() {
for (const auto &iter: image->SaturatedPixels())
DrawCross(iter % image->Dataset().experiment.GetXPixelsNum() + 0.5,
iter / image->Dataset().experiment.GetXPixelsNum() + 0.5, 20, 4);
}
void JFJochViewerImage::DrawCross(float x, float y, float size, float width, float z) {
void JFJochDiffractionImage::DrawCross(float x, float y, float size, float width, float z) {
float sc_size = size / sqrt(scale_factor);
QPen pen(feature_color, width);
@@ -588,12 +588,12 @@ void JFJochViewerImage::DrawCross(float x, float y, float size, float width, flo
verticalLine->setZValue(z); // Ensure it appears above other items
}
void JFJochViewerImage::showSaturation(bool input) {
void JFJochDiffractionImage::showSaturation(bool input) {
show_saturation = input;
Redraw();
}
void JFJochViewerImage::centerOnSpot(QPointF point) {
void JFJochDiffractionImage::centerOnSpot(QPointF point) {
if (!image)
return;
@@ -604,12 +604,12 @@ void JFJochViewerImage::centerOnSpot(QPointF point) {
centerOn(point);
}
void JFJochViewerImage::highlightIceRings(bool input) {
void JFJochDiffractionImage::highlightIceRings(bool input) {
highlight_ice_rings = input;
Redraw();
}
void JFJochViewerImage::SetROIBox(QRect box) {
void JFJochDiffractionImage::SetROIBox(QRect box) {
roi_type = RoiType::RoiBox;
roi_box = box;
roiStartPos = roi_box.topLeft();
@@ -617,7 +617,7 @@ void JFJochViewerImage::SetROIBox(QRect box) {
Redraw();
}
void JFJochViewerImage::SetROICircle(double x, double y, double radius) {
void JFJochDiffractionImage::SetROICircle(double x, double y, double radius) {
roi_type = RoiType::RoiCircle;
roi_box = QRectF(x - radius, y - radius, 2 * radius, 2 * radius).normalized();
roiStartPos = roi_box.topLeft();

View File

@@ -1,15 +1,14 @@
// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#ifndef JFJOCHVIEWERIMAGE_H
#define JFJOCHVIEWERIMAGE_H
#pragma once
#include "JFJochImage.h"
#include <QVector>
#include "../../reader/JFJochHDF5Reader.h"
#include "../../common/ColorScale.h"
class JFJochViewerImage : public JFJochImage {
class JFJochDiffractionImage : public JFJochImage {
Q_OBJECT
bool auto_foreground = false;
@@ -21,7 +20,7 @@ Q_OBJECT
QRectF roi_box;
public:
JFJochViewerImage(QWidget *parent = nullptr);
JFJochDiffractionImage(QWidget *parent = nullptr);
signals:
void roiBoxUpdated(QRect box);
void roiCircleUpdated(double x, double y, double radius);
@@ -89,6 +88,3 @@ public slots:
void SetROICircle(double x, double y, double radius);
};
#endif //JFJOCHVIEWERIMAGE_H

View File

@@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#include "JFJochSimpleImageViewer.h"
#include "JFJochSimpleImage.h"
#include <QGraphicsScene>
#include <QGraphicsPixmapItem>
#include <QWheelEvent>
@@ -20,7 +20,7 @@ static inline double normalize_to_unit(double raw, double bg, double fg) {
return v;
}
JFJochSimpleImageViewer::JFJochSimpleImageViewer(QWidget *parent)
JFJochSimpleImage::JFJochSimpleImage(QWidget *parent)
: JFJochImage(parent) {
auto *scn = new QGraphicsScene(this);
setScene(scn);
@@ -32,7 +32,7 @@ JFJochSimpleImageViewer::JFJochSimpleImageViewer(QWidget *parent)
setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
}
void JFJochSimpleImageViewer::clear() {
void JFJochSimpleImage::clear() {
has_image_ = false;
image_.reset();
@@ -40,14 +40,14 @@ void JFJochSimpleImageViewer::clear() {
scene()->clear();
}
void JFJochSimpleImageViewer::setImage(std::shared_ptr<const SimpleImage> img) {
void JFJochSimpleImage::setImage(std::shared_ptr<const SimpleImage> img) {
image_ = std::move(img);
has_image_ = true;
renderImage();
updateOverlay();
}
void JFJochSimpleImageViewer::Redraw() {
void JFJochSimpleImage::Redraw() {
if (has_image_) {
renderImage();
// Preserve current transform while updating
@@ -55,7 +55,7 @@ void JFJochSimpleImageViewer::Redraw() {
}
}
void JFJochSimpleImageViewer::mousePressEvent(QMouseEvent* event) {
void JFJochSimpleImage::mousePressEvent(QMouseEvent* event) {
if (!scene() || !has_image_) return;
if (event->button() == Qt::LeftButton) {
@@ -91,7 +91,7 @@ void JFJochSimpleImageViewer::mousePressEvent(QMouseEvent* event) {
QGraphicsView::mousePressEvent(event);
}
void JFJochSimpleImageViewer::mouseMoveEvent(QMouseEvent* event) {
void JFJochSimpleImage::mouseMoveEvent(QMouseEvent* event) {
if (!scene() || !has_image_) return;
const QPointF scenePos = mapToScene(event->pos());
@@ -158,7 +158,7 @@ void JFJochSimpleImageViewer::mouseMoveEvent(QMouseEvent* event) {
QGraphicsView::mouseMoveEvent(event);
}
void JFJochSimpleImageViewer::mouseReleaseEvent(QMouseEvent* event) {
void JFJochSimpleImage::mouseReleaseEvent(QMouseEvent* event) {
if (!scene() || !has_image_) return;
if (event->button() == Qt::LeftButton) {
@@ -176,12 +176,12 @@ void JFJochSimpleImageViewer::mouseReleaseEvent(QMouseEvent* event) {
}
void JFJochSimpleImageViewer::resizeEvent(QResizeEvent *event) {
void JFJochSimpleImage::resizeEvent(QResizeEvent *event) {
QGraphicsView::resizeEvent(event);
// Nothing special; keep current transform and scene
}
void JFJochSimpleImageViewer::renderImage() {
void JFJochSimpleImage::renderImage() {
const size_t W = image_->image.GetWidth();
const size_t H = image_->image.GetHeight();
if (W == 0 || H == 0) return;
@@ -254,7 +254,7 @@ void JFJochSimpleImageViewer::renderImage() {
pixmap = QPixmap::fromImage(qimg);
}
void JFJochSimpleImageViewer::updateOverlay() {
void JFJochSimpleImage::updateOverlay() {
if (!scene()) return;
scene()->clear();
if (!has_image_) return;
@@ -315,7 +315,7 @@ void JFJochSimpleImageViewer::updateOverlay() {
}
template<class T>
void JFJochSimpleImageViewer::renderImage(QImage &qimg, const uint8_t *input) {
void JFJochSimpleImage::renderImage(QImage &qimg, const uint8_t *input) {
const size_t W = image_->image.GetWidth();
const size_t H = image_->image.GetHeight();
@@ -350,12 +350,12 @@ void JFJochSimpleImageViewer::renderImage(QImage &qimg, const uint8_t *input) {
}
QPointF JFJochSimpleImageViewer::RoundPoint(const QPointF& p) {
QPointF JFJochSimpleImage::RoundPoint(const QPointF& p) {
return QPointF(qRound(p.x()), qRound(p.y()));
}
JFJochSimpleImageViewer::ResizeHandle
JFJochSimpleImageViewer::hitTestROIHandle(const QPointF& scenePos, qreal tol) const {
JFJochSimpleImage::ResizeHandle
JFJochSimpleImage::hitTestROIHandle(const QPointF& scenePos, qreal tol) const {
if (roi_box_.isNull() || roi_box_.width() <= 0 || roi_box_.height() <= 0)
return ResizeHandle::None;
@@ -388,7 +388,7 @@ JFJochSimpleImageViewer::hitTestROIHandle(const QPointF& scenePos, qreal tol) co
return ResizeHandle::None;
}
void JFJochSimpleImageViewer::updateROI() {
void JFJochSimpleImage::updateROI() {
// Normalize box if drawing
if (mouse_event_type_ == MouseEventType::DrawingROI) {
roi_box_ = QRectF(roi_start_pos_, roi_end_pos_).normalized();
@@ -405,7 +405,7 @@ void JFJochSimpleImageViewer::updateROI() {
scheduleSceneUpdate();
}
void JFJochSimpleImageViewer::drawROI(QGraphicsScene* scn) {
void JFJochSimpleImage::drawROI(QGraphicsScene* scn) {
if (roi_box_.isNull() || roi_box_.width() <= 0 || roi_box_.height() <= 0) return;
QPen pen(feature_color, 2);
@@ -459,8 +459,8 @@ void JFJochSimpleImageViewer::drawROI(QGraphicsScene* scn) {
}
}
JFJochSimpleImageViewer::ROIStats
JFJochSimpleImageViewer::computeROIStats(const QRect& roi_px) const {
JFJochSimpleImage::ROIStats
JFJochSimpleImage::computeROIStats(const QRect& roi_px) const {
ROIStats s;
if (!has_image_) return s;
@@ -504,7 +504,7 @@ JFJochSimpleImageViewer::computeROIStats(const QRect& roi_px) const {
}
void JFJochSimpleImageViewer::onRepaintTimer() {
void JFJochSimpleImage::onRepaintTimer() {
// Apply any pending pan
if (!qFuzzyIsNull(pan_accum_.x()) || !qFuzzyIsNull(pan_accum_.y())) {
translate(pan_accum_.x(), pan_accum_.y());
@@ -523,13 +523,13 @@ void JFJochSimpleImageViewer::onRepaintTimer() {
}
}
void JFJochSimpleImageViewer::schedulePanDelta(const QPointF& d) {
void JFJochSimpleImage::schedulePanDelta(const QPointF& d) {
pan_accum_ += d;
if (!repaint_timer_.isActive())
repaint_timer_.start();
}
void JFJochSimpleImageViewer::scheduleSceneUpdate() {
void JFJochSimpleImage::scheduleSceneUpdate() {
needs_scene_update_ = true;
if (!repaint_timer_.isActive())
repaint_timer_.start();

View File

@@ -14,12 +14,12 @@
#include "../SimpleImage.h"
#include "../../common/ColorScale.h"
class JFJochSimpleImageViewer : public JFJochImage {
class JFJochSimpleImage : public JFJochImage {
Q_OBJECT
void Redraw() override;
public:
explicit JFJochSimpleImageViewer(QWidget* parent = nullptr);
explicit JFJochSimpleImage(QWidget* parent = nullptr);
void setImage(std::shared_ptr<const SimpleImage> img);
void clear();

View File

@@ -14,7 +14,7 @@ JFJochCalibrationWindow::JFJochCalibrationWindow(QWidget *parent) : JFJochHelper
auto grid_layout = new QGridLayout();
viewer = new JFJochSimpleImageViewer(this);
viewer = new JFJochSimpleImage(this);
calibration_option = new QComboBox(this);
color_map_select = new QComboBox(this);
@@ -41,14 +41,14 @@ JFJochCalibrationWindow::JFJochCalibrationWindow(QWidget *parent) : JFJochHelper
grid_layout->addLayout(foreground_row, 2, 0, 1, 2);
grid_layout->addWidget(viewer, 3, 0, 1, 2);
connect(viewer, &JFJochSimpleImageViewer::backgroundChanged,
connect(viewer, &JFJochSimpleImage::backgroundChanged,
[this] (float val) {background_slider->setValue(val);});
connect(viewer, &JFJochSimpleImageViewer::foregroundChanged,
connect(viewer, &JFJochSimpleImage::foregroundChanged,
[this] (float val) {foreground_slider->setValue(val);});
connect(background_slider, &SliderPlusBox::valueChanged, viewer, &JFJochSimpleImageViewer::changeBackground);
connect(foreground_slider, &SliderPlusBox::valueChanged, viewer, &JFJochSimpleImageViewer::changeForeground);
connect(background_slider, &SliderPlusBox::valueChanged, viewer, &JFJochSimpleImage::changeBackground);
connect(foreground_slider, &SliderPlusBox::valueChanged, viewer, &JFJochSimpleImage::changeForeground);
connect(color_map_select, &QComboBox::currentIndexChanged, this, [this](int index) {
viewer->setColorMap(index);
@@ -60,7 +60,7 @@ JFJochCalibrationWindow::JFJochCalibrationWindow(QWidget *parent) : JFJochHelper
statusBar = new QStatusBar(this);
setStatusBar(statusBar);
connect(viewer, &JFJochSimpleImageViewer::writeStatusBar,
connect(viewer, &JFJochSimpleImage::writeStatusBar,
statusBar, &QStatusBar::showMessage);
}

View File

@@ -9,7 +9,7 @@
#include <QStatusBar>
#include "JFJochHelperWindow.h"
#include "../widgets/JFJochSimpleImageViewer.h"
#include "../widgets/JFJochSimpleImage.h"
#include "../../reader/JFJochReaderDataset.h"
#include "../SimpleImage.h"
#include "../widgets/SliderPlusBox.h"
@@ -26,7 +26,7 @@ class JFJochCalibrationWindow : public JFJochHelperWindow {
std::shared_ptr<const JFJochReaderDataset> dataset;
JFJochSimpleImageViewer *viewer = nullptr;
JFJochSimpleImage *viewer = nullptr;
public:
JFJochCalibrationWindow(QWidget *parent = nullptr);