summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/data/qscatterdataproxy.cpp
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-11-01 09:53:20 +0200
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-11-01 13:07:06 +0200
commit90ecf703af76a4dbca65d0150dcce48b73d40c58 (patch)
tree419f5547fec31f3f735d4d8a43b852ccd9c0be13 /src/datavisualization/data/qscatterdataproxy.cpp
parentb9da2b74fe6f29f602ad700554527018174761c9 (diff)
Support for non-zero centered data in scatter
Task-number: QTRD-2311 Change-Id: I12a60b2d10dd6706d5303cdf127a54f05a819780 Change-Id: I12a60b2d10dd6706d5303cdf127a54f05a819780 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/data/qscatterdataproxy.cpp')
-rw-r--r--src/datavisualization/data/qscatterdataproxy.cpp57
1 files changed, 43 insertions, 14 deletions
diff --git a/src/datavisualization/data/qscatterdataproxy.cpp b/src/datavisualization/data/qscatterdataproxy.cpp
index c9bd56d7..c5559e9c 100644
--- a/src/datavisualization/data/qscatterdataproxy.cpp
+++ b/src/datavisualization/data/qscatterdataproxy.cpp
@@ -346,22 +346,51 @@ void QScatterDataProxyPrivate::removeItems(int index, int removeCount)
m_dataArray->remove(index, removeCount);
}
-QVector3D QScatterDataProxyPrivate::limitValues()
+void QScatterDataProxyPrivate::limitValues(QVector3D &minValues, QVector3D &maxValues)
{
- QVector3D limits;
- for (int i = 0; i < m_dataArray->size(); i++) {
- const QScatterDataItem &item = m_dataArray->at(i);
- float xValue = qAbs(item.position().x());
- if (limits.x() < xValue)
- limits.setX(xValue);
- float yValue = qAbs(item.position().y());
- if (limits.y() < yValue)
- limits.setY(yValue);
- float zValue = qAbs(item.position().z());
- if (limits.z() < zValue)
- limits.setZ(zValue);
+ if (m_dataArray->isEmpty())
+ return;
+
+ const QVector3D &firstPos = m_dataArray->at(0).position();
+
+ float minX = firstPos.x();
+ float maxX = minX;
+ float minY = firstPos.y();
+ float maxY = minY;
+ float minZ = firstPos.z();
+ float maxZ = minZ;
+
+ if (m_dataArray->size() > 1) {
+ for (int i = 1; i < m_dataArray->size(); i++) {
+ const QVector3D &pos = m_dataArray->at(i).position();
+
+ float value = pos.x();
+ if (minX > value)
+ minX = value;
+ if (maxX < value)
+ maxX = value;
+
+ value = pos.y();
+ if (minY > value)
+ minY = value;
+ if (maxY < value)
+ maxY = value;
+
+ value = pos.z();
+ if (minZ > value)
+ minZ = value;
+ if (maxZ < value)
+ maxZ = value;
+ }
}
- return limits;
+
+ minValues.setX(minX);
+ minValues.setY(minY);
+ minValues.setZ(minZ);
+
+ maxValues.setX(maxX);
+ maxValues.setY(maxY);
+ maxValues.setZ(maxZ);
}
QT_DATAVISUALIZATION_END_NAMESPACE