summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-03-26 09:52:28 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-03-26 12:26:22 +0200
commit1e99ff2c532977d21776f5f363b8171ef147a7d9 (patch)
treeedd5a350afa5241019a7dfed1c723587f3d82265 /src/datavisualization/engine
parentb36b9eb7c65e3a4f6972d2f2145722470d1ad29b (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')
-rw-r--r--src/datavisualization/engine/axisrendercache.cpp37
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp8
-rw-r--r--src/datavisualization/engine/scatter3drenderer.cpp6
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp6
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);
}