##// END OF EJS Templates
Unplot menu (5): adds contains() method to an IVariableContainer...
Unplot menu (5): adds contains() method to an IVariableContainer The method will be used to generate an action in the 'unplot' menu, depending on whether or not the container contains the variable

File last commit:

r310:9a5cb57f1573
r327:87af69bdce8a
Show More
CosinusProvider.cpp
47 lines | 1.4 KiB | text/x-c | CppLexer
#include "CosinusProvider.h"
#include <Data/DataProviderParameters.h>
#include <Data/ScalarSeries.h>
#include <cmath>
#include <QDateTime>
Q_LOGGING_CATEGORY(LOG_CosinusProvider, "CosinusProvider")
std::shared_ptr<IDataSeries>
CosinusProvider::retrieveData(const DataProviderParameters &parameters) const
{
auto dateTime = parameters.m_Time;
auto dataIndex = 0;
// Gets the timerange from the parameters
double freq = 100.0;
double start = dateTime.m_TStart * freq; // 100 htz
double end = dateTime.m_TEnd * freq; // 100 htz
// 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{});
for (auto time = start; time < end; ++time, ++dataIndex) {
const auto timeOnFreq = time / freq;
scalarSeries->setData(dataIndex, timeOnFreq, std::cos(timeOnFreq));
}
return scalarSeries;
}
void CosinusProvider::requestDataLoading(const QVector<SqpDateTime> &dateTimeList)
{
// NOTE: Try to use multithread if possible
for (const auto &dateTime : dateTimeList) {
auto scalarSeries = this->retrieveData(DataProviderParameters{dateTime});
emit dataProvided(scalarSeries, dateTime);
}
}