From 244a7d7caff1056117920f5594bf184d5c33d430 2017-11-07 13:08:33 From: Alexandre Leroux Date: 2017-11-07 13:08:33 Subject: [PATCH] Initializes spectrogram management in the plugin Unlike other types, the spectrogram will have a Y axis representing the energy bands. By default, spectrogram will be generated on 30 energy bands (with eV unit). --- diff --git a/plugins/mockplugin/src/CosinusProvider.cpp b/plugins/mockplugin/src/CosinusProvider.cpp index 98e0f94..5fb2446 100644 --- a/plugins/mockplugin/src/CosinusProvider.cpp +++ b/plugins/mockplugin/src/CosinusProvider.cpp @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -15,6 +16,9 @@ Q_LOGGING_CATEGORY(LOG_CosinusProvider, "CosinusProvider") namespace { +/// Number of bands generated for a spectrogram +const auto SPECTROGRAM_NUMBER_BANDS = 30; + /// Abstract cosinus type struct ICosinusType { virtual ~ICosinusType() = default; @@ -49,6 +53,30 @@ struct ScalarCosinus : public ICosinusType { values[dataIndex] = std::cos(x); } }; + +struct SpectrogramCosinus : public ICosinusType { + /// Ctor with y-axis + explicit SpectrogramCosinus(std::vector yAxisData, Unit yAxisUnit) + : m_YAxisData{std::move(yAxisData)}, m_YAxisUnit{std::move(yAxisUnit)} + { + } + + int componentCount() const override { return m_YAxisData.size(); } + + std::shared_ptr createDataSeries(std::vector xAxisData, + std::vector valuesData, Unit xAxisUnit, + Unit valuesUnit) const override + { + } + + void generateValues(double x, std::vector &values, int dataIndex) const override + { + } + + std::vector m_YAxisData; + Unit m_YAxisUnit; +}; + struct VectorCosinus : public ICosinusType { int componentCount() const override { return 3; } @@ -78,6 +106,13 @@ std::unique_ptr cosinusType(const QString &type) noexcept if (type.compare(QStringLiteral("scalar"), Qt::CaseInsensitive) == 0) { return std::make_unique(); } + else if (type.compare(QStringLiteral("spectrogram"), Qt::CaseInsensitive) == 0) { + // Generates default y-axis data for spectrogram [0., 1., 2., ...] + std::vector yAxisData(SPECTROGRAM_NUMBER_BANDS); + std::iota(yAxisData.begin(), yAxisData.end(), 0.); + + return std::make_unique(std::move(yAxisData), Unit{"eV"}); + } else if (type.compare(QStringLiteral("vector"), Qt::CaseInsensitive) == 0) { return std::make_unique(); }