summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-03-01 17:18:05 +0100
committerLars Knoll <lars.knoll@qt.io>2020-11-19 12:28:45 +0100
commitbfceaf7eb3445e44a1e4d26fecd65cbd6e926928 (patch)
tree49c5e211350406e96a3c801ebc1cba5fd7332a3a /src/gui
parent5a61c88e1fee77db5c99837bf2d59630777b671a (diff)
De-inline qFuzzyCompare for QMatrix4x4 and QVector4D
Change-Id: Ic412d5cefcc1c41e90ee5cf98814469aec3a91f6 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/math3d/qmatrix4x4.cpp20
-rw-r--r--src/gui/math3d/qmatrix4x4.h22
-rw-r--r--src/gui/math3d/qvectornd.cpp17
-rw-r--r--src/gui/math3d/qvectornd.h27
4 files changed, 42 insertions, 44 deletions
diff --git a/src/gui/math3d/qmatrix4x4.cpp b/src/gui/math3d/qmatrix4x4.cpp
index 5c1cdcc9fc..4d0143425e 100644
--- a/src/gui/math3d/qmatrix4x4.cpp
+++ b/src/gui/math3d/qmatrix4x4.cpp
@@ -754,6 +754,26 @@ QMatrix4x4 operator/(const QMatrix4x4& matrix, float divisor)
Returns \c true if \a m1 and \a m2 are equal, allowing for a small
fuzziness factor for floating-point comparisons; false otherwise.
*/
+bool qFuzzyCompare(const QMatrix4x4& m1, const QMatrix4x4& m2)
+{
+ return qFuzzyCompare(m1.m[0][0], m2.m[0][0]) &&
+ qFuzzyCompare(m1.m[0][1], m2.m[0][1]) &&
+ qFuzzyCompare(m1.m[0][2], m2.m[0][2]) &&
+ qFuzzyCompare(m1.m[0][3], m2.m[0][3]) &&
+ qFuzzyCompare(m1.m[1][0], m2.m[1][0]) &&
+ qFuzzyCompare(m1.m[1][1], m2.m[1][1]) &&
+ qFuzzyCompare(m1.m[1][2], m2.m[1][2]) &&
+ qFuzzyCompare(m1.m[1][3], m2.m[1][3]) &&
+ qFuzzyCompare(m1.m[2][0], m2.m[2][0]) &&
+ qFuzzyCompare(m1.m[2][1], m2.m[2][1]) &&
+ qFuzzyCompare(m1.m[2][2], m2.m[2][2]) &&
+ qFuzzyCompare(m1.m[2][3], m2.m[2][3]) &&
+ qFuzzyCompare(m1.m[3][0], m2.m[3][0]) &&
+ qFuzzyCompare(m1.m[3][1], m2.m[3][1]) &&
+ qFuzzyCompare(m1.m[3][2], m2.m[3][2]) &&
+ qFuzzyCompare(m1.m[3][3], m2.m[3][3]);
+}
+
#ifndef QT_NO_VECTOR3D
diff --git a/src/gui/math3d/qmatrix4x4.h b/src/gui/math3d/qmatrix4x4.h
index 5664de6729..03ce6faed8 100644
--- a/src/gui/math3d/qmatrix4x4.h
+++ b/src/gui/math3d/qmatrix4x4.h
@@ -123,7 +123,7 @@ public:
friend QMatrix4x4 operator*(const QMatrix4x4& matrix, float factor);
friend Q_GUI_EXPORT QMatrix4x4 operator/(const QMatrix4x4& matrix, float divisor);
- friend inline bool qFuzzyCompare(const QMatrix4x4& m1, const QMatrix4x4& m2);
+ friend Q_GUI_EXPORT bool qFuzzyCompare(const QMatrix4x4& m1, const QMatrix4x4& m2);
#ifndef QT_NO_VECTOR3D
void scale(const QVector3D& vector);
@@ -1014,26 +1014,6 @@ inline QMatrix4x4 operator*(const QMatrix4x4& matrix, float factor)
return m;
}
-inline bool qFuzzyCompare(const QMatrix4x4& m1, const QMatrix4x4& m2)
-{
- return qFuzzyCompare(m1.m[0][0], m2.m[0][0]) &&
- qFuzzyCompare(m1.m[0][1], m2.m[0][1]) &&
- qFuzzyCompare(m1.m[0][2], m2.m[0][2]) &&
- qFuzzyCompare(m1.m[0][3], m2.m[0][3]) &&
- qFuzzyCompare(m1.m[1][0], m2.m[1][0]) &&
- qFuzzyCompare(m1.m[1][1], m2.m[1][1]) &&
- qFuzzyCompare(m1.m[1][2], m2.m[1][2]) &&
- qFuzzyCompare(m1.m[1][3], m2.m[1][3]) &&
- qFuzzyCompare(m1.m[2][0], m2.m[2][0]) &&
- qFuzzyCompare(m1.m[2][1], m2.m[2][1]) &&
- qFuzzyCompare(m1.m[2][2], m2.m[2][2]) &&
- qFuzzyCompare(m1.m[2][3], m2.m[2][3]) &&
- qFuzzyCompare(m1.m[3][0], m2.m[3][0]) &&
- qFuzzyCompare(m1.m[3][1], m2.m[3][1]) &&
- qFuzzyCompare(m1.m[3][2], m2.m[3][2]) &&
- qFuzzyCompare(m1.m[3][3], m2.m[3][3]);
-}
-
inline QPoint QMatrix4x4::map(const QPoint& point) const
{
return *this * point;
diff --git a/src/gui/math3d/qvectornd.cpp b/src/gui/math3d/qvectornd.cpp
index 5433e9bc6c..7362694987 100644
--- a/src/gui/math3d/qvectornd.cpp
+++ b/src/gui/math3d/qvectornd.cpp
@@ -397,6 +397,10 @@ QT_BEGIN_NAMESPACE
Returns \c true if \a v1 and \a v2 are equal, allowing for a small
fuzziness factor for floating-point comparisons; false otherwise.
*/
+bool qFuzzyCompare(QVector2D v1, QVector2D v2) noexcept
+{
+ return qFuzzyCompare(v1.v[0], v2.v[0]) && qFuzzyCompare(v1.v[1], v2.v[1]);
+}
#ifndef QT_NO_VECTOR3D
/*!
@@ -994,6 +998,12 @@ QVector3D QVector3D::unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &pr
Returns \c true if \a v1 and \a v2 are equal, allowing for a small
fuzziness factor for floating-point comparisons; false otherwise.
*/
+bool qFuzzyCompare(QVector3D v1, QVector3D v2) noexcept
+{
+ return qFuzzyCompare(v1.v[0], v2.v[0]) &&
+ qFuzzyCompare(v1.v[1], v2.v[1]) &&
+ qFuzzyCompare(v1.v[2], v2.v[2]);
+}
#ifndef QT_NO_VECTOR2D
@@ -1502,6 +1512,13 @@ QDataStream &operator>>(QDataStream &stream, QVector3D &vector)
Returns \c true if \a v1 and \a v2 are equal, allowing for a small
fuzziness factor for floating-point comparisons; false otherwise.
*/
+bool qFuzzyCompare(QVector4D v1, QVector4D v2) noexcept
+{
+ return qFuzzyCompare(v1.v[0], v2.v[0]) &&
+ qFuzzyCompare(v1.v[1], v2.v[1]) &&
+ qFuzzyCompare(v1.v[2], v2.v[2]) &&
+ qFuzzyCompare(v1.v[3], v2.v[3]);
+}
#ifndef QT_NO_VECTOR2D
diff --git a/src/gui/math3d/qvectornd.h b/src/gui/math3d/qvectornd.h
index af81a5d1c0..f39b164549 100644
--- a/src/gui/math3d/qvectornd.h
+++ b/src/gui/math3d/qvectornd.h
@@ -155,7 +155,7 @@ QT_WARNING_POP
return QVector2D(vector.v[0] / divisor.v[0], vector.v[1] / divisor.v[1]);
}
- constexpr friend inline bool qFuzzyCompare(QVector2D v1, QVector2D v2) noexcept;
+ friend Q_GUI_EXPORT bool qFuzzyCompare(QVector2D v1, QVector2D v2) noexcept;
#ifndef QT_NO_VECTOR3D
constexpr QVector3D toVector3D() const noexcept;
@@ -296,7 +296,7 @@ QT_WARNING_POP
return QVector3D(vector.v[0] / divisor.v[0], vector.v[1] / divisor.v[1], vector.v[2] / divisor.v[2]);
}
- constexpr friend inline bool qFuzzyCompare(QVector3D v1, QVector3D v2) noexcept;
+ friend Q_GUI_EXPORT bool qFuzzyCompare(QVector3D v1, QVector3D v2) noexcept;
#ifndef QT_NO_VECTOR2D
constexpr QVector2D toVector2D() const noexcept;
@@ -430,7 +430,7 @@ QT_WARNING_POP
return QVector4D(vector.v[0] / divisor.v[0], vector.v[1] / divisor.v[1], vector.v[2] / divisor.v[2], vector.v[3] / divisor.v[3]);
}
- constexpr friend inline bool qFuzzyCompare(QVector4D v1, QVector4D v2) noexcept;
+ friend Q_GUI_EXPORT bool qFuzzyCompare(QVector4D v1, QVector4D v2) noexcept;
#ifndef QT_NO_VECTOR2D
constexpr QVector2D toVector2D() const noexcept;
@@ -451,6 +451,7 @@ private:
friend class QVector2D;
friend class QVector3D;
+ friend class QMatrix4x4;
#ifndef QT_NO_MATRIX4X4
friend QVector4D operator*(const QVector4D& vector, const QMatrix4x4& matrix);
friend QVector4D operator*(const QMatrix4x4& matrix, const QVector4D& vector);
@@ -607,11 +608,6 @@ constexpr inline float QVector2D::dotProduct(QVector2D v1, QVector2D v2) noexcep
return v1.v[0] * v2.v[0] + v1.v[1] * v2.v[1];
}
-constexpr inline bool qFuzzyCompare(QVector2D v1, QVector2D v2) noexcept
-{
- return qFuzzyCompare(v1.v[0], v2.v[0]) && qFuzzyCompare(v1.v[1], v2.v[1]);
-}
-
#ifndef QT_NO_VECTOR3D
constexpr inline QVector3D QVector2D::toVector3D() const noexcept
{
@@ -835,13 +831,6 @@ inline float QVector3D::distanceToLine(QVector3D point, QVector3D direction) con
return (*this - p).length();
}
-constexpr inline bool qFuzzyCompare(QVector3D v1, QVector3D v2) noexcept
-{
- return qFuzzyCompare(v1.v[0], v2.v[0]) &&
- qFuzzyCompare(v1.v[1], v2.v[1]) &&
- qFuzzyCompare(v1.v[2], v2.v[2]);
-}
-
#ifndef QT_NO_VECTOR2D
constexpr inline QVector2D QVector3D::toVector2D() const noexcept
{
@@ -1038,14 +1027,6 @@ constexpr float QVector4D::dotProduct(QVector4D v1, QVector4D v2) noexcept
return v1.v[0] * v2.v[0] + v1.v[1] * v2.v[1] + v1.v[2] * v2.v[2] + v1.v[3] * v2.v[3];
}
-constexpr inline bool qFuzzyCompare(QVector4D v1, QVector4D v2) noexcept
-{
- return qFuzzyCompare(v1.v[0], v2.v[0]) &&
- qFuzzyCompare(v1.v[1], v2.v[1]) &&
- qFuzzyCompare(v1.v[2], v2.v[2]) &&
- qFuzzyCompare(v1.v[3], v2.v[3]);
-}
-
#ifndef QT_NO_VECTOR2D
constexpr inline QVector2D QVector4D::toVector2D() const noexcept