summaryrefslogtreecommitdiffstats
path: root/examples/scatterchart/scatterchart.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scatterchart/scatterchart.cpp')
-rw-r--r--examples/scatterchart/scatterchart.cpp139
1 files changed, 135 insertions, 4 deletions
diff --git a/examples/scatterchart/scatterchart.cpp b/examples/scatterchart/scatterchart.cpp
index d8aa23b1..67efdb93 100644
--- a/examples/scatterchart/scatterchart.cpp
+++ b/examples/scatterchart/scatterchart.cpp
@@ -37,6 +37,8 @@ ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter)
QScatterDataProxy *proxy = new QScatterDataProxy;
m_chart->setDataProxy(proxy);
+
+ connect(&m_timer, &QTimer::timeout, this, &ScatterDataModifier::timeout);
}
ScatterDataModifier::~ScatterDataModifier()
@@ -55,6 +57,9 @@ void ScatterDataModifier::addData()
m_chart->valueAxisX()->setTitle("Somethings");
m_chart->valueAxisY()->setTitle("Values");
m_chart->valueAxisZ()->setTitle("Others");
+ m_chart->valueAxisX()->setRange(-50.0, 50.0);
+ m_chart->valueAxisY()->setRange(-1.0, 1.0);
+ m_chart->valueAxisZ()->setRange(-50.0, 50.0);
QScatterDataArray *dataArray = new QScatterDataArray;
dataArray->resize(numberOfItems);
@@ -62,10 +67,7 @@ void ScatterDataModifier::addData()
#if RANDOM_SCATTER
for (int i = 0; i < numberOfItems; i++) {
- ptrToDataArray->setPosition(
- QVector3D((qreal)(rand() % 100) / 100.0 - (qreal)(rand() % 100) / 100.0,
- (qreal)(rand() % 100) / 100.0 - (qreal)(rand() % 100) / 100.0,
- (qreal)(rand() % 100) / 100.0 - (qreal)(rand() % 100) / 100.0));
+ ptrToDataArray->setPosition(randVector());
ptrToDataArray++;
}
#else
@@ -165,6 +167,127 @@ void ScatterDataModifier::shadowQualityUpdatedByVisual(ShadowQuality sq)
emit shadowQualityChanged(quality);
}
+void ScatterDataModifier::clear()
+{
+ m_chart->dataProxy()->resetArray(0);
+ qDebug() << m_loopCounter << "Cleared array";
+}
+
+void ScatterDataModifier::addOne()
+{
+ QScatterDataItem item(randVector());
+ int addIndex = m_chart->dataProxy()->addItem(item);
+ qDebug() << m_loopCounter << "added one to index:" << addIndex << "array size:" << m_chart->dataProxy()->array()->size();
+}
+
+void ScatterDataModifier::addBunch()
+{
+ QScatterDataArray items(100);
+ for (int i = 0; i < items.size(); i++)
+ items[i].setPosition(randVector());
+ int addIndex = m_chart->dataProxy()->addItems(items);
+ qDebug() << m_loopCounter << "added bunch to index:" << addIndex << "array size:" << m_chart->dataProxy()->array()->size();
+}
+
+void ScatterDataModifier::insertOne()
+{
+ QScatterDataItem item(randVector());
+ m_chart->dataProxy()->insertItem(0, item);
+ qDebug() << m_loopCounter << "Inserted one, array size:" << m_chart->dataProxy()->array()->size();
+}
+
+void ScatterDataModifier::insertBunch()
+{
+ QScatterDataArray items(100);
+ for (int i = 0; i < items.size(); i++)
+ items[i].setPosition(randVector());
+ m_chart->dataProxy()->insertItems(0, items);
+ qDebug() << m_loopCounter << "Inserted bunch, array size:" << m_chart->dataProxy()->array()->size();
+}
+
+void ScatterDataModifier::changeOne()
+{
+ if (m_chart->dataProxy()->array()->size()) {
+ QScatterDataItem item(randVector());
+ m_chart->dataProxy()->setItem(0, item);
+ qDebug() << m_loopCounter << "Changed one, array size:" << m_chart->dataProxy()->array()->size();
+ }
+}
+
+void ScatterDataModifier::changeBunch()
+{
+ if (m_chart->dataProxy()->array()->size()) {
+ int amount = qMin(m_chart->dataProxy()->array()->size(), 100);
+ QScatterDataArray items(amount);
+ for (int i = 0; i < items.size(); i++)
+ items[i].setPosition(randVector());
+ m_chart->dataProxy()->setItems(0, items);
+ qDebug() << m_loopCounter << "Changed bunch, array size:" << m_chart->dataProxy()->array()->size();
+ }
+}
+
+void ScatterDataModifier::removeOne()
+{
+ m_chart->dataProxy()->removeItems(0, 1);
+ qDebug() << m_loopCounter << "Removed one, array size:" << m_chart->dataProxy()->array()->size();
+}
+
+void ScatterDataModifier::removeBunch()
+{
+ m_chart->dataProxy()->removeItems(0, 100);
+ qDebug() << m_loopCounter << "Removed bunch, array size:" << m_chart->dataProxy()->array()->size();
+}
+
+void ScatterDataModifier::timeout()
+{
+ int doWhat = rand() % 8;
+ if (!(rand() % 100))
+ doWhat = -1;
+
+ switch (doWhat) {
+ case 0:
+ addOne();
+ break;
+ case 1:
+ addBunch();
+ break;
+ case 2:
+ insertOne();
+ break;
+ case 3:
+ insertBunch();
+ break;
+ case 4:
+ changeOne();
+ break;
+ case 5:
+ changeBunch();
+ break;
+ case 6:
+ removeOne();
+ break;
+ case 7:
+ removeBunch();
+ break;
+ default:
+ clear();
+ break;
+ }
+
+ m_loopCounter++;
+}
+
+void ScatterDataModifier::startStopTimer()
+{
+ if (m_timer.isActive()) {
+ m_timer.stop();
+ } else {
+ clear();
+ m_loopCounter = 0;
+ m_timer.start(0);
+ }
+}
+
void ScatterDataModifier::changeShadowQuality(int quality)
{
ShadowQuality sq = ShadowNone;
@@ -192,3 +315,11 @@ void ScatterDataModifier::setGridEnabled(int enabled)
{
m_chart->setGridVisible((bool)enabled);
}
+
+QVector3D ScatterDataModifier::randVector()
+{
+ return QVector3D(
+ (float)(rand() % 100) / 2.0f - (float)(rand() % 100) / 2.0f,
+ (float)(rand() % 100) / 100.0f - (float)(rand() % 100) / 100.0f,
+ (float)(rand() % 100) / 2.0f - (float)(rand() % 100) / 2.0f);
+}