52 lines
1.4 KiB
C++
52 lines
1.4 KiB
C++
// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
#ifndef JFJOCHIMAGEREADER_H
|
|
#define JFJOCHIMAGEREADER_H
|
|
|
|
#include <unordered_set>
|
|
#include <map>
|
|
#include <mutex>
|
|
|
|
#include "../common/JFJochMessages.h"
|
|
#include "../common/Plot.h"
|
|
#include "../common/ROIBox.h"
|
|
#include "JFJochReaderDataset.h"
|
|
#include "JFJochReaderImage.h"
|
|
|
|
class JFJochReader {
|
|
private:
|
|
std::unique_ptr<ROIElement> roi;
|
|
|
|
mutable std::mutex current_image_mutex;
|
|
std::shared_ptr<JFJochReaderImage> current_image;
|
|
|
|
mutable std::mutex start_message_mutex;
|
|
std::shared_ptr<JFJochReaderDataset> start_message;
|
|
|
|
// Following functions assume that current_image is protected via mutex
|
|
void CalcROI();
|
|
|
|
virtual std::shared_ptr<JFJochReaderImage> LoadImageInternal(int64_t image_number) = 0;
|
|
|
|
protected:
|
|
void SetStartMessage(const std::shared_ptr<JFJochReaderDataset> &val);
|
|
public:
|
|
virtual ~JFJochReader() = default;
|
|
|
|
std::shared_ptr<JFJochReaderDataset> GetStartMessage() const;
|
|
[[nodiscard]] virtual uint64_t GetNumberOfImages() const = 0;
|
|
|
|
virtual void Close() = 0;
|
|
|
|
void LoadImage(int64_t image_number, int64_t summation_factor = 1);
|
|
std::shared_ptr<JFJochReaderImage> CopyImage();
|
|
|
|
// Analysis functions
|
|
void SetROI(const ROIBox& input);
|
|
void SetROI(const ROICircle& input);
|
|
void ClearROI();
|
|
};
|
|
|
|
#endif //JFJOCHIMAGEREADER_H
|