From b492b273712aa09c6309516f1df7a1684b371c18 Mon Sep 17 00:00:00 2001 From: Mika Salmela Date: Mon, 8 Dec 2014 11:43:20 +0200 Subject: Fixes to galaxy. Change-Id: I41a666177526db8563eee5799dee57e9994800dc Signed-off-by: Mika Salmela --- tests/galaxy/galaxydata.cpp | 73 +++++++++++++++++++++++++++++---------------- tests/galaxy/galaxydata.h | 6 ++-- tests/galaxy/main.cpp | 7 +++++ 3 files changed, 58 insertions(+), 28 deletions(-) diff --git a/tests/galaxy/galaxydata.cpp b/tests/galaxy/galaxydata.cpp index 9cd3202c..449e9706 100644 --- a/tests/galaxy/galaxydata.cpp +++ b/tests/galaxy/galaxydata.cpp @@ -69,11 +69,7 @@ GalaxyData::GalaxyData(Q3DScatter *scatter, this, &GalaxyData::handleFpsChange); m_graph->setMeasureFps(true); - createNormalSeries(); - - m_dataArray = new QScatterDataArray; - m_dataArray->resize(numOfStars); - + createSeries(); createGalaxy(); } @@ -154,17 +150,25 @@ void GalaxyData::createGalaxy() createFilteredView(); } -void GalaxyData::createNormalSeries() +void GalaxyData::createSeries() { - QScatterDataProxy *proxy = new QScatterDataProxy; - QScatter3DSeries *series = new QScatter3DSeries(proxy); - series->setMesh(QAbstract3DSeries::MeshPoint); - m_graph->addSeries(series); + QScatterDataProxy *proxyNormal = new QScatterDataProxy; + m_normalSeries = new QScatter3DSeries(proxyNormal); + m_normalSeries->setMesh(QAbstract3DSeries::MeshPoint); + m_graph->addSeries(m_normalSeries); + + QScatterDataProxy *proxyFiltered = new QScatterDataProxy; + m_filteredSeries = new QScatter3DSeries(proxyFiltered); + m_filteredSeries->setMesh(QAbstract3DSeries::MeshPoint); + m_graph->addSeries(m_filteredSeries); + } void GalaxyData::createNormalDataView() { - QScatterDataItem *ptrToDataArray = &m_dataArray->first(); + QScatterDataArray *dataArray = new QScatterDataArray; + dataArray->resize(numOfStars); + QScatterDataItem *ptrToDataArray = &dataArray->first(); for (uint i = 0; i < numOfStars; i++) { ptrToDataArray->setPosition(QVector3D(m_pStars[i].m_pos.x(), @@ -173,8 +177,8 @@ void GalaxyData::createNormalDataView() ptrToDataArray++; } - m_graph->seriesList().at(0)->dataProxy()->resetArray(m_dataArray); - m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshPoint); + m_normalSeries->dataProxy()->resetArray(dataArray); + m_normalSeries->setMesh(QAbstract3DSeries::MeshPoint); } void GalaxyData::createFilteredView() @@ -203,9 +207,10 @@ void GalaxyData::createFilteredView() nActiveCell++; } - m_dataArray->clear(); - m_dataArray->resize(nActiveCell); - QScatterDataItem *ptrToDataArray = &m_dataArray->first(); + + QScatterDataArray *dataArray = new QScatterDataArray; + dataArray->resize(nActiveCell); + QScatterDataItem *ptrToDataArray = &dataArray->first(); for (int y = 0; y < steps; y++) { for (int x = 0; x < steps; x++) { @@ -218,9 +223,9 @@ void GalaxyData::createFilteredView() } } - m_graph->seriesList().at(0)->dataProxy()->resetArray(m_dataArray); - m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshCube); - m_graph->seriesList().at(0)->setItemSize(0.1f); + m_filteredSeries->dataProxy()->resetArray(dataArray); + m_filteredSeries->setMesh(QAbstract3DSeries::MeshCube); + m_filteredSeries->setItemSize(0.1f); m_graph->axisY()->setRange(0.0f, float(max + 1)); @@ -297,24 +302,40 @@ void GalaxyData::setFilteredEnabled(bool enabled) if (enabled) { QLinearGradient gr(0, 0, 1, 100); gr.setColorAt(0.0, Qt::white); - gr.setColorAt(0.05, Qt::green); + gr.setColorAt(0.04, Qt::green); + gr.setColorAt(0.1, Qt::darkGreen); gr.setColorAt(1.0, Qt::red); - m_graph->seriesList().at(0)->setBaseGradient(gr); - m_graph->seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyleRangeGradient); + m_filteredSeries->setBaseGradient(gr); + m_filteredSeries->setColorStyle(Q3DTheme::ColorStyleRangeGradient); + + m_normalSeries->setVisible(false); createFilteredView(); + + m_filteredSeries->setVisible(true); } else { - m_dataArray->clear(); - m_dataArray->resize(numOfStars); - m_graph->seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyleUniform); + m_normalSeries->setColorStyle(Q3DTheme::ColorStyleUniform); m_graph->axisY()->setRange(-1.0f, 1.0f); - m_graph->seriesList().at(0)->setItemSize(0.0f); + m_normalSeries->setItemSize(0.0f); + + m_filteredSeries->setVisible(false); createNormalDataView(); + + m_normalSeries->setVisible(true); } } + +void GalaxyData::setStaticEnabled(bool enabled) +{ + if (enabled) + m_graph->setOptimizationHints(QAbstract3DGraph::OptimizationStatic); + else + m_graph->setOptimizationHints(QAbstract3DGraph::OptimizationDefault); +} + void GalaxyData::resetValues() { m_radiusGalaxySlider->setValue(15000); diff --git a/tests/galaxy/galaxydata.h b/tests/galaxy/galaxydata.h index 33c33778..298acbb1 100644 --- a/tests/galaxy/galaxydata.h +++ b/tests/galaxy/galaxydata.h @@ -51,6 +51,7 @@ public: void eccentricityOuterChanged(int value); void resetValues(); void setFilteredEnabled(bool enabled); + void setStaticEnabled(bool enabled); inline void setSliders(QSlider *rg, QSlider *rc, QSlider *ao, @@ -70,12 +71,13 @@ private: void checkMinMax(const Star &star); void createNormalDataView(); void createFilteredView(); - void createNormalSeries(); + void createSeries(); qreal value; private: Q3DScatter *m_graph; - QScatterDataArray *m_dataArray; + QScatter3DSeries *m_normalSeries; + QScatter3DSeries *m_filteredSeries; Star *m_pStars; qreal m_elEx1; // Excentricity of the innermost ellipse diff --git a/tests/galaxy/main.cpp b/tests/galaxy/main.cpp index e23741da..83e06cff 100644 --- a/tests/galaxy/main.cpp +++ b/tests/galaxy/main.cpp @@ -83,6 +83,10 @@ int main(int argc, char **argv) eccentricityOuterSlider->setValue(90); eccentricityOuterSlider->setEnabled(true); + QCheckBox *staticCheckBox = new QCheckBox(widget); + staticCheckBox->setText(QStringLiteral("Static")); + staticCheckBox->setChecked(false); + QPushButton *resetButton = new QPushButton(widget); resetButton->setText(QStringLiteral("Reset values")); @@ -102,6 +106,7 @@ int main(int argc, char **argv) vLayout->addWidget(eccentricityInnerSlider); vLayout->addWidget(new QLabel(QStringLiteral("Eccentricity outer"))); vLayout->addWidget(eccentricityOuterSlider); + vLayout->addWidget(staticCheckBox); vLayout->addWidget(resetButton); vLayout->addWidget(filteredCheckBox); vLayout->addWidget(fpsLabel); @@ -122,6 +127,8 @@ int main(int argc, char **argv) modifier, &GalaxyData::resetValues); QObject::connect(filteredCheckBox, &QCheckBox::stateChanged, modifier, &GalaxyData::setFilteredEnabled); + QObject::connect(staticCheckBox, &QCheckBox::stateChanged, + modifier, &GalaxyData::setStaticEnabled); modifier->setSliders(radiusGalaxySlider, radiusCoreSlider, angleOffsetSlider, eccentricityInnerSlider, eccentricityOuterSlider); -- cgit v1.2.3