CosinusProvider.cpp
71 lines
| 1.9 KiB
| text/x-c
|
CppLexer
Alexandre Leroux
|
r128 | #include "CosinusProvider.h" | ||
#include <Data/DataProviderParameters.h> | ||||
#include <Data/ScalarSeries.h> | ||||
r135 | #include <cmath> | |||
r231 | Q_LOGGING_CATEGORY(LOG_CosinusProvider, "CosinusProvider") | |||
Alexandre Leroux
|
r128 | std::unique_ptr<IDataSeries> | ||
CosinusProvider::retrieveData(const DataProviderParameters ¶meters) const | ||||
{ | ||||
r191 | auto dateTime = parameters.m_Time; | |||
Alexandre Leroux
|
r128 | // Gets the timerange from the parameters | ||
r191 | auto start = dateTime.m_TStart; | |||
auto end = dateTime.m_TEnd; | ||||
Alexandre Leroux
|
r128 | |||
// We assure that timerange is valid | ||||
if (end < start) { | ||||
std::swap(start, end); | ||||
} | ||||
// Generates scalar series containing cosinus values (one value per second) | ||||
auto scalarSeries | ||||
Alexandre Leroux
|
r177 | = std::make_unique<ScalarSeries>(end - start, Unit{QStringLiteral("t"), true}, Unit{}); | ||
Alexandre Leroux
|
r128 | |||
Alexandre Leroux
|
r137 | auto dataIndex = 0; | ||
for (auto time = start; time < end; ++time, ++dataIndex) { | ||||
Alexandre Leroux
|
r128 | scalarSeries->setData(dataIndex, time, std::cos(time)); | ||
} | ||||
r231 | return scalarSeries; | |||
} | ||||
void CosinusProvider::requestDataLoading(const QVector<SqpDateTime> &dateTimeList) | ||||
{ | ||||
// NOTE: Try to use multithread if possible | ||||
r243 | for (const auto &dateTime : dateTimeList) { | |||
r231 | ||||
auto scalarSeries = this->retrieveDataSeries(dateTime); | ||||
emit dataProvided(scalarSeries, dateTime); | ||||
} | ||||
} | ||||
Alexandre Leroux
|
r237 | std::shared_ptr<IDataSeries> CosinusProvider::retrieveDataSeries(const SqpDateTime &dateTime) | ||
r231 | { | |||
// Gets the timerange from the parameters | ||||
auto start = dateTime.m_TStart; | ||||
auto end = dateTime.m_TEnd; | ||||
// We assure that timerange is valid | ||||
if (end < start) { | ||||
std::swap(start, end); | ||||
} | ||||
// Generates scalar series containing cosinus values (one value per second) | ||||
auto scalarSeries | ||||
= std::make_shared<ScalarSeries>(end - start, Unit{QStringLiteral("t"), true}, Unit{}); | ||||
auto dataIndex = 0; | ||||
for (auto time = start; time < end; ++time, ++dataIndex) { | ||||
scalarSeries->setData(dataIndex, time, std::cos(time)); | ||||
} | ||||
Alexandre Leroux
|
r128 | return scalarSeries; | ||
} | ||||