##// END OF EJS Templates
Fix Chart build on Solaris...
Fix Chart build on Solaris The sine and the square root methods in demos and examples have been replaced with the ones provided by Qt. This ensures that the code compiles also on Solaris. Task-number: QTRD-2262 Change-Id: I776341bac0e623f803b4cad771a02cefc6db1b15 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Milla Pohjanheimo <milla.pohjanheimo@digia.com>

File last commit:

r2613:1a7a17f8e2cd
r2613:1a7a17f8e2cd
Show More
datasource.cpp
93 lines | 2.6 KiB | text/x-c | CppLexer
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Enterprise Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Enterprise licenses may use this file in
** accordance with the Qt Enterprise License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
** $QT_END_LICENSE$
**
****************************************************************************/
#include "datasource.h"
#include <QXYSeries>
#include <QAreaSeries>
#include <QDeclarativeView>
#include <QDebug>
#include <qmath.h>
QTCOMMERCIALCHART_USE_NAMESPACE
Q_DECLARE_METATYPE(QAbstractSeries *)
DataSource::DataSource(QDeclarativeView *appViewer, QObject *parent) :
QObject(parent),
m_appViewer(appViewer),
m_index(-1)
{
qRegisterMetaType<QAbstractSeries*>();
generateData(0, 5, 1024);
}
void DataSource::update(QAbstractSeries *series)
{
if (series) {
QXYSeries *xySeries = static_cast<QXYSeries *>(series);
m_index++;
if (m_index > m_data.count() - 1)
m_index = 0;
QList<QPointF> points = m_data.at(m_index);
// Use replace instead of clear + append, it's optimized for performance
xySeries->replace(points);
}
}
void DataSource::generateData(int type, int rowCount, int colCount)
{
// Remove previous data
foreach (QList<QPointF> row, m_data)
row.clear();
m_data.clear();
// Append the new data depending on the type
for (int i(0); i < rowCount; i++) {
QList<QPointF> points;
for (int j(0); j < colCount; j++) {
qreal x(0);
qreal y(0);
switch (type) {
case 0:
// data with sin + random component
y = qSin(3.14159265358979 / 50 * j) + 0.5 + (qreal) rand() / (qreal) RAND_MAX;
x = j;
break;
case 1:
// linear data
x = j;
y = (qreal) i / 10;
break;
default:
// unknown, do nothing
break;
}
points.append(QPointF(x, y));
}
m_data.append(points);
}
}
void DataSource::setAntialiasing(bool enabled)
{
m_appViewer->setRenderHint(QPainter::Antialiasing, enabled);
}