diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-12-03 12:11:38 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-12-03 12:21:13 +0200 |
commit | f44e0e8e858c8687e40eba679f865f142b73be01 (patch) | |
tree | 0735d194f0b9702c64a06d6369f9d2328d4fb4d3 | |
parent | f61a34e357a3fdbc78c344ee6134fc87113fb33a (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.cpp | 26 | ||||
-rw-r--r-- | src/datavisualization/engine/selectionpointer_p.h | 9 | ||||
-rw-r--r-- | src/datavisualization/engine/surface3drenderer.cpp | 2 | ||||
-rw-r--r-- | tests/surfacetest/graphmodifier.cpp | 50 | ||||
-rw-r--r-- | tests/surfacetest/graphmodifier.h | 1 | ||||
-rw-r--r-- | tests/surfacetest/main.cpp | 6 |
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)), |