// SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #pragma once #include #include #include #include #include "DetectorSetup.h" #include "ROIDefinition.h" #include "DiffractionGeometry.h" #include "DetectorModules.h" class ROIMap { ROIDefinition rois; static constexpr const size_t roi_limit = 16; public: void SetROI(const ROIDefinition& input); // Box and circle ROIs are drawn in image pixels; azimuthal ROIs at each pixel's place on the plane // (`modules`, empty when that is where the image has it). [[nodiscard]] std::vector GetROIMap(const DiffractionGeometry &geom, const DetectorModules &modules, size_t width, size_t height) const; [[nodiscard]] std::map GetROINameMap() const; [[nodiscard]] const ROIDefinition& GetROIDefinition() const; [[nodiscard]] bool empty() const; [[nodiscard]] size_t size() const; [[nodiscard]] std::vector ExportMetadata() const; };