summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/qmlsurface/qml/qmlsurface/main.qml3
-rw-r--r--examples/surface/surfacegraph.cpp4
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp44
3 files changed, 42 insertions, 9 deletions
diff --git a/examples/qmlsurface/qml/qmlsurface/main.qml b/examples/qmlsurface/qml/qmlsurface/main.qml
index aaae9a58..1fcedeea 100644
--- a/examples/qmlsurface/qml/qmlsurface/main.qml
+++ b/examples/qmlsurface/qml/qmlsurface/main.qml
@@ -75,6 +75,9 @@ Item {
axisY.segmentCount: 5
axisY.subSegmentCount: 2
axisY.labelFormat: "%i"
+ axisY.title: "Height"
+ axisX.title: "Latitude"
+ axisZ.title: "Longitude"
//! [5]
Surface3DSeries {
diff --git a/examples/surface/surfacegraph.cpp b/examples/surface/surfacegraph.cpp
index 5dd64c1f..d7524fbc 100644
--- a/examples/surface/surfacegraph.cpp
+++ b/examples/surface/surfacegraph.cpp
@@ -136,6 +136,10 @@ void SurfaceGraph::enableHeightMapModel(bool enable)
m_graph->axisY()->setAutoAdjustRange(true);
m_graph->axisZ()->setRange(18.0f, 24.0f);
+ m_graph->axisX()->setTitle(QStringLiteral("Latitude"));
+ m_graph->axisY()->setTitle(QStringLiteral("Height"));
+ m_graph->axisZ()->setTitle(QStringLiteral("Longitude"));
+
m_graph->removeSeries(m_sqrtSinSeries);
m_graph->addSeries(m_heightMapSeries);
//! [4]
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index 5f773fe2..e4141010 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -613,6 +613,8 @@ void Surface3DRenderer::drawSlicedScene()
QMatrix4x4 projectionViewMatrix = projectionMatrix * viewMatrix;
+ const Q3DCamera *activeCamera = m_cachedScene->activeCamera();
+
bool rowMode = m_cachedSelectionMode.testFlag(QAbstract3DGraph::SelectionRow);
GLfloat scaleX = 0.0f;
@@ -780,7 +782,7 @@ void Surface3DRenderer::drawSlicedScene()
}
}
- // Draw axis labels
+ // Draw labels
m_labelShader->bind();
glEnable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
@@ -805,7 +807,7 @@ void Surface3DRenderer::drawSlicedScene()
m_dummyRenderItem.setTranslation(labelTrans);
m_drawer->drawLabel(m_dummyRenderItem, axisLabelItem, viewMatrix, projectionMatrix,
positionComp, rotation, 0, m_cachedSelectionMode, m_labelShader,
- m_labelObj, m_cachedScene->activeCamera(),
+ m_labelObj, activeCamera,
true, true, Drawer::LabelMid, Qt::AlignRight, true);
}
labelNbr++;
@@ -846,13 +848,35 @@ void Surface3DRenderer::drawSlicedScene()
m_drawer->drawLabel(m_dummyRenderItem, *axisLabelItem, viewMatrix, projectionMatrix,
positionComp, rotation, 0, QAbstract3DGraph::SelectionRow,
- m_labelShader, m_labelObj, m_cachedScene->activeCamera(),
+ m_labelShader, m_labelObj, activeCamera,
false, false, Drawer::LabelBelow, Qt::AlignBottom, true);
}
labelNbr++;
labelPos += posStep;
}
+ // Draw labels for axes
+ AbstractRenderItem *dummyItem(0);
+ positionComp.setY(m_autoScaleAdjustment);
+ if (rowMode) {
+ m_drawer->drawLabel(*dummyItem, m_axisCacheX.titleItem(), viewMatrix, projectionMatrix,
+ positionComp, zeroVector, 0, m_cachedSelectionMode, m_labelShader,
+ m_labelObj, activeCamera, false, false, Drawer::LabelBottom,
+ Qt::AlignCenter, true);
+ } else {
+ m_drawer->drawLabel(*dummyItem, m_axisCacheZ.titleItem(), viewMatrix, projectionMatrix,
+ positionComp, zeroVector, 0, m_cachedSelectionMode, m_labelShader,
+ m_labelObj, activeCamera, false, false, Drawer::LabelBottom,
+ Qt::AlignCenter, true);
+ }
+ // Y-axis label
+ labelTrans = QVector3D(-scaleXBackground - labelMargin, 0.0f, 0.0f);
+ m_dummyRenderItem.setTranslation(labelTrans);
+ m_drawer->drawLabel(m_dummyRenderItem, m_axisCacheY.titleItem(), viewMatrix,
+ projectionMatrix, zeroVector, QVector3D(0.0f, 0.0f, 90.0f), 0,
+ m_cachedSelectionMode, m_labelShader, m_labelObj, activeCamera,
+ false, false, Drawer::LabelMid, Qt::AlignHCenter);
+
glDisable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
glDisable(GL_BLEND);
@@ -877,8 +901,10 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
projectionMatrix.perspective(45.0f, (GLfloat)m_primarySubViewport.width()
/ (GLfloat)m_primarySubViewport.height(), 0.1f, 100.0f);
+ const Q3DCamera *activeCamera = m_cachedScene->activeCamera();
+
// Calculate view matrix
- QMatrix4x4 viewMatrix = m_cachedScene->activeCamera()->d_ptr->viewMatrix();
+ QMatrix4x4 viewMatrix = activeCamera->d_ptr->viewMatrix();
QMatrix4x4 projectionViewMatrix = projectionMatrix * viewMatrix;
@@ -934,7 +960,7 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
// Get the depth view matrix
// It may be possible to hack lightPos here if we want to make some tweaks to shadow
- QVector3D depthLightPos = m_cachedScene->activeCamera()->d_ptr->calculatePositionRelativeToCamera(
+ QVector3D depthLightPos = activeCamera->d_ptr->calculatePositionRelativeToCamera(
zeroVector, 0.0f, 3.5f / m_autoScaleAdjustment);
depthViewMatrix.lookAt(depthLightPos, zeroVector, upVector);
@@ -1627,7 +1653,7 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
m_drawer->drawLabel(m_dummyRenderItem, axisLabelItem, viewMatrix, projectionMatrix,
positionZComp, rotation, 0, m_cachedSelectionMode,
- m_labelShader, m_labelObj, m_cachedScene->activeCamera(),
+ m_labelShader, m_labelObj, activeCamera,
true, true, Drawer::LabelMid, alignment);
}
labelNbr++;
@@ -1673,7 +1699,7 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
m_drawer->drawLabel(m_dummyRenderItem, axisLabelItem, viewMatrix, projectionMatrix,
positionZComp, rotation, 0, m_cachedSelectionMode,
- m_labelShader, m_labelObj, m_cachedScene->activeCamera(),
+ m_labelShader, m_labelObj, activeCamera,
true, true, Drawer::LabelMid, alignment);
}
labelNbr++;
@@ -1733,7 +1759,7 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
m_dummyRenderItem.setTranslation(labelTransBack);
m_drawer->drawLabel(m_dummyRenderItem, axisLabelItem, viewMatrix, projectionMatrix,
positionZComp, labelRotateVectorBack, 0, m_cachedSelectionMode,
- m_labelShader, m_labelObj, m_cachedScene->activeCamera(),
+ m_labelShader, m_labelObj, activeCamera,
true, true, Drawer::LabelMid, alignmentBack);
// Side wall
@@ -1741,7 +1767,7 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
m_dummyRenderItem.setTranslation(labelTransSide);
m_drawer->drawLabel(m_dummyRenderItem, axisLabelItem, viewMatrix, projectionMatrix,
positionZComp, labelRotateVectorSide, 0, m_cachedSelectionMode,
- m_labelShader, m_labelObj, m_cachedScene->activeCamera(),
+ m_labelShader, m_labelObj, activeCamera,
true, true, Drawer::LabelMid, alignmentSide);
}
labelNbr++;