summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-03-03 13:49:27 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-03-03 14:37:14 +0200
commitb2e4f1485df801a9e7f3812a66e4e7fc6c578980 (patch)
tree4f47c7a24a3a0896136aff477144aa6c9d87d15c
parent7206dc36f1be77515cf6759795b265c986b2e20b (diff)
Enable querying shadow support from graphs
Also some example tweaking. Change-Id: If69e9d3617afc37b88fed4fd0e02ae19f0af7f78 Reviewed-by: Mika Salmela <mika.salmela@digia.com>
-rw-r--r--examples/datavisualization/qmlbars/qml/qmlbars/main.qml3
-rw-r--r--examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml3
-rw-r--r--examples/datavisualization/qmllegend/qml/qmllegend/main.qml21
-rw-r--r--examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/main.qml2
-rw-r--r--examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml3
-rw-r--r--examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml7
-rw-r--r--examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml3
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc6
-rw-r--r--src/datavisualization/engine/abstract3dcontroller.cpp9
-rw-r--r--src/datavisualization/engine/abstract3dcontroller_p.h1
-rw-r--r--src/datavisualization/engine/qabstract3dgraph.cpp9
-rw-r--r--src/datavisualization/engine/qabstract3dgraph.h1
-rw-r--r--src/datavisualizationqml2/abstractdeclarative.cpp5
-rw-r--r--src/datavisualizationqml2/abstractdeclarative_p.h4
14 files changed, 57 insertions, 20 deletions
diff --git a/examples/datavisualization/qmlbars/qml/qmlbars/main.qml b/examples/datavisualization/qmlbars/qml/qmlbars/main.qml
index 3711a504..0df8d8ae 100644
--- a/examples/datavisualization/qmlbars/qml/qmlbars/main.qml
+++ b/examples/datavisualization/qmlbars/qml/qmlbars/main.qml
@@ -210,8 +210,9 @@ Rectangle {
id: shadowToggle
Layout.fillWidth: true
Layout.fillHeight: true
- text: "Hide Shadows"
+ text: barGraph.shadowsSupported ? "Hide Shadows" : "Shadows not supported"
clip: true
+ enabled: barGraph.shadowsSupported
onClicked: {
if (barGraph.shadowQuality == AbstractGraph3D.ShadowQualityNone) {
barGraph.shadowQuality = AbstractGraph3D.ShadowQualityMedium;
diff --git a/examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml b/examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml
index e81dd749..bdabb420 100644
--- a/examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml
+++ b/examples/datavisualization/qmlcustominput/qml/qmlcustominput/main.qml
@@ -190,7 +190,8 @@ Rectangle {
id: shadowToggle
Layout.fillHeight: true
Layout.minimumWidth: parent.width / 3 // 3 buttons divided equally in the layout
- text: "Hide Shadows"
+ text: scatterGraph.shadowsSupported ? "Hide Shadows" : "Shadows not supported"
+ enabled: scatterGraph.shadowsSupported
onClicked: {
if (scatterGraph.shadowQuality === AbstractGraph3D.ShadowQualityNone) {
diff --git a/examples/datavisualization/qmllegend/qml/qmllegend/main.qml b/examples/datavisualization/qmllegend/qml/qmllegend/main.qml
index 6999a67b..f7e2d803 100644
--- a/examples/datavisualization/qmllegend/qml/qmllegend/main.qml
+++ b/examples/datavisualization/qmllegend/qml/qmllegend/main.qml
@@ -45,10 +45,7 @@ Rectangle {
Item {
id: dataView
- anchors.top: buttonLayout.bottom
- anchors.bottom: parent.bottom
- anchors.left: parent.left
- anchors.right: parent.right
+ anchors.fill: parent
Bars3D {
id: barGraph
@@ -99,12 +96,18 @@ Rectangle {
Rectangle {
property int legendLocation: 3
+ // Make the height and width fractional of main view height and width.
+ // Reverse the relation if screen is in portrait - this makes legend look the same
+ // if the orientation is rotated.
+ property int fractionalHeight: mainView.width > mainView.height ? mainView.height / 5 : mainView.width / 5
+ property int fractionalWidth: mainView.width > mainView.height ? mainView.width / 5 : mainView.height / 5
id: legendPanel
- width: 200
- height: 100
+ width: fractionalWidth > 150 ? fractionalWidth : 150
+ // Adjust legendpanel height to avoid gaps between layouted items.
+ height: fractionalHeight > 99 ? fractionalHeight - fractionalHeight % 3 : 99
border.color: barGraph.theme.labelTextColor
- border.width: 2
+ border.width: 3
color: "#00000000" // Transparent
//! [0]
@@ -152,7 +155,7 @@ Rectangle {
when: legendPanel.legendLocation === 1
AnchorChanges {
target: legendPanel
- anchors.top: dataView.top
+ anchors.top: buttonLayout.bottom
anchors.bottom: undefined
anchors.left: dataView.left
anchors.right: undefined
@@ -163,7 +166,7 @@ Rectangle {
when: legendPanel.legendLocation === 2
AnchorChanges {
target: legendPanel
- anchors.top: dataView.top
+ anchors.top: buttonLayout.bottom
anchors.bottom: undefined
anchors.left: undefined
anchors.right: dataView.right
diff --git a/examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/main.qml b/examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/main.qml
index eeaeab40..81884154 100644
--- a/examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/main.qml
+++ b/examples/datavisualization/qmloscilloscope/qml/qmloscilloscope/main.qml
@@ -239,7 +239,7 @@ Item {
Layout.fillHeight: true
Layout.fillWidth: true
- text: "Show Flat"
+ text: surfaceSeries.flatShadingSupported ? "Show Flat" : "Flat not supported"
enabled: surfaceSeries.flatShadingSupported
onClicked: {
diff --git a/examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml b/examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml
index 69cb2834..6664dcfd 100644
--- a/examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml
+++ b/examples/datavisualization/qmlscatter/qml/qmlscatter/main.qml
@@ -139,7 +139,8 @@ Rectangle {
id: shadowToggle
Layout.fillHeight: true
Layout.fillWidth: true
- text: "Hide Shadows"
+ text: scatterGraph.shadowsSupported ? "Hide Shadows" : "Shadows not supported"
+ enabled: scatterGraph.shadowsSupported
onClicked: {
if (scatterGraph.shadowQuality === AbstractGraph3D.ShadowQualityNone) {
scatterGraph.shadowQuality = AbstractGraph3D.ShadowQualitySoftLow;
diff --git a/examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml b/examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml
index f11d15f3..6eef6cc4 100644
--- a/examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml
+++ b/examples/datavisualization/qmlsurface/qml/qmlsurface/main.qml
@@ -93,11 +93,6 @@ Rectangle {
yPosRole: "height"
}
//! [6]
-
- onFlatShadingSupportedChanged: {
- flatShadingToggle.text = "Flat not supported"
- }
-
onDrawModeChanged: checkState()
}
//! [4]
@@ -169,7 +164,7 @@ Rectangle {
id: flatShadingToggle
Layout.fillWidth: true
Layout.fillHeight: true
- text: "Show Flat"
+ text: surfaceSeries.flatShadingSupported ? "Show Flat" : "Flat not supported"
enabled: surfaceSeries.flatShadingSupported
//! [2]
onClicked: {
diff --git a/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml b/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml
index 0be991bc..1c15d919 100644
--- a/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml
+++ b/examples/datavisualization/qmlsurfacelayers/qml/qmlsurfacelayers/main.qml
@@ -217,9 +217,10 @@ Item {
NewButton {
id: shadowButton
- text: "Show Shadows"
Layout.fillWidth: true
Layout.minimumHeight: 40
+ text: surfaceLayers.shadowsSupported ? "Show Shadows" : "Shadows not supported"
+ enabled: surfaceLayers.shadowsSupported
onClicked: {
if (surfaceLayers.shadowQuality === AbstractGraph3D.ShadowQualityNone) {
surfaceLayers.shadowQuality = AbstractGraph3D.ShadowQualityLow
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
@@ -45,6 +45,12 @@
*/
/*!
+ \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
@@ -331,6 +331,15 @@ QAbstract3DGraph::ShadowQuality QAbstract3DGraph::shadowQuality() const
}
/*!
+ * \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
*
* This property contains the read only Q3DScene that can be used to access, for example, a camera object.
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);