Revision control
Copy as Markdown
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
// Qt-Security score:significant reason:default
#ifndef QQUICK3DXRSPATIALANCHOR_P_H
#define QQUICK3DXRSPATIALANCHOR_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtQuick3DXr/qtquick3dxrglobal.h>
#include <QtQuick3DXr/private/qtquick3dxrglobal_p.h>
#include <QtCore/qobject.h>
#include <QtCore/quuid.h>
#include <QtCore/qstring.h>
#include <QtGui/qvectornd.h>
#include <QtGui/qquaternion.h>
#include <QtQmlIntegration/qqmlintegration.h>
QT_BEGIN_NAMESPACE
class QQuick3DXrSpatialAnchor : public QObject
{
Q_OBJECT
Q_PROPERTY(bool has2DBounds READ has2DBounds NOTIFY has2DBoundsChanged FINAL)
Q_PROPERTY(bool has3DBounds READ has3DBounds NOTIFY has3DBoundsChanged FINAL)
Q_PROPERTY(QVector2D offset2D READ offset2D NOTIFY offset2DChanged FINAL)
Q_PROPERTY(QVector2D extent2D READ extent2D NOTIFY extent2DChanged FINAL)
Q_PROPERTY(QVector3D offset3D READ offset3D NOTIFY offset3DChanged FINAL)
Q_PROPERTY(QVector3D extent3D READ extent3D NOTIFY extent3DChanged FINAL)
Q_PROPERTY(QVector3D position READ position NOTIFY positionChanged FINAL)
Q_PROPERTY(QQuaternion rotation READ rotation NOTIFY rotationChanged FINAL)
Q_PROPERTY(Classification classification READ classification NOTIFY classificationChanged FINAL)
Q_PROPERTY(QString classificationString READ classificationString NOTIFY classificationStringChanged FINAL)
Q_PROPERTY(QString identifier READ identifier CONSTANT)
QML_NAMED_ELEMENT(XrSpatialAnchor)
QML_UNCREATABLE("Spatial anchor objects cannot be created in QML");
QML_ADDED_IN_VERSION(6, 8)
public:
enum class Classification {
Unknown,
Wall,
Ceiling,
Floor,
Table,
Seat,
Window,
Door,
Other,
};
Q_ENUM(Classification)
QQuick3DXrSpatialAnchor(QtQuick3DXr::XrSpaceId space, QUuid &uuid, QObject *parent = nullptr);
~QQuick3DXrSpatialAnchor() override;
QVector3D offset3D() const;
void setOffset3D(const QVector3D &newOffset);
QVector3D extent3D() const;
void setExtent3D(const QVector3D &newExtent);
QVector3D position() const;
void setPosition(const QVector3D &newPosition);
QQuaternion rotation() const;
void setRotation(const QQuaternion &newRotation);
Classification classification() const;
void setClassification(Classification newClassification);
QString classificationString() const;
void setClassificationString(const QString &newClassificationString);
bool has2DBounds() const;
void setBounds2D(const QVector2D &offset, const QVector2D &extent);
bool has3DBounds() const;
void setBounds3D(const QVector3D &offset, const QVector3D &extent);
QVector2D offset2D() const;
QVector2D extent2D() const;
QString identifier() const;
QSet<QUuid> roomLayoutUuids() const;
void setRoomLayoutUuids(const QSet<QUuid> &newRoomLayoutUuids);
QSet<QUuid> spaceContainerUuids() const;
void setSpaceContainerUuids(const QSet<QUuid> &newSpaceContainerUuids);
QtQuick3DXr::XrSpaceId space() const { return m_space; }
signals:
void offset3DChanged();
void extent3DChanged();
void positionChanged();
void rotationChanged();
void classificationChanged();
void classificationStringChanged();
void has2DBoundsChanged();
void has3DBoundsChanged();
void offset2DChanged();
void extent2DChanged();
private:
// Note: internally, and from C++ we still store this as a QUuid,
// so this just keeps the compatibility and avoid conversions in
// in the managers.
friend class QQuick3DXrAnchorManager;
QUuid uuid() const { return m_uuid; }
QtQuick3DXr::XrSpaceId m_space { };
QUuid m_uuid;
QVector3D m_offset3D;
QVector3D m_extent3D;
QVector3D m_position;
QQuaternion m_rotation;
Classification m_classification { Classification::Unknown };
QString m_classificationString;
QSet<QUuid> m_roomLayoutUuids;
QSet<QUuid> m_spaceContainerUuids;
bool m_has2DBounds = false;
bool m_has3DBounds = false;
QVector2D m_offset2D;
QVector2D m_extent2D;
};
QT_END_NAMESPACE
#endif // QQUICK3DXRSPATIALANCHOR_P_H