From aa9146db2d67c683150f6c2418a636c14d2f138a 2017-11-16 10:22:49 From: Alexandre Leroux Date: 2017-11-16 10:22:49 Subject: [PATCH] Spectrograms implementation (5) Reads results Results use values indexes and fill value stemmed from properties --- diff --git a/plugins/amda/include/AmdaResultParserHelper.h b/plugins/amda/include/AmdaResultParserHelper.h index 12191d5..a362858 100644 --- a/plugins/amda/include/AmdaResultParserHelper.h +++ b/plugins/amda/include/AmdaResultParserHelper.h @@ -76,7 +76,11 @@ public: private: Properties m_Properties{}; + std::vector m_XAxisData{}; std::vector m_YAxisData{}; + std::vector m_ValuesData{}; + std::vector m_ValuesIndexes{}; + double m_FillValue{std::numeric_limits::quiet_NaN()}; }; /** diff --git a/plugins/amda/src/AmdaResultParserHelper.cpp b/plugins/amda/src/AmdaResultParserHelper.cpp index 517901a..460ddc2 100644 --- a/plugins/amda/src/AmdaResultParserHelper.cpp +++ b/plugins/amda/src/AmdaResultParserHelper.cpp @@ -1,8 +1,10 @@ #include "AmdaResultParserHelper.h" #include +#include #include +#include #include #include @@ -269,12 +271,28 @@ bool SpectrogramParserHelper::checkProperties() minBands.begin(), minBands.end(), maxBands.begin(), std::back_inserter(m_YAxisData), [](const auto &minValue, const auto &maxValue) { return (minValue + maxValue) / 2.; }); + // Generates values indexes, i.e. the order in which each value will be retrieved (in ascending + // order of the associated bands) + m_ValuesIndexes = SortUtils::sortPermutation(m_YAxisData, std::less()); + + // Sorts y-axis data accoding to the ascending order + m_YAxisData = SortUtils::sort(m_YAxisData, 1, m_ValuesIndexes); + + // Sets fill value + m_FillValue = m_Properties.value(FILL_VALUE_PROPERTY).value(); + + /// @todo: handle min/max samplings? + return true; } std::shared_ptr SpectrogramParserHelper::createSeries() { - /// @todo ALX + return std::make_shared( + std::move(m_XAxisData), std::move(m_YAxisData), std::move(m_ValuesData), + Unit{"t", true}, // x-axis unit is always a time unit + m_Properties.value(Y_AXIS_UNIT_PROPERTY).value(), + m_Properties.value(VALUES_UNIT_PROPERTY).value()); } void SpectrogramParserHelper::readPropertyLine(const QString &line) @@ -329,7 +347,7 @@ void SpectrogramParserHelper::readPropertyLine(const QString &line) void SpectrogramParserHelper::readResultLine(const QString &line) { - /// @todo ALX + tryReadResult(m_XAxisData, m_ValuesData, line, m_ValuesIndexes, m_FillValue); } // ////////////////// //