diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-11-01 09:53:20 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-11-01 13:07:06 +0200 |
commit | 90ecf703af76a4dbca65d0150dcce48b73d40c58 (patch) | |
tree | 419f5547fec31f3f735d4d8a43b852ccd9c0be13 /src/datavisualization/data/qscatterdataproxy.cpp | |
parent | b9da2b74fe6f29f602ad700554527018174761c9 (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.cpp | 57 |
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 |