diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-03-26 09:52:28 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-03-26 12:26:22 +0200 |
commit | 1e99ff2c532977d21776f5f363b8171ef147a7d9 (patch) | |
tree | edd5a350afa5241019a7dfed1c723587f3d82265 /src/datavisualization/engine | |
parent | b36b9eb7c65e3a4f6972d2f2145722470d1ad29b (diff) |
Make axis labels more accurate by using qreals for label values
Also refactor axis formatter sub grid array to be one dimensional.
There is no need to know which segment each sub grid line belongs
to.
Change-Id: Ie9813088650fcc0ca844f3c358ea1abae9258367
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine')
4 files changed, 28 insertions, 29 deletions
diff --git a/src/datavisualization/engine/axisrendercache.cpp b/src/datavisualization/engine/axisrendercache.cpp index 1b4fd52d..8e78522a 100644 --- a/src/datavisualization/engine/axisrendercache.cpp +++ b/src/datavisualization/engine/axisrendercache.cpp @@ -119,29 +119,28 @@ void AxisRenderCache::updateAllPositions() // by caching all grid and subgrid positions into a single vector. // If subgrid lines are ever themed separately, this array will probably become obsolete. if (m_formatter) { - int subGridCount = m_subSegmentCount - 1; - int fullSize = m_segmentCount + 1 + (m_segmentCount * subGridCount); + int gridCount = m_formatter->gridPositions().size(); + int subGridCount = m_formatter->subGridPositions().size(); + int labelCount = m_formatter->labelPositions().size(); + int fullSize = gridCount + subGridCount; + m_adjustedGridLinePositions.resize(fullSize); - m_adjustedLabelPositions.resize(m_segmentCount + 1); + m_adjustedLabelPositions.resize(labelCount); int index = 0; - int segment = 0; - for (; segment < m_segmentCount; segment++) { - m_adjustedLabelPositions[segment] = - m_formatter->labelPositions().at(segment) * m_scale + m_translate; + int grid = 0; + int label = 0; + for (; label < labelCount; label++) { + m_adjustedLabelPositions[label] = + m_formatter->labelPositions().at(label) * m_scale + m_translate; + } + for (; grid < gridCount; grid++) { m_adjustedGridLinePositions[index++] = - m_formatter->gridPositions().at(segment) * m_scale + m_translate; - if (subGridCount > 0) { - for (int subGrid = 0; subGrid < subGridCount; subGrid++) { - m_adjustedGridLinePositions[index++] = - m_formatter->subGridPositions().at(segment).at(subGrid) * m_scale + m_translate; - } - } + m_formatter->gridPositions().at(grid) * m_scale + m_translate; + } + for (int subGrid = 0; subGrid < subGridCount; subGrid++) { + m_adjustedGridLinePositions[index++] = + m_formatter->subGridPositions().at(subGrid) * m_scale + m_translate; } - // Last gridline - m_adjustedLabelPositions[segment] = - m_formatter->labelPositions().at(segment) * m_scale + m_translate; - m_adjustedGridLinePositions[index] = - m_formatter->gridPositions().at(segment) * m_scale + m_translate; m_positionsDirty = false; } diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp index f0a5e3d4..0cad8522 100644 --- a/src/datavisualization/engine/bars3drenderer.cpp +++ b/src/datavisualization/engine/bars3drenderer.cpp @@ -648,7 +648,7 @@ void Bars3DRenderer::drawSlicedScene() // Create label texture if we need it if (item.sliceLabel().isNull() || m_updateLabels) { QString valueLabelText = m_axisCacheY.formatter()->stringForValue( - item.value(), m_axisCacheY.labelFormat()); + qreal(item.value()), m_axisCacheY.labelFormat()); item.setSliceLabel(valueLabelText); m_drawer->generateLabelItem(item.sliceLabelItem(), item.sliceLabel()); m_updateLabels = false; @@ -674,7 +674,7 @@ void Bars3DRenderer::drawSlicedScene() // Create label texture if we need it if (item.sliceLabel().isNull() || m_updateLabels) { QString valueLabelText = m_axisCacheY.formatter()->stringForValue( - item.value(), m_axisCacheY.labelFormat()); + qreal(item.value()), m_axisCacheY.labelFormat()); item.setSliceLabel(valueLabelText); m_drawer->generateLabelItem(item.sliceLabelItem(), item.sliceLabel()); m_updateLabels = false; @@ -1822,7 +1822,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) // Custom format expects printf format specifier. There is no tag for it. labelText = m_axisCacheY.formatter()->stringForValue( - selectedBar->value(), + qreal(selectedBar->value()), m_visibleSeriesList[m_visualSelectedBarSeriesIndex].itemLabelFormat()); int selBarPosRow = selectedBar->position().x(); @@ -1843,7 +1843,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) if (labelText.contains(valueLabelTag)) { QString valueLabelText = m_axisCacheY.formatter()->stringForValue( - selectedBar->value(), m_axisCacheY.labelFormat()); + qreal(selectedBar->value()), m_axisCacheY.labelFormat()); labelText.replace(valueLabelTag, valueLabelText); } diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp index f85936f9..49595052 100644 --- a/src/datavisualization/engine/scatter3drenderer.cpp +++ b/src/datavisualization/engine/scatter3drenderer.cpp @@ -1463,17 +1463,17 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) if (labelText.contains(xLabelTag)) { QString valueLabelText = m_axisCacheX.formatter()->stringForValue( - selectedItem->position().x(), m_axisCacheX.labelFormat()); + qreal(selectedItem->position().x()), m_axisCacheX.labelFormat()); labelText.replace(xLabelTag, valueLabelText); } if (labelText.contains(yLabelTag)) { QString valueLabelText = m_axisCacheY.formatter()->stringForValue( - selectedItem->position().y(), m_axisCacheY.labelFormat()); + qreal(selectedItem->position().y()), m_axisCacheY.labelFormat()); labelText.replace(yLabelTag, valueLabelText); } if (labelText.contains(zLabelTag)) { QString valueLabelText = m_axisCacheZ.formatter()->stringForValue( - selectedItem->position().z(), m_axisCacheZ.labelFormat()); + qreal(selectedItem->position().z()), m_axisCacheZ.labelFormat()); labelText.replace(zLabelTag, valueLabelText); } labelText.replace(seriesNameTag, diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp index 9ce80081..86972fdc 100644 --- a/src/datavisualization/engine/surface3drenderer.cpp +++ b/src/datavisualization/engine/surface3drenderer.cpp @@ -2242,17 +2242,17 @@ QString Surface3DRenderer::createSelectionLabel(SurfaceSeriesRenderCache *cache, if (labelText.contains(xLabelTag)) { QString valueLabelText = m_axisCacheX.formatter()->stringForValue( - dataArray.at(row)->at(column).x(), m_axisCacheX.labelFormat()); + qreal(dataArray.at(row)->at(column).x()), m_axisCacheX.labelFormat()); labelText.replace(xLabelTag, valueLabelText); } if (labelText.contains(yLabelTag)) { QString valueLabelText = m_axisCacheY.formatter()->stringForValue( - dataArray.at(row)->at(column).y(), m_axisCacheY.labelFormat()); + qreal(dataArray.at(row)->at(column).y()), m_axisCacheY.labelFormat()); labelText.replace(yLabelTag, valueLabelText); } if (labelText.contains(zLabelTag)) { QString valueLabelText = m_axisCacheZ.formatter()->stringForValue( - dataArray.at(row)->at(column).z(), m_axisCacheZ.labelFormat()); + qreal(dataArray.at(row)->at(column).z()), m_axisCacheZ.labelFormat()); labelText.replace(zLabelTag, valueLabelText); } |