diff --git a/core/include/Data/ArrayData.h b/core/include/Data/ArrayData.h index 0acf6a0..dfa62ea 100644 --- a/core/include/Data/ArrayData.h +++ b/core/include/Data/ArrayData.h @@ -27,6 +27,17 @@ public: m_Data[0].resize(nbColumns); } + /** + * Ctor for a unidimensional ArrayData + * @param data the data the ArrayData will hold + */ + template > + explicit ArrayData(QVector data) : m_Data{1, QVector{}} + { + QWriteLocker locker{&m_Lock}; + m_Data[0] = std::move(data); + } + /// Copy ctor explicit ArrayData(const ArrayData &other) { diff --git a/core/include/Data/ScalarSeries.h b/core/include/Data/ScalarSeries.h index 03d69cc..bbc2168 100644 --- a/core/include/Data/ScalarSeries.h +++ b/core/include/Data/ScalarSeries.h @@ -17,6 +17,15 @@ public: explicit ScalarSeries(int size, const Unit &xAxisUnit, const Unit &valuesUnit); /** + * Ctor with two vectors. The vectors must have the same size, otherwise a ScalarSeries with no + * values will be created. + * @param xAxisData x-axis data + * @param valuesData values data + */ + explicit ScalarSeries(QVector xAxisData, QVector valuesData, + const Unit &xAxisUnit, const Unit &valuesUnit); + + /** * Sets data for a specific index. The index has to be valid to be effective * @param index the index to which the data will be set * @param x the x-axis data diff --git a/core/src/Data/ScalarSeries.cpp b/core/src/Data/ScalarSeries.cpp index 2673da9..b38d8b0 100644 --- a/core/src/Data/ScalarSeries.cpp +++ b/core/src/Data/ScalarSeries.cpp @@ -6,6 +6,13 @@ ScalarSeries::ScalarSeries(int size, const Unit &xAxisUnit, const Unit &valuesUn { } +ScalarSeries::ScalarSeries(QVector xAxisData, QVector valuesData, + const Unit &xAxisUnit, const Unit &valuesUnit) + : DataSeries{std::make_shared >(std::move(xAxisData)), xAxisUnit, + std::make_shared >(std::move(valuesData)), valuesUnit} +{ +} + void ScalarSeries::setData(int index, double x, double value) noexcept { xAxisData()->setData(index, x); diff --git a/plugins/amda/src/AmdaResultParser.cpp b/plugins/amda/src/AmdaResultParser.cpp index b929c7b..b314aaa 100644 --- a/plugins/amda/src/AmdaResultParser.cpp +++ b/plugins/amda/src/AmdaResultParser.cpp @@ -59,12 +59,6 @@ std::shared_ptr AmdaResultParser::readTxt(const QString &filePath) } /// @todo ALX : handle units - auto scalarSeries = std::make_shared(xData.size(), Unit{"nT", true}, Unit{}); - - const auto count = xData.size(); - for (auto i = 0; i < count; ++i) { - scalarSeries->setData(i, xData.at(i), valuesData.at(i)); - } - - return scalarSeries; + return std::make_shared(std::move(xData), std::move(valuesData), Unit{"nT", true}, + Unit{}); }