55 lines
1.3 KiB
C++
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;
|
|
}
|
|
|