From 5170c3fb57210a89978501108e07c598fb083fbc Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 30 May 2014 14:37:43 +0300 Subject: Fix various issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I4a6d4775f3ca578370a9ce23491bddcb0f5486ec Reviewed-by: Tomi Korpipää --- src/datavisualization/engine/abstract3dcontroller.cpp | 4 ++-- src/datavisualization/engine/abstract3drenderer.cpp | 4 ++-- src/datavisualization/engine/abstract3drenderer_p.h | 2 +- src/datavisualization/engine/axisrendercache_p.h | 9 ++++++++- src/datavisualization/engine/bars3drenderer.cpp | 18 +++++++++++------- src/datavisualization/engine/scatter3drenderer.cpp | 7 +++++-- tests/barstest/chart.cpp | 17 +++++++++-------- 7 files changed, 38 insertions(+), 23 deletions(-) diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp index ea084f9f..13708896 100644 --- a/src/datavisualization/engine/abstract3dcontroller.cpp +++ b/src/datavisualization/engine/abstract3dcontroller.cpp @@ -45,6 +45,7 @@ Abstract3DController::Abstract3DController(QRect initialViewport, Q3DScene *scen m_selectionMode(QAbstract3DGraph::SelectionItem), m_shadowQuality(QAbstract3DGraph::ShadowQualityMedium), m_useOrthoProjection(false), + m_aspectRatio(2.0f), m_scene(scene), m_activeInputHandler(0), m_axisX(0), @@ -58,8 +59,7 @@ Abstract3DController::Abstract3DController(QRect initialViewport, Q3DScene *scen m_renderPending(false), m_measureFps(false), m_numFrames(0), - m_currentFps(0.0), - m_aspectRatio(2.0f) + m_currentFps(0.0) { if (!m_scene) m_scene = new Q3DScene; diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp index 0f9109db..9a063e0c 100644 --- a/src/datavisualization/engine/abstract3drenderer.cpp +++ b/src/datavisualization/engine/abstract3drenderer.cpp @@ -54,13 +54,13 @@ Abstract3DRenderer::Abstract3DRenderer(Abstract3DController *controller) m_visibleSeriesCount(0), m_customItemShader(0), m_useOrthoProjection(false), - m_graphAspectRatio(2.0f), m_xFlipped(false), m_yFlipped(false), m_zFlipped(false), m_backgroundObj(0), m_gridLineObj(0), - m_labelObj(0) + m_labelObj(0), + m_graphAspectRatio(2.0f) { QObject::connect(m_drawer, &Drawer::drawerChanged, this, &Abstract3DRenderer::updateTextures); QObject::connect(this, &Abstract3DRenderer::needRender, controller, diff --git a/src/datavisualization/engine/abstract3drenderer_p.h b/src/datavisualization/engine/abstract3drenderer_p.h index 35b6ff27..664933bc 100644 --- a/src/datavisualization/engine/abstract3drenderer_p.h +++ b/src/datavisualization/engine/abstract3drenderer_p.h @@ -225,8 +225,8 @@ protected: bool m_useOrthoProjection; bool m_xFlipped; - bool m_zFlipped; bool m_yFlipped; + bool m_zFlipped; ObjectHelper *m_backgroundObj; // Shared reference ObjectHelper *m_gridLineObj; // Shared reference diff --git a/src/datavisualization/engine/axisrendercache_p.h b/src/datavisualization/engine/axisrendercache_p.h index 0f82fda0..0e4492b4 100644 --- a/src/datavisualization/engine/axisrendercache_p.h +++ b/src/datavisualization/engine/axisrendercache_p.h @@ -80,7 +80,14 @@ public: inline float gridLinePosition(int index) { return m_adjustedGridLinePositions.at(index); } inline int gridLineCount() { return m_adjustedGridLinePositions.size(); } inline float labelPosition(int index) { return m_adjustedLabelPositions.at(index); } - inline int labelCount() { return m_adjustedLabelPositions.size(); } + inline int labelCount() { + // Some value axis formatters may opt to not show all labels, + // so use positions array for determining count in that case. + if (m_type == QAbstract3DAxis::AxisTypeValue) + return m_adjustedLabelPositions.size(); + else + return m_labels.size(); + } void updateAllPositions(); inline bool positionsDirty() const { return m_positionsDirty; } inline void markPositionsDirty() { m_positionsDirty = true; } diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp index 73a2eb3a..afa249c7 100644 --- a/src/datavisualization/engine/bars3drenderer.cpp +++ b/src/datavisualization/engine/bars3drenderer.cpp @@ -298,8 +298,11 @@ void Bars3DRenderer::updateSeries(const QList &seriesList) m_haveGradientSeries = true; } } - if (noSelection && !selectionLabel().isEmpty()) - m_selectionLabelDirty = true; + if (noSelection) { + if (!selectionLabel().isEmpty()) + m_selectionLabelDirty = true; + m_selectedSeriesCache = 0; + } } SeriesRenderCache *Bars3DRenderer::createNewCache(QAbstract3DSeries *series) @@ -2058,12 +2061,13 @@ void Bars3DRenderer::drawLabels(bool drawSelection, const Q3DCamera *activeCamer } QQuaternion totalRotation = Utils::calculateRotation(labelRotation); + labelCount = qMin(m_axisCacheZ.labelCount(), m_cachedColumnCount); if (m_zFlipped) { startIndex = 0; - endIndex = m_cachedRowCount; + endIndex = labelCount; indexStep = 1; } else { - startIndex = m_cachedRowCount - 1; + startIndex = labelCount - 1; endIndex = -1; indexStep = -1; } @@ -2175,14 +2179,14 @@ void Bars3DRenderer::drawLabels(bool drawSelection, const Q3DCamera *activeCamer } totalRotation = Utils::calculateRotation(labelRotation); - + labelCount = qMin(m_axisCacheX.labelCount(), m_cachedColumnCount); if (m_xFlipped) { - startIndex = m_cachedColumnCount - 1; + startIndex = labelCount - 1; endIndex = -1; indexStep = -1; } else { startIndex = 0; - endIndex = m_cachedColumnCount; + endIndex = labelCount; indexStep = 1; } for (int column = startIndex; column != endIndex; column = column + indexStep) { diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp index 10160bed..bd1ba17d 100644 --- a/src/datavisualization/engine/scatter3drenderer.cpp +++ b/src/datavisualization/engine/scatter3drenderer.cpp @@ -227,8 +227,11 @@ void Scatter3DRenderer::updateSeries(const QList &seriesLis else m_backgroundMargin = defaultMaxSize; - if (noSelection && !selectionLabel().isEmpty()) - m_selectionLabelDirty = true; + if (noSelection) { + if (!selectionLabel().isEmpty()) + m_selectionLabelDirty = true; + m_selectedSeriesCache = 0; + } } SeriesRenderCache *Scatter3DRenderer::createNewCache(QAbstract3DSeries *series) diff --git a/tests/barstest/chart.cpp b/tests/barstest/chart.cpp index 4e5c8976..d3c38d85 100644 --- a/tests/barstest/chart.cpp +++ b/tests/barstest/chart.cpp @@ -313,11 +313,16 @@ void GraphModifier::swapAxis() void GraphModifier::releaseAxes() { - // Releases all axes - results in default axes for all dimensions. + // Releases all axes we have created - results in default axes for all dimensions. // Axes reset when the graph is switched as set*Axis calls are made, which // implicitly add axes. - foreach (QAbstract3DAxis *axis, m_graph->axes()) - m_graph->releaseAxis(axis); + m_graph->releaseAxis(m_autoAdjustingAxis); + m_graph->releaseAxis(m_fixedRangeAxis); + m_graph->releaseAxis(m_temperatureAxis); + m_graph->releaseAxis(m_yearAxis); + m_graph->releaseAxis(m_monthAxis); + m_graph->releaseAxis(m_genericRowAxis); + m_graph->releaseAxis(m_genericColumnAxis); } void GraphModifier::releaseSeries() @@ -999,8 +1004,6 @@ void GraphModifier::primarySeriesTest() nextStep = 0; break; } - - } void GraphModifier::insertRemoveTestToggle() @@ -1038,7 +1041,7 @@ void GraphModifier::toggleRotation() void GraphModifier::useLogAxis() { static int counter = -1; - static QLogValue3DAxisFormatter *logFormatter = new QLogValue3DAxisFormatter; + static QLogValue3DAxisFormatter *logFormatter = 0; static float minRange = 1.0f; counter++; @@ -1115,8 +1118,6 @@ void GraphModifier::useLogAxis() counter = -1; break; } - - } void GraphModifier::changeValueAxisFormat(const QString & text) -- cgit v1.2.3