jfjoch_viewer: Rename Image views to give more consistency. Continue merging code
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
@@ -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
|
||||
@@ -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();
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user