summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/surface3dcontroller.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-18 15:16:03 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-19 07:43:16 +0300
commit8d84fc94b2cd5a0cc9eb83fd7708920ce785fa1b (patch)
treeb95e1ae87adbefb74350a8ed0d626aa823553960 /src/datavisualization/engine/surface3dcontroller.cpp
parente746a954501e8b9eaee572414314a17ae2929573 (diff)
Implement limts related autoscaling for surface
Task-number: QTRD-2267 Change-Id: I406e1530585989a873885ac1ab8e4d2913080c22 Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavisualization/engine/surface3dcontroller.cpp')
-rw-r--r--src/datavisualization/engine/surface3dcontroller.cpp38
1 files changed, 36 insertions, 2 deletions
diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp
index dbd1969a..675552ed 100644
--- a/src/datavisualization/engine/surface3dcontroller.cpp
+++ b/src/datavisualization/engine/surface3dcontroller.cpp
@@ -102,7 +102,7 @@ void Surface3DController::handleAxisAutoAdjustRangeChangedInOrientation(Q3DAbstr
Q_UNUSED(orientation)
Q_UNUSED(autoAdjust)
- // TODO: Implement!
+ adjustValueAxisRange();
}
void Surface3DController::setSmoothSurface(bool enable)
@@ -150,13 +150,15 @@ void Surface3DController::setActiveDataProxy(QAbstractDataProxy *proxy)
QSurfaceDataProxy *surfaceDataProxy = static_cast<QSurfaceDataProxy *>(m_data);
- // TODO connections and handler for proxy changes
QObject::connect(surfaceDataProxy, &QSurfaceDataProxy::arrayReset,
this, &Surface3DController::handleArrayReset);
+
+ adjustValueAxisRange();
}
void Surface3DController::handleArrayReset()
{
+ adjustValueAxisRange();
m_isDataDirty = true;
emitNeedRender();
}
@@ -167,4 +169,36 @@ void Surface3DController::handleSelectionAtPoint(const QPoint &point)
emit leftMousePressed(point);
}
+void Surface3DController::adjustValueAxisRange()
+{
+ if (m_data) {
+ QVector3D minLimits;
+ QVector3D maxLimits;
+ static_cast<QSurfaceDataProxy *>(m_data)->dptr()->limitValues(minLimits, maxLimits);
+ Q3DValueAxis *valueAxis = static_cast<Q3DValueAxis *>(m_axisX);
+ if (valueAxis && valueAxis->isAutoAdjustRange()) {
+ if (minLimits.x() != maxLimits.x())
+ valueAxis->dptr()->setRange(minLimits.x(), maxLimits.x());
+ else
+ valueAxis->dptr()->setRange(minLimits.x() - 1.0f, minLimits.x() + 1.0f); // Default to some valid range
+ }
+
+ valueAxis = static_cast<Q3DValueAxis *>(m_axisY);
+ if (valueAxis && valueAxis->isAutoAdjustRange()) {
+ if (minLimits.y() != maxLimits.y())
+ valueAxis->dptr()->setRange(minLimits.y(), maxLimits.y());
+ else
+ valueAxis->dptr()->setRange(minLimits.y() - 1.0f, minLimits.y() + 1.0f); // Default to some valid range
+ }
+
+ valueAxis = static_cast<Q3DValueAxis *>(m_axisZ);
+ if (valueAxis && valueAxis->isAutoAdjustRange()) {
+ if (minLimits.z() != maxLimits.z())
+ valueAxis->dptr()->setRange(minLimits.z(), maxLimits.z());
+ else
+ valueAxis->dptr()->setRange(minLimits.z() - 1.0f, minLimits.z() + 1.0f); // Default to some valid range
+ }
+ }
+}
+
QT_DATAVISUALIZATION_END_NAMESPACE