Files
Jungfraujoch/common/MultiLinePlot.cpp
2025-05-28 18:49:27 +02:00

55 lines
1.3 KiB
C++

// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#include <cassert>
#include <cmath>
#include "MultiLinePlot.h"
void MultiLinePlot::AddPlot(const MultiLinePlotStruct &p) {
plots.emplace_back(p);
}
void MultiLinePlot::SetUnits(MultiLinePlotUnits input) {
units = input;
}
const std::vector<MultiLinePlotStruct> &MultiLinePlot::GetPlots() const {
return plots;
}
MultiLinePlotUnits MultiLinePlot::GetUnits() const {
return units;
}
void MultiLinePlot::Convert2D(const GridScanSettings &input) {
for (auto &p: plots) {
assert(p.x.size() == p.y.size());
p.z = p.y;
for (int i = 0; i < p.x.size(); i++) {
auto tmp = std::lround(p.x[i]);
p.x[i] = input.GetElementPosX_um(tmp) + input.GetGridStepX_um() / 2.0f;
p.y[i] = input.GetElementPosY_um(tmp) + input.GetGridStepY_um() / 2.0f;
}
}
size_x = input.GetGridSizeX_um();
size_y = input.GetGridSizeY_um();
}
void MultiLinePlot::SetSizeX(std::optional<float> input) {
size_x = input;
}
void MultiLinePlot::SetSizeY(std::optional<float> input) {
size_y = input;
}
std::optional<float> MultiLinePlot::GetSizeX() const {
return size_x;
}
std::optional<float> MultiLinePlot::GetSizeY() const {
return size_y;
}