@@ -3,6 +3,7 | |||
|
3 | 3 | |
|
4 | 4 | #include <Data/DataProviderParameters.h> |
|
5 | 5 | #include <Data/ScalarSeries.h> |
|
6 | #include <Data/SpectrogramSeries.h> | |
|
6 | 7 | #include <Data/VectorSeries.h> |
|
7 | 8 | |
|
8 | 9 | #include <cmath> |
@@ -15,6 +16,9 Q_LOGGING_CATEGORY(LOG_CosinusProvider, "CosinusProvider") | |||
|
15 | 16 | |
|
16 | 17 | namespace { |
|
17 | 18 | |
|
19 | /// Number of bands generated for a spectrogram | |
|
20 | const auto SPECTROGRAM_NUMBER_BANDS = 30; | |
|
21 | ||
|
18 | 22 | /// Abstract cosinus type |
|
19 | 23 | struct ICosinusType { |
|
20 | 24 | virtual ~ICosinusType() = default; |
@@ -49,6 +53,30 struct ScalarCosinus : public ICosinusType { | |||
|
49 | 53 | values[dataIndex] = std::cos(x); |
|
50 | 54 | } |
|
51 | 55 | }; |
|
56 | ||
|
57 | struct SpectrogramCosinus : public ICosinusType { | |
|
58 | /// Ctor with y-axis | |
|
59 | explicit SpectrogramCosinus(std::vector<double> yAxisData, Unit yAxisUnit) | |
|
60 | : m_YAxisData{std::move(yAxisData)}, m_YAxisUnit{std::move(yAxisUnit)} | |
|
61 | { | |
|
62 | } | |
|
63 | ||
|
64 | int componentCount() const override { return m_YAxisData.size(); } | |
|
65 | ||
|
66 | std::shared_ptr<IDataSeries> createDataSeries(std::vector<double> xAxisData, | |
|
67 | std::vector<double> valuesData, Unit xAxisUnit, | |
|
68 | Unit valuesUnit) const override | |
|
69 | { | |
|
70 | } | |
|
71 | ||
|
72 | void generateValues(double x, std::vector<double> &values, int dataIndex) const override | |
|
73 | { | |
|
74 | } | |
|
75 | ||
|
76 | std::vector<double> m_YAxisData; | |
|
77 | Unit m_YAxisUnit; | |
|
78 | }; | |
|
79 | ||
|
52 | 80 | struct VectorCosinus : public ICosinusType { |
|
53 | 81 | int componentCount() const override { return 3; } |
|
54 | 82 | |
@@ -78,6 +106,13 std::unique_ptr<ICosinusType> cosinusType(const QString &type) noexcept | |||
|
78 | 106 | if (type.compare(QStringLiteral("scalar"), Qt::CaseInsensitive) == 0) { |
|
79 | 107 | return std::make_unique<ScalarCosinus>(); |
|
80 | 108 | } |
|
109 | else if (type.compare(QStringLiteral("spectrogram"), Qt::CaseInsensitive) == 0) { | |
|
110 | // Generates default y-axis data for spectrogram [0., 1., 2., ...] | |
|
111 | std::vector<double> yAxisData(SPECTROGRAM_NUMBER_BANDS); | |
|
112 | std::iota(yAxisData.begin(), yAxisData.end(), 0.); | |
|
113 | ||
|
114 | return std::make_unique<SpectrogramCosinus>(std::move(yAxisData), Unit{"eV"}); | |
|
115 | } | |
|
81 | 116 | else if (type.compare(QStringLiteral("vector"), Qt::CaseInsensitive) == 0) { |
|
82 | 117 | return std::make_unique<VectorCosinus>(); |
|
83 | 118 | } |
General Comments 0
You need to be logged in to leave comments.
Login now