// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JFJOCHIMAGEREADER_H #define JFJOCHIMAGEREADER_H #include #include #include #include "../common/JFJochMessages.h" #include "../common/Plot.h" #include "../common/ROIBox.h" #include "../common/DiffractionExperiment.h" #include "JFJochReaderDataset.h" #include "JFJochReaderImage.h" class JFJochReader { mutable std::mutex m; std::shared_ptr dataset; virtual bool LoadImage_i(std::shared_ptr &dataset, DataMessage& message, std::vector &buffer, int64_t image_number, bool update_dataset) = 0; mutable std::mutex summation_mutex; void SummationThread(int64_t image0, int64_t n_image, int64_t image_jump, JFJochReaderImage &image); protected: void SetStartMessage(const std::shared_ptr &val); DiffractionExperiment default_experiment; public: virtual ~JFJochReader() = default; JFJochReader& Experiment(const DiffractionExperiment& experiment); std::shared_ptr GetDataset() const; [[nodiscard]] virtual uint64_t GetNumberOfImages() const = 0; virtual void Close() = 0; std::shared_ptr LoadImage(int64_t image_number, int64_t summation_factor = 1); void UpdateGeomMetadata(const DiffractionExperiment& experiment); void UpdateUserMask(const std::vector& mask); }; #endif //JFJOCHIMAGEREADER_H