// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #ifndef JFJOCH_MULTILINEPLOT_H #define JFJOCH_MULTILINEPLOT_H #include #include #include "Plot.h" #include "GridScanSettings.h" enum class MultiLinePlotUnits {ImageNumber, Angle_deg, Q_recipA, ADU, Grid_um, d_A }; struct MultiLinePlotStruct { std::string title; std::vector x; std::vector y; std::vector z; }; class MultiLinePlot { std::optional size_x, size_y; std::vector plots; MultiLinePlotUnits units = MultiLinePlotUnits::ImageNumber; public: void AddPlot(const MultiLinePlotStruct &p); void SetUnits(MultiLinePlotUnits input); void SetSizeX(std::optional input); void SetSizeY(std::optional input); [[nodiscard]] const std::vector &GetPlots() const; [[nodiscard]] MultiLinePlotUnits GetUnits() const; void Convert2D(const GridScanSettings& input); [[nodiscard]] std::optional GetSizeX() const; [[nodiscard]] std::optional GetSizeY() const; }; #endif //JFJOCH_MULTILINEPLOT_H