Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qdoublevector2d_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QDOUBLEVECTOR2D_P_H
6#define QDOUBLEVECTOR2D_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#ifdef QT_BUILD_LOCATION_LIB
20#include <QVector2D>
21#endif
22
24#include <QtCore/qmetatype.h>
25#include <QPointF>
26
27QT_BEGIN_NAMESPACE
28
29class QDoubleVector3D;
30
31class Q_POSITIONING_EXPORT QDoubleVector2D
32{
33public:
34 constexpr inline QDoubleVector2D();
35 constexpr inline QDoubleVector2D(double xpos, double ypos);
36 constexpr explicit inline QDoubleVector2D(const QPointF &p);
37 explicit QDoubleVector2D(const QDoubleVector3D &vector);
38
39 constexpr inline double manhattanLength() const;
40 inline bool isNull() const;
41 inline bool isFinite() const;
42
43 constexpr inline double x() const;
44 constexpr inline double y() const;
45
46 inline void setX(double x);
47 inline void setY(double y);
48
49 double length() const;
50 constexpr inline double lengthSquared() const;
51
52 QDoubleVector2D normalized() const;
53 void normalize();
54
55 inline QDoubleVector2D &operator+=(const QDoubleVector2D &vector);
56 inline QDoubleVector2D &operator-=(const QDoubleVector2D &vector);
57 inline QDoubleVector2D &operator*=(double factor);
58 inline QDoubleVector2D &operator*=(const QDoubleVector2D &vector);
59 inline QDoubleVector2D &operator/=(double divisor);
60 inline QDoubleVector2D &operator/=(const QDoubleVector2D &vector);
61
62 constexpr static inline double dotProduct(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
63 { return v1.xp * v2.xp + v1.yp * v2.yp; }
64
65
66 friend constexpr inline bool operator==(const QDoubleVector2D &v1, const QDoubleVector2D &v2);
67 friend constexpr inline bool operator!=(const QDoubleVector2D &v1, const QDoubleVector2D &v2);
68 friend constexpr inline const QDoubleVector2D operator+(const QDoubleVector2D &v1, const QDoubleVector2D &v2);
69 friend constexpr inline const QDoubleVector2D operator-(const QDoubleVector2D &v1, const QDoubleVector2D &v2);
70 friend constexpr inline const QDoubleVector2D operator*(double factor, const QDoubleVector2D &vector);
71 friend constexpr inline const QDoubleVector2D operator*(const QDoubleVector2D &vector, double factor);
72 friend constexpr inline const QDoubleVector2D operator*(const QDoubleVector2D &v1, const QDoubleVector2D &v2);
73 friend constexpr inline const QDoubleVector2D operator-(const QDoubleVector2D &vector);
74 friend constexpr inline const QDoubleVector2D operator/(const QDoubleVector2D &vector, double divisor);
75
76 friend constexpr inline bool qFuzzyCompare(const QDoubleVector2D &v1, const QDoubleVector2D &v2);
77
78 QDoubleVector3D toVector3D() const;
79 constexpr inline QPointF toPointF() const;
80
81private:
82 double xp, yp;
83
84 friend class QDoubleVector3D;
85};
86
87Q_DECLARE_TYPEINFO(QDoubleVector2D, Q_RELOCATABLE_TYPE);
88
89constexpr inline QDoubleVector2D::QDoubleVector2D() : xp(0.0), yp(0.0) {}
90
91constexpr inline QDoubleVector2D::QDoubleVector2D(double xpos, double ypos) : xp(xpos), yp(ypos) {}
92
93constexpr inline QDoubleVector2D::QDoubleVector2D(const QPointF &p) : xp(p.x()), yp(p.y()) { }
94
95constexpr inline double QDoubleVector2D::manhattanLength() const
96{
97 return qAbs(x())+qAbs(y());
98}
99
100inline bool QDoubleVector2D::isNull() const
101{
102 return qIsNull(xp) && qIsNull(yp);
103}
104
105inline bool QDoubleVector2D::isFinite() const
106{
107 return qIsFinite(xp) && qIsFinite(yp);
108}
109
110constexpr inline double QDoubleVector2D::x() const { return xp; }
111constexpr inline double QDoubleVector2D::y() const { return yp; }
112
113inline void QDoubleVector2D::setX(double aX) { xp = aX; }
114inline void QDoubleVector2D::setY(double aY) { yp = aY; }
115
116constexpr inline double QDoubleVector2D::lengthSquared() const
117{ return xp * xp + yp * yp; }
118
119inline QDoubleVector2D &QDoubleVector2D::operator+=(const QDoubleVector2D &vector)
120{
121 xp += vector.xp;
122 yp += vector.yp;
123 return *this;
124}
125
126inline QDoubleVector2D &QDoubleVector2D::operator-=(const QDoubleVector2D &vector)
127{
128 xp -= vector.xp;
129 yp -= vector.yp;
130 return *this;
131}
132
133inline QDoubleVector2D &QDoubleVector2D::operator*=(double factor)
134{
135 xp *= factor;
136 yp *= factor;
137 return *this;
138}
139
140inline QDoubleVector2D &QDoubleVector2D::operator*=(const QDoubleVector2D &vector)
141{
142 xp *= vector.xp;
143 yp *= vector.yp;
144 return *this;
145}
146
147inline QDoubleVector2D &QDoubleVector2D::operator/=(double divisor)
148{
149 xp /= divisor;
150 yp /= divisor;
151 return *this;
152}
153
154inline QDoubleVector2D &QDoubleVector2D::operator/=(const QDoubleVector2D &vector)
155{
156 xp /= vector.xp;
157 yp /= vector.yp;
158 return *this;
159}
160
161constexpr inline bool operator==(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
162{
163 return v1.xp == v2.xp && v1.yp == v2.yp;
164}
165
166constexpr inline bool operator!=(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
167{
168 return v1.xp != v2.xp || v1.yp != v2.yp;
169}
170
171constexpr inline const QDoubleVector2D operator+(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
172{
173 return QDoubleVector2D(v1.xp + v2.xp, v1.yp + v2.yp);
174}
175
176constexpr inline const QDoubleVector2D operator-(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
177{
178 return QDoubleVector2D(v1.xp - v2.xp, v1.yp - v2.yp);
179}
180
181constexpr inline const QDoubleVector2D operator*(double factor, const QDoubleVector2D &vector)
182{
183 return QDoubleVector2D(vector.xp * factor, vector.yp * factor);
184}
185
186constexpr inline const QDoubleVector2D operator*(const QDoubleVector2D &vector, double factor)
187{
188 return QDoubleVector2D(vector.xp * factor, vector.yp * factor);
189}
190
191constexpr inline const QDoubleVector2D operator*(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
192{
193 return QDoubleVector2D(v1.xp * v2.xp, v1.yp * v2.yp);
194}
195
196constexpr inline const QDoubleVector2D operator-(const QDoubleVector2D &vector)
197{
198 return QDoubleVector2D(-vector.xp, -vector.yp);
199}
200
201constexpr inline const QDoubleVector2D operator/(const QDoubleVector2D &vector, double divisor)
202{
203 return QDoubleVector2D(vector.xp / divisor, vector.yp / divisor);
204}
205
206constexpr inline bool qFuzzyCompare(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
207{
208 return QtPrivate::fuzzyCompare(v1.xp, v2.xp) && QtPrivate::fuzzyCompare(v1.yp, v2.yp);
209}
210
211constexpr inline QPointF QDoubleVector2D::toPointF() const
212{
213 return QPointF(qreal(xp), qreal(yp));
214}
215
216#ifndef QT_NO_DEBUG_STREAM
217Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QDoubleVector2D &vector);
218#endif
219
220#ifndef QT_NO_DATASTREAM
221Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &, const QDoubleVector2D &);
222Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &, QDoubleVector2D &);
223#endif
224
225QT_END_NAMESPACE
226
227#endif
friend bool operator==(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
Returns true if lhs and rhs are equal, otherwise returns false.
Definition qbytearray.h:802
friend bool operator!=(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
Returns true if lhs and rhs are different, otherwise returns false.
Definition qbytearray.h:813
\inmodule QtCore\reentrant
Definition qdatastream.h:50
Combined button and popup list for selecting options.
QVariant operator*(const QVariant &arg1, double multiplier)
QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
Definition qbytearray.h:705
Q_DECLARE_TYPEINFO(QByteArrayView, Q_PRIMITIVE_TYPE)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2582
QDoubleMatrix4x4 operator/(const QDoubleMatrix4x4 &matrix, double divisor)
QDoubleMatrix4x4 operator*(double factor, const QDoubleMatrix4x4 &matrix)
QDebug operator<<(QDebug dbg, const QFileInfo &fi)
bool qFuzzyCompare(const QMatrix4x4 &m1, const QMatrix4x4 &m2) noexcept
QMatrix4x4 operator*(const QMatrix4x4 &m1, const QMatrix4x4 &m2)
Definition qmatrix4x4.h:612
QMatrix4x4 operator-(const QMatrix4x4 &matrix)
Definition qmatrix4x4.h:860
QMatrix4x4 operator-(const QMatrix4x4 &m1, const QMatrix4x4 &m2)
Definition qmatrix4x4.h:589
QDataStream & operator<<(QDataStream &stream, const QImage &image)
[0]
Definition qimage.cpp:4010
QDataStream & operator>>(QDataStream &stream, QImage &image)
Definition qimage.cpp:4036