diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-06-25 14:45:01 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-06-26 10:43:44 +0300 |
commit | ffba0218893cd25b08718d4d6fd0c40c95aecf47 (patch) | |
tree | c9663278f30d77862d374edcd4cab8f171b5a663 /src/datavisualization/engine/surface3drenderer.cpp | |
parent | 36417dd3660f75c34328c3420bdd512436da86ff (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.cpp | 23 |
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; |