From b2e4f1485df801a9e7f3812a66e4e7fc6c578980 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 3 Mar 2014 13:49:27 +0200 Subject: Enable querying shadow support from graphs Also some example tweaking. Change-Id: If69e9d3617afc37b88fed4fd0e02ae19f0af7f78 Reviewed-by: Mika Salmela --- .../doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc | 6 ++++++ src/datavisualization/engine/abstract3dcontroller.cpp | 9 +++++++++ src/datavisualization/engine/abstract3dcontroller_p.h | 1 + src/datavisualization/engine/qabstract3dgraph.cpp | 9 +++++++++ src/datavisualization/engine/qabstract3dgraph.h | 1 + src/datavisualizationqml2/abstractdeclarative.cpp | 5 +++++ src/datavisualizationqml2/abstractdeclarative_p.h | 4 ++++ 7 files changed, 35 insertions(+) (limited to 'src') diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc index 5b251768..891cc5c1 100644 --- a/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc +++ b/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc @@ -44,6 +44,12 @@ Shadow quality. */ +/*! + \qmlproperty bool AbstractGraph3D::shadowsSupported + This read-only property indicates if shadows are supported with the + current configuration or not. OpenGL ES2 configurations do not support shadows. + */ + /*! \qmlproperty Scene3D AbstractGraph3D::scene Read only Q3DScene that can be used to access e.g. camera object. diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp index acb63f0a..ec18a850 100644 --- a/src/datavisualization/engine/abstract3dcontroller.cpp +++ b/src/datavisualization/engine/abstract3dcontroller.cpp @@ -730,6 +730,15 @@ QAbstract3DGraph::ShadowQuality Abstract3DController::shadowQuality() const return m_shadowQuality; } +bool Abstract3DController::shadowsSupported() const +{ +#if defined(QT_OPENGL_ES_2) + return false; +#else + return true; +#endif +} + bool Abstract3DController::isSlicingActive() const { return m_scene->isSlicingActive(); diff --git a/src/datavisualization/engine/abstract3dcontroller_p.h b/src/datavisualization/engine/abstract3dcontroller_p.h index 5bae17d6..06be450e 100644 --- a/src/datavisualization/engine/abstract3dcontroller_p.h +++ b/src/datavisualization/engine/abstract3dcontroller_p.h @@ -202,6 +202,7 @@ public: virtual void setShadowQuality(QAbstract3DGraph::ShadowQuality quality); virtual QAbstract3DGraph::ShadowQuality shadowQuality() const; + virtual bool shadowsSupported() const; bool isSlicingActive() const; void setSlicingActive(bool isSlicing); diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp index cce2c235..bde5b585 100644 --- a/src/datavisualization/engine/qabstract3dgraph.cpp +++ b/src/datavisualization/engine/qabstract3dgraph.cpp @@ -330,6 +330,15 @@ QAbstract3DGraph::ShadowQuality QAbstract3DGraph::shadowQuality() const return d_ptr->m_visualController->shadowQuality(); } +/*! + * \return true if shadows are supported with the current configuration. + * OpenGL ES2 configurations do not support shadows. + */ +bool QAbstract3DGraph::shadowsSupported() const +{ + return d_ptr->m_visualController->shadowsSupported(); +} + /*! * \property QAbstract3DGraph::scene * diff --git a/src/datavisualization/engine/qabstract3dgraph.h b/src/datavisualization/engine/qabstract3dgraph.h index adf67912..f11bbd90 100644 --- a/src/datavisualization/engine/qabstract3dgraph.h +++ b/src/datavisualization/engine/qabstract3dgraph.h @@ -89,6 +89,7 @@ public: void setShadowQuality(ShadowQuality quality); ShadowQuality shadowQuality() const; + virtual bool shadowsSupported() const; Q3DScene *scene() const; diff --git a/src/datavisualizationqml2/abstractdeclarative.cpp b/src/datavisualizationqml2/abstractdeclarative.cpp index de5aa9aa..d07ea540 100644 --- a/src/datavisualizationqml2/abstractdeclarative.cpp +++ b/src/datavisualizationqml2/abstractdeclarative.cpp @@ -202,6 +202,11 @@ AbstractDeclarative::ShadowQuality AbstractDeclarative::shadowQuality() const return ShadowQuality(m_controller->shadowQuality()); } +bool AbstractDeclarative::shadowsSupported() const +{ + return m_controller->shadowsSupported(); +} + void AbstractDeclarative::setSharedController(Abstract3DController *controller) { Q_ASSERT(controller); diff --git a/src/datavisualizationqml2/abstractdeclarative_p.h b/src/datavisualizationqml2/abstractdeclarative_p.h index cfe62e3c..428ca0b5 100644 --- a/src/datavisualizationqml2/abstractdeclarative_p.h +++ b/src/datavisualizationqml2/abstractdeclarative_p.h @@ -60,6 +60,7 @@ class AbstractDeclarative : public QQuickItem Q_FLAGS(SelectionFlag SelectionFlags) Q_PROPERTY(SelectionFlags selectionMode READ selectionMode WRITE setSelectionMode NOTIFY selectionModeChanged) Q_PROPERTY(ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality NOTIFY shadowQualityChanged) + Q_PROPERTY(bool shadowsSupported READ shadowsSupported NOTIFY shadowsSupportedChanged) Q_PROPERTY(int msaaSamples READ msaaSamples WRITE setMsaaSamples NOTIFY msaaSamplesChanged) Q_PROPERTY(Declarative3DScene* scene READ scene NOTIFY sceneChanged) Q_PROPERTY(QAbstract3DInputHandler* inputHandler READ inputHandler WRITE setInputHandler NOTIFY inputHandlerChanged) @@ -110,6 +111,8 @@ public: virtual void setShadowQuality(ShadowQuality quality); virtual AbstractDeclarative::ShadowQuality shadowQuality() const; + virtual bool shadowsSupported() const; + virtual void setMsaaSamples(int samples); virtual int msaaSamples() const; @@ -158,6 +161,7 @@ protected: signals: void selectionModeChanged(SelectionFlags mode); void shadowQualityChanged(ShadowQuality quality); + void shadowsSupportedChanged(bool supported); void msaaSamplesChanged(int samples); void sceneChanged(Q3DScene *scene); void inputHandlerChanged(QAbstract3DInputHandler *inputHandler); -- cgit v1.2.3