KanoopGuiQt 1.3.0
Qt GUI utility library
Loading...
Searching...
No Matches
vector3d.h
1#ifndef VECTOR3D_H
2#define VECTOR3D_H
3#include <Kanoop/gui/libkanoopgui.h>
4#include <QVector3D>
5
6/**
7 * @brief QVector3D subclass with string serialization support.
8 *
9 * Mirrors all QVector3D constructors and adds toString() / fromString()
10 * for human-readable "x, y, z" serialization.
11 */
12class LIBKANOOPGUI_EXPORT Vector3D : public QVector3D
13{
14public:
15 /** @brief Default constructor — creates a zero vector. */
16 constexpr Vector3D() noexcept :
17 QVector3D() {}
18
19 /**
20 * @brief Construct with a Qt initialization sentinel.
21 * @param initialization Qt::Initialization value
22 */
23 explicit Vector3D(Qt::Initialization initialization) noexcept :
24 QVector3D(initialization) {}
25
26 /**
27 * @brief Construct with explicit x, y, z components.
28 * @param xpos X component
29 * @param ypos Y component
30 * @param zpos Z component
31 */
32 constexpr Vector3D(float xpos, float ypos, float zpos) noexcept :
33 QVector3D(xpos, ypos, zpos) {}
34
35 /**
36 * @brief Construct from a QPoint (z = 0).
37 * @param point Source point
38 */
39 constexpr explicit Vector3D(QPoint point) noexcept :
40 QVector3D(point) {}
41
42 /**
43 * @brief Construct from a QPointF (z = 0).
44 * @param point Source point
45 */
46 constexpr explicit Vector3D(QPointF point) noexcept :
47 QVector3D(point) {}
48
49#ifndef QT_NO_VECTOR2D
50 /**
51 * @brief Construct from a QVector2D (z = 0).
52 * @param vector Source 2D vector
53 */
54 constexpr explicit Vector3D(QVector2D vector) noexcept :
55 QVector3D(vector) {}
56
57 /**
58 * @brief Construct from a QVector2D with an explicit z component.
59 * @param vector Source 2D vector
60 * @param zpos Z component
61 */
62 constexpr Vector3D(QVector2D vector, float zpos) noexcept :
63 QVector3D(vector, zpos) {}
64#endif
65
66#ifndef QT_NO_VECTOR4D
67 /**
68 * @brief Construct from a QVector4D (w is discarded).
69 * @param vector Source 4D vector
70 */
71 constexpr explicit Vector3D(QVector4D vector) noexcept :
72 QVector3D(vector) {}
73#endif
74
75 /**
76 * @brief Serialize the vector to a human-readable string.
77 * @return String of the form "x, y, z"
78 */
79 QString toString() const { return QString("%1, %2, %3").arg(x()).arg(y()).arg(z()); }
80
81 /**
82 * @brief Deserialize a vector from a "x, y, z" string.
83 * @param value String to parse
84 * @return Parsed Vector3D
85 */
86 static Vector3D fromString(const QString& value);
87
88};
89
90#endif // VECTOR3D_H
QVector3D subclass with string serialization support.
Definition vector3d.h:13
Vector3D(Qt::Initialization initialization) noexcept
Construct with a Qt initialization sentinel.
Definition vector3d.h:23
constexpr Vector3D(QPointF point) noexcept
Construct from a QPointF (z = 0).
Definition vector3d.h:46
constexpr Vector3D() noexcept
Default constructor — creates a zero vector.
Definition vector3d.h:16
constexpr Vector3D(QPoint point) noexcept
Construct from a QPoint (z = 0).
Definition vector3d.h:39
constexpr Vector3D(QVector2D vector) noexcept
Construct from a QVector2D (z = 0).
Definition vector3d.h:54
static Vector3D fromString(const QString &value)
Deserialize a vector from a "x, y, z" string.
constexpr Vector3D(QVector2D vector, float zpos) noexcept
Construct from a QVector2D with an explicit z component.
Definition vector3d.h:62
QString toString() const
Serialize the vector to a human-readable string.
Definition vector3d.h:79
constexpr Vector3D(QVector4D vector) noexcept
Construct from a QVector4D (w is discarded).
Definition vector3d.h:71
constexpr Vector3D(float xpos, float ypos, float zpos) noexcept
Construct with explicit x, y, z components.
Definition vector3d.h:32