From 8ff45fe94c3f3f6916f8f673c3ce0b574a69cfdf Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 6 May 2014 09:52:24 +0300 Subject: Value axis reversing support Task-number: QTRD-2428 Change-Id: I51b3a1f8f974d5b72b36ee1188b7557539b9609b Reviewed-by: Titta Heikkala Reviewed-by: Mika Salmela --- tests/scattertest/main.cpp | 8 +++- tests/scattertest/scatterchart.cpp | 80 ++++++++++++++++++++++++++++++++++++++ tests/scattertest/scatterchart.h | 3 ++ 3 files changed, 90 insertions(+), 1 deletion(-) (limited to 'tests/scattertest') diff --git a/tests/scattertest/main.cpp b/tests/scattertest/main.cpp index 82d025aa..b0e52c8c 100644 --- a/tests/scattertest/main.cpp +++ b/tests/scattertest/main.cpp @@ -126,6 +126,9 @@ int main(int argc, char **argv) QPushButton *testItemChangesButton = new QPushButton(widget); testItemChangesButton->setText(QStringLiteral("Test Item changing")); + QPushButton *testReverseButton = new QPushButton(widget); + testReverseButton->setText(QStringLiteral("Test Axis Reversing")); + QLinearGradient grBtoY(0, 0, 100, 0); grBtoY.setColorAt(1.0, Qt::black); grBtoY.setColorAt(0.67, Qt::blue); @@ -242,7 +245,8 @@ int main(int argc, char **argv) vLayout->addWidget(changeSeriesNameButton, 0, Qt::AlignTop); vLayout->addWidget(startTimerButton, 0, Qt::AlignTop); vLayout->addWidget(massiveDataTestButton, 0, Qt::AlignTop); - vLayout->addWidget(testItemChangesButton, 1, Qt::AlignTop); + vLayout->addWidget(testItemChangesButton, 0, Qt::AlignTop); + vLayout->addWidget(testReverseButton, 1, Qt::AlignTop); vLayout2->addWidget(gradientBtoYPB, 0, Qt::AlignTop); vLayout2->addWidget(fpsLabel, 0, Qt::AlignTop); @@ -316,6 +320,8 @@ int main(int argc, char **argv) &ScatterDataModifier::massiveDataTest); QObject::connect(testItemChangesButton, &QPushButton::clicked, modifier, &ScatterDataModifier::testItemChanges); + QObject::connect(testReverseButton, &QPushButton::clicked, modifier, + &ScatterDataModifier::testAxisReverse); QObject::connect(gradientBtoYPB, &QPushButton::clicked, modifier, &ScatterDataModifier::setGradient); QObject::connect(themeButton, &QPushButton::clicked, modifier, diff --git a/tests/scattertest/scatterchart.cpp b/tests/scattertest/scatterchart.cpp index 13a0f040..430279c3 100644 --- a/tests/scattertest/scatterchart.cpp +++ b/tests/scattertest/scatterchart.cpp @@ -411,6 +411,70 @@ void ScatterDataModifier::testItemChanges() counter++; } +void ScatterDataModifier::testAxisReverse() +{ + static int counter = 0; + const int rowCount = 16; + const int colCount = 16; + static QScatter3DSeries *series0 = 0; + static QScatter3DSeries *series1 = 0; + + switch (counter) { + case 0: { + qDebug() << __FUNCTION__ << counter << "Setup test"; + foreach (QScatter3DSeries *series, m_chart->seriesList()) + m_chart->removeSeries(series); + foreach (QValue3DAxis *axis, m_chart->axes()) + m_chart->releaseAxis(axis); + delete series0; + delete series1; + series0 = new QScatter3DSeries; + series1 = new QScatter3DSeries; + populateRisingSeries(series0, rowCount, colCount, 0.0f, 50.0f); + populateRisingSeries(series1, rowCount, colCount, -20.0f, 30.0f); + m_chart->axisX()->setRange(0.0f, 10.0f); + m_chart->axisY()->setRange(-20.0f, 50.0f); + m_chart->axisZ()->setRange(5.0f, 15.0f); + m_chart->addSeries(series0); + m_chart->addSeries(series1); + } + break; + case 1: { + qDebug() << __FUNCTION__ << counter << "Reverse X axis"; + m_chart->axisX()->setReversed(true); + } + break; + case 2: { + qDebug() << __FUNCTION__ << counter << "Reverse Y axis"; + m_chart->axisY()->setReversed(true); + } + break; + case 3: { + qDebug() << __FUNCTION__ << counter << "Reverse Z axis"; + m_chart->axisZ()->setReversed(true); + } + break; + case 4: { + qDebug() << __FUNCTION__ << counter << "Return all axes to normal"; + m_chart->axisX()->setReversed(false); + m_chart->axisY()->setReversed(false); + m_chart->axisZ()->setReversed(false); + } + break; + case 5: { + qDebug() << __FUNCTION__ << counter << "Reverse all axes"; + m_chart->axisX()->setReversed(true); + m_chart->axisY()->setReversed(true); + m_chart->axisZ()->setReversed(true); + } + break; + default: + qDebug() << __FUNCTION__ << "Resetting test"; + counter = -1; + } + counter++; +} + void ScatterDataModifier::addData() { // Add labels @@ -950,3 +1014,19 @@ void ScatterDataModifier::populateFlatSeries(QScatter3DSeries *series, int rows, } series->dataProxy()->resetArray(dataArray); } + +void ScatterDataModifier::populateRisingSeries(QScatter3DSeries *series, int rows, int columns, + float minValue, float maxValue) +{ + QScatterDataArray *dataArray = new QScatterDataArray; + int arraySize = rows * columns; + dataArray->resize(arraySize); + float range = maxValue - minValue; + for (int i = 0; i < rows; i++) { + for (int j = 0; j < columns; j++) { + float yValue = minValue + (range * i * j / arraySize); + (*dataArray)[i * columns + j].setPosition(QVector3D(float(i), yValue, float(j))); + } + } + series->dataProxy()->resetArray(dataArray); +} diff --git a/tests/scattertest/scatterchart.h b/tests/scattertest/scatterchart.h index f239cb73..977e1201 100644 --- a/tests/scattertest/scatterchart.h +++ b/tests/scattertest/scatterchart.h @@ -59,6 +59,7 @@ public: void setFpsMeasurement(bool enable); void setFpsLabel(QLabel *fpsLabel) { m_fpsLabel = fpsLabel; } void testItemChanges(); + void testAxisReverse(); public slots: void changeShadowQuality(int quality); @@ -96,6 +97,8 @@ private: QVector3D randVector(); QScatter3DSeries *createAndAddSeries(); void populateFlatSeries(QScatter3DSeries *series, int rows, int columns, float value); + void populateRisingSeries(QScatter3DSeries *series, int rows, int columns, float minValue, + float maxValue); Q3DScatter *m_chart; int m_fontSize; -- cgit v1.2.3