summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/surface3drenderer.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-06-25 14:45:01 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-06-26 10:43:44 +0300
commitffba0218893cd25b08718d4d6fd0c40c95aecf47 (patch)
treec9663278f30d77862d374edcd4cab8f171b5a663 /src/datavisualization/engine/surface3drenderer.cpp
parent36417dd3660f75c34328c3420bdd512436da86ff (diff)
Add radialLabelOffset property for graphs
This property indicates where radial labels of the polar chart are drawn Task-number: QTRD-3184 Change-Id: I1500e67da5e578b90d679876130c2d56c1d08039 Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavisualization/engine/surface3drenderer.cpp')
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index 5fd59e5e..6cf335b0 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -1050,15 +1050,19 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
else
m_xFlipped = true;
+ m_yFlippedForGrid = m_yFlipped;
if (m_flipHorizontalGrid) {
- // Need to determine if camera is below graph top
- float distanceToCenter = activeCamera->position().length()
- / activeCamera->zoomLevel() / m_autoScaleAdjustment * 100.0f;
- qreal cameraAngle = qreal(activeCamera->yRotation()) / 180.0 * M_PI;
- float cameraYPos = float(qSin(cameraAngle)) * distanceToCenter;
- m_yFlippedForGrid = cameraYPos < backgroundMargin;
- } else {
- m_yFlippedForGrid = m_yFlipped;
+ if (!m_useOrthoProjection) {
+ // Need to determine if camera is below graph top
+ float distanceToCenter = activeCamera->position().length()
+ / activeCamera->zoomLevel() / m_autoScaleAdjustment * 100.0f;
+ qreal cameraAngle = qreal(activeCamera->yRotation()) / 180.0 * M_PI;
+ float cameraYPos = float(qSin(cameraAngle)) * distanceToCenter;
+ m_yFlippedForGrid = cameraYPos < backgroundMargin;
+ } else if (m_useOrthoProjection && activeCamera->yRotation() == 0.0f) {
+ // With ortho we only need to flip at angle zero, to fix label autorotation angles
+ m_yFlippedForGrid = !m_yFlipped;
+ }
}
// calculate background rotation based on view matrix rotation
@@ -1937,6 +1941,9 @@ void Surface3DRenderer::drawLabels(bool drawSelection, const Q3DCamera *activeCa
labelYTrans,
0.0f);
+ if (m_polarGraph)
+ labelTrans.setX(labelTrans.x() * m_radialLabelOffset);
+
if (m_zFlipped) {
startIndex = 0;
endIndex = labelCount;