summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@theqtcompany.com>2014-12-04 11:35:29 +0200
committerMika Salmela <mika.salmela@theqtcompany.com>2014-12-04 11:36:19 +0200
commit30f86f1037e4279df2608be003d88cfcf660dde3 (patch)
tree74cca64d5f7dcbec197e198f34e62dc819d46a9e /tests
parentdeaab27525898386ff9bf655e58810e744b518ee (diff)
Galaxy improvement.
Change-Id: I87ed53c41929e13e8d77236726b30dc5d89df077 Reviewed-by: Mika Salmela <mika.salmela@theqtcompany.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/galaxy/galaxydata.cpp89
-rw-r--r--tests/galaxy/galaxydata.h6
-rw-r--r--tests/galaxy/main.cpp4
3 files changed, 48 insertions, 51 deletions
diff --git a/tests/galaxy/galaxydata.cpp b/tests/galaxy/galaxydata.cpp
index 43dbd9e8..9cd3202c 100644
--- a/tests/galaxy/galaxydata.cpp
+++ b/tests/galaxy/galaxydata.cpp
@@ -21,7 +21,6 @@
* Thanks to Ingo Berg, great work.
* Licensed under a Creative Commons Attribution 3.0 License
* http://creativecommons.org/licenses/by/3.0/
- *
*/
#include "galaxydata.h"
@@ -57,8 +56,7 @@ GalaxyData::GalaxyData(Q3DScatter *scatter,
m_elEx1(ex1),
m_elEx2(ex2),
m_radFarField(m_radGalaxy * 2),
- m_filtered(false),
- m_tableSize(0)
+ m_filtered(false)
{
m_graph->activeTheme()->setType(Q3DTheme::ThemeEbony);
m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualitySoftLow);
@@ -67,6 +65,10 @@ GalaxyData::GalaxyData(Q3DScatter *scatter,
//m_graph->axisY()->setRange(m_minY, m_minY + m_rangeY);
m_graph->axisZ()->setRange(-25000.0f, 25000.0f);
+ QObject::connect(m_graph, &QAbstract3DGraph::currentFpsChanged,
+ this, &GalaxyData::handleFpsChange);
+ m_graph->setMeasureFps(true);
+
createNormalSeries();
m_dataArray = new QScatterDataArray;
@@ -172,6 +174,7 @@ void GalaxyData::createNormalDataView()
}
m_graph->seriesList().at(0)->dataProxy()->resetArray(m_dataArray);
+ m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshPoint);
}
void GalaxyData::createFilteredView()
@@ -193,59 +196,35 @@ void GalaxyData::createFilteredView()
max = table[y * steps + x];
}
- QLinearGradient gr(0, 0, 1, 100);
- gr.setColorAt(0.0, Qt::white);
- gr.setColorAt(0.05, Qt::green);
-// gr.setColorAt(0.10, Qt::red);
-// gr.setColorAt(0.15, Qt::darkGreen);
- gr.setColorAt(1.0, Qt::red);
- QImage image(QSize(1, 100), QImage::Format_RGB32);
- QPainter pmp(&image);
- pmp.setBrush(QBrush(gr));
- pmp.setPen(Qt::NoPen);
- pmp.drawRect(0, 0, 1, 100);
-
- if (tableSize != m_tableSize) {
- createFilteredSeries(tableSize);
- m_tableSize = tableSize;
+ // Count how many cells have data
+ int nActiveCell = 0;
+ for (int i = 0; i < tableSize; i++) {
+ if (table[i])
+ nActiveCell++;
}
+ m_dataArray->clear();
+ m_dataArray->resize(nActiveCell);
+ QScatterDataItem *ptrToDataArray = &m_dataArray->first();
+
for (int y = 0; y < steps; y++) {
for (int x = 0; x < steps; x++) {
if (table[y * steps + x]) {
- QScatterDataArray *dataArray = new QScatterDataArray;
- dataArray->resize(1);
- QScatterDataItem *ptrToDataArray = &dataArray->first();
ptrToDataArray->setPosition(QVector3D(float(x) * 1000.0f - add + 500.0f,
- (float(table[y * steps + x]) / float(max)) * 2.0f - 1.0f,
+ float(table[y * steps + x]),
float(y) * 1000.0f - add + 500.0f));
-
- QScatter3DSeries *series = m_graph->seriesList().at(y * steps + x);
- series->dataProxy()->resetArray(dataArray);
- int pos = (float(table[y * steps + x]) / float(max)) * 100;
- pos = qMin(pos, 99);
- QRgb color = image.pixel(0, pos);
- series->setBaseColor(QColor(color));
- series->setItemSize(0.1f);
+ ptrToDataArray++;
}
}
}
- qDebug() << "max = " << max;
-}
+ 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);
-void GalaxyData::createFilteredSeries(int tableSize)
-{
- int size = m_graph->seriesList().size();
- for (int i = 0; i < size; i++)
- m_graph->removeSeries(m_graph->seriesList().at(0));
+ m_graph->axisY()->setRange(0.0f, float(max + 1));
- for (int i = 0; i < tableSize; i++) {
- QScatterDataProxy *proxy = new QScatterDataProxy;
- QScatter3DSeries *series = new QScatter3DSeries(proxy);
- series->setMesh(QAbstract3DSeries::MeshCube);
- m_graph->addSeries(series);
- }
+ qDebug() << "max = " << max;
}
void GalaxyData::checkMinMax(const Star &star)
@@ -316,16 +295,22 @@ void GalaxyData::setFilteredEnabled(bool enabled)
{
m_filtered = enabled;
if (enabled) {
- m_graph->removeSeries(m_graph->seriesList().at(0));
+ QLinearGradient gr(0, 0, 1, 100);
+ gr.setColorAt(0.0, Qt::white);
+ gr.setColorAt(0.05, Qt::green);
+ gr.setColorAt(1.0, Qt::red);
+
+ m_graph->seriesList().at(0)->setBaseGradient(gr);
+ m_graph->seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
createFilteredView();
} else {
- int size = m_graph->seriesList().size();
- for (int i = 0; i < size; i++)
- m_graph->removeSeries(m_graph->seriesList().at(0));
- m_tableSize = 0;
+ m_dataArray->clear();
+ m_dataArray->resize(numOfStars);
+ m_graph->seriesList().at(0)->setColorStyle(Q3DTheme::ColorStyleUniform);
+ m_graph->axisY()->setRange(-1.0f, 1.0f);
+ m_graph->seriesList().at(0)->setItemSize(0.0f);
- createNormalSeries();
createNormalDataView();
}
}
@@ -338,3 +323,9 @@ void GalaxyData::resetValues()
m_eccentricityInnerSlider->setValue(90);
m_eccentricityOuterSlider->setValue(90);
}
+
+void GalaxyData::handleFpsChange(qreal fps)
+{
+ static const QString fpsPrefix(QStringLiteral("FPS: "));
+ m_fpsLabel->setText(fpsPrefix + QString::number(qRound(fps)));
+}
diff --git a/tests/galaxy/galaxydata.h b/tests/galaxy/galaxydata.h
index 88a9025a..33c33778 100644
--- a/tests/galaxy/galaxydata.h
+++ b/tests/galaxy/galaxydata.h
@@ -25,6 +25,7 @@
#include <QtDataVisualization/qabstract3dseries.h>
#include <QtGui/QFont>
#include <QtWidgets/QSlider>
+#include <QtWidgets/QLabel>
using namespace QtDataVisualization;
@@ -61,6 +62,8 @@ public:
m_eccentricityInnerSlider = ei;
m_eccentricityOuterSlider = eo;
}
+ void setFpsLabel(QLabel *fpsLabel) { m_fpsLabel = fpsLabel; }
+ void handleFpsChange(qreal fps);
private:
void createGalaxy();
@@ -68,7 +71,6 @@ private:
void createNormalDataView();
void createFilteredView();
void createNormalSeries();
- void createFilteredSeries(int tableSize);
qreal value;
private:
@@ -90,6 +92,7 @@ private:
QSlider *m_angleOffsetSlider;
QSlider *m_eccentricityInnerSlider;
QSlider *m_eccentricityOuterSlider;
+ QLabel *m_fpsLabel;
qreal m_minx = 9999.9;
qreal m_maxx = -9999.0;
@@ -97,7 +100,6 @@ private:
qreal m_maxy = -9999.0;
int m_range;
bool m_filtered;
- int m_tableSize;
};
#endif
diff --git a/tests/galaxy/main.cpp b/tests/galaxy/main.cpp
index 1a6ee7b2..e23741da 100644
--- a/tests/galaxy/main.cpp
+++ b/tests/galaxy/main.cpp
@@ -90,6 +90,8 @@ int main(int argc, char **argv)
filteredCheckBox->setText(QStringLiteral("Filtered"));
filteredCheckBox->setChecked(false);
+ QLabel *fpsLabel = new QLabel(QStringLiteral(""));
+
vLayout->addWidget(new QLabel(QStringLiteral("Galaxy radius")));
vLayout->addWidget(radiusGalaxySlider);
vLayout->addWidget(new QLabel(QStringLiteral("Core radius")));
@@ -102,6 +104,7 @@ int main(int argc, char **argv)
vLayout->addWidget(eccentricityOuterSlider);
vLayout->addWidget(resetButton);
vLayout->addWidget(filteredCheckBox);
+ vLayout->addWidget(fpsLabel);
GalaxyData *modifier = new GalaxyData(graph);
@@ -122,6 +125,7 @@ int main(int argc, char **argv)
modifier->setSliders(radiusGalaxySlider, radiusCoreSlider, angleOffsetSlider,
eccentricityInnerSlider, eccentricityOuterSlider);
+ modifier->setFpsLabel(fpsLabel);
widget->show();
return app.exec();