summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas McGuire <thomas.mcguire.qnx@kdab.com>2012-07-11 09:59:57 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-18 02:15:40 +0200
commita72d15c8a7ca8b89b2160f4e48af5cf69e2a31e7 (patch)
treedd1b0ec088e23556b0a6b9b80130d35b48c8c0ec
parent5464963f9afae3bf7329d9b0ea7102231125f794 (diff)
Introduce QRotationReading::setFromEuler() in favor of set{X/Y/Z}()
In preparation of adding new representations to the reading (QTBUG-25840), the setX(), setY() and setZ() setters were removed, as these don't set the representation atomically, and don't provide a single point where a conversion to matrix or quaternion can occur. These setters were only supposed to be used by the backends, and all backends are ported in this commit. Change-Id: Ib652520578d293687fc8515d226f1f61aa2f2def Reviewed-by: Lincoln Ramsay <lincoln.ramsay@nokia.com> Reviewed-by: Lorn Potter <lorn.potter@nokia.com>
-rw-r--r--src/plugins/sensors/blackberry/bbrotationsensor.cpp6
-rw-r--r--src/plugins/sensors/generic/genericrotationsensor.cpp4
-rw-r--r--src/sensors/qrotationsensor.cpp31
-rw-r--r--src/sensors/qrotationsensor.h7
-rw-r--r--tests/auto/qsensor/test_backends.h4
5 files changed, 19 insertions, 33 deletions
diff --git a/src/plugins/sensors/blackberry/bbrotationsensor.cpp b/src/plugins/sensors/blackberry/bbrotationsensor.cpp
index 28dc49c9..e6d038d2 100644
--- a/src/plugins/sensors/blackberry/bbrotationsensor.cpp
+++ b/src/plugins/sensors/blackberry/bbrotationsensor.cpp
@@ -137,9 +137,9 @@ bool BbRotationSensor::updateReadingFromEvent(const sensor_event_t &event, QRota
matrixToEulerZXY(event.rotation_matrix, xRad, yRad, zRad);
}
- reading->setX(radiansToDegrees(xRad));
- reading->setY(radiansToDegrees(yRad));
- reading->setZ(radiansToDegrees(zRad));
+ reading->setFromEuler(radiansToDegrees(xRad),
+ radiansToDegrees(yRad),
+ radiansToDegrees(zRad));
return true;
}
diff --git a/src/plugins/sensors/generic/genericrotationsensor.cpp b/src/plugins/sensors/generic/genericrotationsensor.cpp
index 7142227c..dddacb24 100644
--- a/src/plugins/sensors/generic/genericrotationsensor.cpp
+++ b/src/plugins/sensors/generic/genericrotationsensor.cpp
@@ -107,9 +107,7 @@ bool genericrotationsensor::filter(QSensorReading *reading)
}
m_reading.setTimestamp(ar->timestamp());
- m_reading.setX(pitch);
- m_reading.setY(roll);
- m_reading.setZ(0);
+ m_reading.setFromEuler(pitch, roll, 0);
newReadingAvailable();
return false;
}
diff --git a/src/sensors/qrotationsensor.cpp b/src/sensors/qrotationsensor.cpp
index 6adbf6a2..120723c7 100644
--- a/src/sensors/qrotationsensor.cpp
+++ b/src/sensors/qrotationsensor.cpp
@@ -116,14 +116,6 @@ qreal QRotationReading::x() const
}
/*!
- Sets the rotation around the x axis to \a x.
-*/
-void QRotationReading::setX(qreal x)
-{
- d->x = x;
-}
-
-/*!
\property QRotationReading::y
\brief the rotation around the y axis.
@@ -137,14 +129,6 @@ qreal QRotationReading::y() const
}
/*!
- Sets the rotation around the y axis to \a y.
-*/
-void QRotationReading::setY(qreal y)
-{
- d->y = y;
-}
-
-/*!
\property QRotationReading::z
\brief the rotation around the z axis.
@@ -158,10 +142,19 @@ qreal QRotationReading::z() const
}
/*!
- Sets the rotation around the z axis to \a z.
-*/
-void QRotationReading::setZ(qreal z)
+ \brief Sets the rotation from three euler angles.
+
+ This is to be called from the backend.
+
+ The angles are measured in degrees. The order of the rotations matters, as first the \a z rotation
+ is applied, then the \a x rotation and finally the \a y rotation.
+
+ \since 5.0
+ */
+void QRotationReading::setFromEuler(qreal x, qreal y, qreal z)
{
+ d->x = x;
+ d->y = y;
d->z = z;
}
diff --git a/src/sensors/qrotationsensor.h b/src/sensors/qrotationsensor.h
index 9e022803..7021f355 100644
--- a/src/sensors/qrotationsensor.h
+++ b/src/sensors/qrotationsensor.h
@@ -60,13 +60,10 @@ class Q_SENSORS_EXPORT QRotationReading : public QSensorReading
DECLARE_READING(QRotationReading)
public:
qreal x() const;
- void setX(qreal x);
-
qreal y() const;
- void setY(qreal y);
-
qreal z() const;
- void setZ(qreal z);
+
+ void setFromEuler(qreal x, qreal y, qreal z);
};
class Q_SENSORS_EXPORT QRotationFilter : public QSensorFilter
diff --git a/tests/auto/qsensor/test_backends.h b/tests/auto/qsensor/test_backends.h
index 21f02355..1dc9dc3a 100644
--- a/tests/auto/qsensor/test_backends.h
+++ b/tests/auto/qsensor/test_backends.h
@@ -123,9 +123,7 @@ PREPARE_SENSORINTERFACE(QProximitySensor, QProximityReading, QProximityFilter, {
reading->setClose(true);
})
PREPARE_SENSORINTERFACE(QRotationSensor, QRotationReading, QRotationFilter, {
- reading->setX(1.0);
- reading->setY(1.0);
- reading->setZ(1.0);
+ reading->setFromEuler(1.0, 1.0, 1.0);
})
PREPARE_SENSORINTERFACE(QTapSensor, QTapReading, QTapFilter, {
reading->setTapDirection(QTapReading::Z_Both);