summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-12-03 12:11:38 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-12-03 12:21:13 +0200
commitf44e0e8e858c8687e40eba679f865f142b73be01 (patch)
tree0735d194f0b9702c64a06d6369f9d2328d4fb4d3
parentf61a34e357a3fdbc78c344ee6134fc87113fb33a (diff)
Move series specific visual elements to series, part 3
Surface pointer to use series mesh Task-number: QTRD-2557 Change-Id: Ibf6c1d91c8bce22b4f9c71b0fbf4d62ad8cc09da Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
-rw-r--r--src/datavisualization/engine/selectionpointer.cpp26
-rw-r--r--src/datavisualization/engine/selectionpointer_p.h9
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp2
-rw-r--r--tests/surfacetest/graphmodifier.cpp50
-rw-r--r--tests/surfacetest/graphmodifier.h1
-rw-r--r--tests/surfacetest/main.cpp6
6 files changed, 69 insertions, 25 deletions
diff --git a/src/datavisualization/engine/selectionpointer.cpp b/src/datavisualization/engine/selectionpointer.cpp
index 25c59026..c37e9886 100644
--- a/src/datavisualization/engine/selectionpointer.cpp
+++ b/src/datavisualization/engine/selectionpointer.cpp
@@ -43,7 +43,6 @@ SelectionPointer::SelectionPointer(Drawer *drawer)
m_labelObj(0),
m_pointObj(0),
m_textureHelper(0),
- m_isInitialized(false),
m_cachedTheme(drawer->theme()),
m_labelBackground(false),
m_drawer(drawer),
@@ -60,27 +59,18 @@ SelectionPointer::~SelectionPointer()
delete m_labelShader;
delete m_pointShader;
delete m_labelObj;
- delete m_pointObj;
delete m_textureHelper;
}
void SelectionPointer::initializeOpenGL()
{
- if (m_isInitialized)
- return;
-
initializeOpenGLFunctions();
m_textureHelper = new TextureHelper();
m_drawer->initializeOpenGL();
initShaders();
-
loadLabelMesh();
- loadPointMesh();
-
- // Set initialized -flag
- m_isInitialized = true;
}
void SelectionPointer::updateScene(Q3DScene *scene)
@@ -213,13 +203,17 @@ void SelectionPointer::updateSliceData(bool sliceActivated, GLfloat autoScaleAdj
m_autoScaleAdjustment = autoScaleAdjustment;
}
-void SelectionPointer::setLabel(QString label)
+void SelectionPointer::setLabel(const QString &label)
{
m_label = label;
-
m_drawer->generateLabelItem(m_labelItem, m_label);
}
+void SelectionPointer::setPointerObject(ObjectHelper *object)
+{
+ m_pointObj = object;
+}
+
void SelectionPointer::handleDrawerChange()
{
m_cachedTheme = m_drawer->theme();
@@ -262,12 +256,4 @@ void SelectionPointer::loadLabelMesh()
m_labelObj->load();
}
-void SelectionPointer::loadPointMesh()
-{
- if (m_pointObj)
- delete m_pointObj;
- m_pointObj = new ObjectHelper(QStringLiteral(":/defaultMeshes/sphereSmooth"));
- m_pointObj->load();
-}
-
QT_DATAVISUALIZATION_END_NAMESPACE
diff --git a/src/datavisualization/engine/selectionpointer_p.h b/src/datavisualization/engine/selectionpointer_p.h
index d3d46e2c..46903fd2 100644
--- a/src/datavisualization/engine/selectionpointer_p.h
+++ b/src/datavisualization/engine/selectionpointer_p.h
@@ -59,27 +59,26 @@ public:
explicit SelectionPointer(Drawer *drawer);
~SelectionPointer();
- void initializeOpenGL();
void render(GLuint defaultFboHandle = 0);
void setPosition(QVector3D position);
- void setLabel(QString label);
+ void setLabel(const QString &label);
+ void setPointerObject(ObjectHelper *object);
void handleDrawerChange();
void updateBoundingRect(QRect rect);
void updateScene(Q3DScene *scene);
void updateSliceData(bool sliceActivated, GLfloat autoScaleAdjustment);
private:
+ void initializeOpenGL();
void initShaders();
void loadLabelMesh();
- void loadPointMesh();
private:
ShaderHelper *m_labelShader;
ShaderHelper *m_pointShader;
ObjectHelper *m_labelObj;
- ObjectHelper *m_pointObj;
+ ObjectHelper *m_pointObj; // Not owned
TextureHelper *m_textureHelper;
- bool m_isInitialized;
Q3DTheme *m_cachedTheme;
bool m_labelBackground;
LabelItem m_labelItem;
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index bb74e084..4942c4ae 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -1912,6 +1912,8 @@ void Surface3DRenderer::surfacePointSelected(const QPoint &point)
m_selectionPointer->setPosition(pos);
m_selectionPointer->setLabel(createSelectionLabel(value, column, row));
+ // TODO: Get pointer object from correct series once multiseries support implemented
+ m_selectionPointer->setPointerObject(m_visibleSeriesList.at(0).object());
m_selectionPointer->updateScene(m_cachedScene);
}
diff --git a/tests/surfacetest/graphmodifier.cpp b/tests/surfacetest/graphmodifier.cpp
index 68f83f01..666f4741 100644
--- a/tests/surfacetest/graphmodifier.cpp
+++ b/tests/surfacetest/graphmodifier.cpp
@@ -457,6 +457,56 @@ void GraphModifier::changeRows()
}
}
+void GraphModifier::changeMesh()
+{
+ static int model = 0;
+ switch (model) {
+ case 0:
+ m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshCylinder);
+ m_graph->seriesList().at(0)->setMeshSmooth(false);
+ break;
+ case 1:
+ m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshCylinder);
+ m_graph->seriesList().at(0)->setMeshSmooth(true);
+ break;
+ case 2:
+ m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshCone);
+ m_graph->seriesList().at(0)->setMeshSmooth(false);
+ break;
+ case 3:
+ m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshCone);
+ m_graph->seriesList().at(0)->setMeshSmooth(true);
+ break;
+ case 4:
+ m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshBar);
+ m_graph->seriesList().at(0)->setMeshSmooth(false);
+ break;
+ case 5:
+ m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshBar);
+ m_graph->seriesList().at(0)->setMeshSmooth(true);
+ break;
+ case 6:
+ m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshPyramid);
+ m_graph->seriesList().at(0)->setMeshSmooth(false);
+ break;
+ case 7:
+ m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshPyramid);
+ m_graph->seriesList().at(0)->setMeshSmooth(true);
+ break;
+ case 8:
+ m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshBevelBar);
+ m_graph->seriesList().at(0)->setMeshSmooth(false);
+ break;
+ case 9:
+ m_graph->seriesList().at(0)->setMesh(QAbstract3DSeries::MeshBevelBar);
+ m_graph->seriesList().at(0)->setMeshSmooth(true);
+ break;
+ }
+ model++;
+ if (model > 9)
+ model = 0;
+}
+
void GraphModifier::updateSamples()
{
switch (m_activeSample) {
diff --git a/tests/surfacetest/graphmodifier.h b/tests/surfacetest/graphmodifier.h
index cc71f7d5..d3e5ce68 100644
--- a/tests/surfacetest/graphmodifier.h
+++ b/tests/surfacetest/graphmodifier.h
@@ -69,6 +69,7 @@ public:
void selectedPointChanged(const QPoint &point);
void changeRow();
void changeRows();
+ void changeMesh();
public slots:
void changeShadowQuality(int quality);
diff --git a/tests/surfacetest/main.cpp b/tests/surfacetest/main.cpp
index 621557fb..aac4b8e2 100644
--- a/tests/surfacetest/main.cpp
+++ b/tests/surfacetest/main.cpp
@@ -151,6 +151,9 @@ int main(int argc, char *argv[])
QPushButton *labelButton = new QPushButton(widget);
labelButton->setText(QStringLiteral("Change label style"));
+ QPushButton *meshButton = new QPushButton(widget);
+ meshButton->setText(QStringLiteral("Change pointer mesh"));
+
QComboBox *themeList = new QComboBox(widget);
themeList->addItem(QStringLiteral("Qt"));
themeList->addItem(QStringLiteral("Primary Colors"));
@@ -235,6 +238,7 @@ int main(int argc, char *argv[])
vLayout->addWidget(new QLabel(QStringLiteral("Change font")));
vLayout->addWidget(fontList);
vLayout->addWidget(labelButton);
+ vLayout->addWidget(meshButton);
vLayout->addWidget(new QLabel(QStringLiteral("Change theme")));
vLayout->addWidget(themeList);
vLayout->addWidget(new QLabel(QStringLiteral("Adjust shadow quality")));
@@ -284,6 +288,8 @@ int main(int argc, char *argv[])
modifier, &GraphModifier::changeFont);
QObject::connect(labelButton, &QPushButton::clicked,
modifier, &GraphModifier::changeStyle);
+ QObject::connect(meshButton, &QPushButton::clicked,
+ modifier, &GraphModifier::changeMesh);
QObject::connect(themeList, SIGNAL(currentIndexChanged(int)),
modifier, SLOT(changeTheme(int)));
QObject::connect(shadowQuality, SIGNAL(currentIndexChanged(int)),