From ae0fa344f1faa5742342409f64ec767fb30a8b7c Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Thu, 6 Nov 2025 16:50:46 +0100 Subject: [PATCH] jfjoch_viewer: Calibration working; ROI is super slow (need to clean-up the code!!!!) --- viewer/JFJochImageReadingWorker.cpp | 5 +++-- viewer/JFJochImageReadingWorker.h | 2 +- viewer/JFJochViewerWindow.cpp | 2 ++ viewer/widgets/JFJochSimpleImageViewer.cpp | 4 ++-- viewer/widgets/JFJochSimpleImageViewer.h | 2 +- viewer/windows/JFJochCalibrationWindow.cpp | 2 +- viewer/windows/JFJochCalibrationWindow.h | 2 +- 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/viewer/JFJochImageReadingWorker.cpp b/viewer/JFJochImageReadingWorker.cpp index 4dcae12b..43adccef 100644 --- a/viewer/JFJochImageReadingWorker.cpp +++ b/viewer/JFJochImageReadingWorker.cpp @@ -394,11 +394,12 @@ void JFJochImageReadingWorker::LoadCalibration(QString dataset) { try { tmp->image = file_reader.ReadCalibration(tmp->buffer, dataset.toStdString()); + std::shared_ptr ctmp = tmp; emit simpleImageLoaded(ctmp); } catch (const std::exception &e) { logger.Info("Error loading calibration: {}", e.what()); } - } - logger.Info("HTTP mode doesn't allow to read calibration (at the moment"); + } else + logger.Info("HTTP mode doesn't allow to read calibration (at the moment"); } diff --git a/viewer/JFJochImageReadingWorker.h b/viewer/JFJochImageReadingWorker.h index 745ba070..9c9daeac 100644 --- a/viewer/JFJochImageReadingWorker.h +++ b/viewer/JFJochImageReadingWorker.h @@ -69,7 +69,7 @@ signals: void imageNumberChanged(int64_t total_images, int64_t current_image); void setToolbarMode(JFJochViewerToolbarImage::ToolbarMode input); void setRings(const QVector &v); - void simpleImageLoaded(std::shared_ptr &image); + void simpleImageLoaded(std::shared_ptr image); public: JFJochImageReadingWorker(const SpotFindingSettings &settings, const DiffractionExperiment& experiment, QObject *parent = nullptr); ~JFJochImageReadingWorker() override = default; diff --git a/viewer/JFJochViewerWindow.cpp b/viewer/JFJochViewerWindow.cpp index 5f809706..f7dee7a4 100644 --- a/viewer/JFJochViewerWindow.cpp +++ b/viewer/JFJochViewerWindow.cpp @@ -317,6 +317,8 @@ JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString calibrationWindow, &JFJochCalibrationWindow::close); connect(calibrationWindow, &JFJochCalibrationWindow::closing, menuBar, &JFJochViewerMenu::calibrationWindowClosing); + connect(calibrationWindow, &JFJochCalibrationWindow::loadCalibration, + reading_worker, &JFJochImageReadingWorker::LoadCalibration); connect(reading_worker, &JFJochImageReadingWorker::datasetLoaded, calibrationWindow, &JFJochCalibrationWindow::datasetLoaded); diff --git a/viewer/widgets/JFJochSimpleImageViewer.cpp b/viewer/widgets/JFJochSimpleImageViewer.cpp index 92c6f1a8..fbac6163 100644 --- a/viewer/widgets/JFJochSimpleImageViewer.cpp +++ b/viewer/widgets/JFJochSimpleImageViewer.cpp @@ -51,8 +51,8 @@ void JFJochSimpleImageViewer::clear() { scene()->clear(); } -void JFJochSimpleImageViewer::setImage(const std::shared_ptr &img) { - image_ = img; +void JFJochSimpleImageViewer::setImage(std::shared_ptr img) { + image_ = std::move(img); has_image_ = true; renderImage(); updateScene(); diff --git a/viewer/widgets/JFJochSimpleImageViewer.h b/viewer/widgets/JFJochSimpleImageViewer.h index 7a563a3f..805a4fe0 100644 --- a/viewer/widgets/JFJochSimpleImageViewer.h +++ b/viewer/widgets/JFJochSimpleImageViewer.h @@ -18,7 +18,7 @@ class JFJochSimpleImageViewer : public QGraphicsView { Q_OBJECT public: explicit JFJochSimpleImageViewer(QWidget* parent = nullptr); - void setImage(const std::shared_ptr &img); + void setImage(std::shared_ptr img); void clear(); public slots: diff --git a/viewer/windows/JFJochCalibrationWindow.cpp b/viewer/windows/JFJochCalibrationWindow.cpp index 214ebc12..299d7515 100644 --- a/viewer/windows/JFJochCalibrationWindow.cpp +++ b/viewer/windows/JFJochCalibrationWindow.cpp @@ -84,7 +84,7 @@ void JFJochCalibrationWindow::datasetLoaded(std::shared_ptr &image) { +void JFJochCalibrationWindow::calibrationLoaded(std::shared_ptr image) { viewer->setImage(image); } diff --git a/viewer/windows/JFJochCalibrationWindow.h b/viewer/windows/JFJochCalibrationWindow.h index 2018f3a8..05820bdb 100644 --- a/viewer/windows/JFJochCalibrationWindow.h +++ b/viewer/windows/JFJochCalibrationWindow.h @@ -42,5 +42,5 @@ private slots: public slots: void open(); void datasetLoaded(std::shared_ptr in_dataset); - void calibrationLoaded(std::shared_ptr &image); + void calibrationLoaded(std::shared_ptr image); };