1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// clang-format off
// SPDX-FileCopyrightText: 2023 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
// clang-format on
// SPDX-FileContributor: Andrew Hayzen <andrew.hayzen@kdab.com>
//
// SPDX-License-Identifier: MIT OR Apache-2.0
#include "cxx-qt-lib/qvector3d.h"
#include <cxx-qt-lib/assertion_utils.h>
// QVector3D has one member, which is an array of three floats
// https://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/math3d/qvector3d.h?h=v5.15.6-lts-lgpl#n141
//
// https://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/math3d/qvectornd.h?h=v6.2.4#n334
assert_alignment_and_size(QVector3D, { float a0[3]; });
static_assert(::std::is_trivially_copyable<QVector3D>::value,
"QVector3D should be trivially copyable");
namespace rust {
namespace cxxqtlib1 {
// Qt 6 uses by-value, Qt 5 uses by-ref
float
qvector3DDistanceToLine(const QVector3D& vector,
QVector3D point,
QVector3D direction)
{
return vector.distanceToLine(point, direction);
}
float
qvector3DDistanceToPlane(const QVector3D& vector,
QVector3D plane,
QVector3D normal)
{
return vector.distanceToPlane(plane, normal);
}
float
qvector3DDistanceToPoint(const QVector3D& vector, QVector3D point)
{
return vector.distanceToPoint(point);
}
}
}