diff options
Diffstat (limited to 'src/render/picking')
-rw-r--r-- | src/render/picking/qpickevent.cpp | 97 | ||||
-rw-r--r-- | src/render/picking/qpickevent.h | 26 | ||||
-rw-r--r-- | src/render/picking/qpickevent_p.h | 6 | ||||
-rw-r--r-- | src/render/picking/qpicktriangleevent.cpp | 22 | ||||
-rw-r--r-- | src/render/picking/qpicktriangleevent.h | 2 |
5 files changed, 149 insertions, 4 deletions
diff --git a/src/render/picking/qpickevent.cpp b/src/render/picking/qpickevent.cpp index ee9d6e867..c29c13cff 100644 --- a/src/render/picking/qpickevent.cpp +++ b/src/render/picking/qpickevent.cpp @@ -77,16 +77,34 @@ QPickEvent::QPickEvent() \fn Qt3DRender::QPickEvent::QPickEvent(const QPointF &position, const QVector3D &intersection, const QVector3D &localIntersection, float distance) Constructs a new QPickEvent with the given parameters: \a position, \a intersection, \a localIntersection and \a distance */ -QPickEvent::QPickEvent(const QPointF &position, const QVector3D &intersection, const QVector3D &localIntersection, float distance) +// NOTE: remove in Qt6 +QPickEvent::QPickEvent(const QPointF &position, const QVector3D &worldIntersection, const QVector3D &localIntersection, float distance) : QObject(*new QPickEventPrivate()) { Q_D(QPickEvent); d->m_position = position; d->m_distance = distance; - d->m_worldIntersection = intersection; + d->m_worldIntersection = worldIntersection; d->m_localIntersection = localIntersection; } +/*! + \fn Qt3DRender::QPickEvent::QPickEvent(const QPointF &position, const QVector3D &intersection, const QVector3D &localIntersection, float distance) + Constructs a new QPickEvent with the given parameters: \a position, \a intersection, \a localIntersection, \a distance, \a button, \a buttons and \a modifiers + */ +QPickEvent::QPickEvent(const QPointF &position, const QVector3D &worldIntersection, const QVector3D &localIntersection, float distance, QPickEvent::Buttons button, int buttons, int modifiers) + : QObject(*new QPickEventPrivate()) +{ + Q_D(QPickEvent); + d->m_position = position; + d->m_distance = distance; + d->m_worldIntersection = worldIntersection; + d->m_localIntersection = localIntersection; + d->m_button = button; + d->m_buttons = buttons; + d->m_modifiers = modifiers; +} + /*! \internal */ QPickEvent::QPickEvent(QObjectPrivate &dd, QObject *parent) : QObject(dd, parent) @@ -200,6 +218,81 @@ QVector3D QPickEvent::localIntersection() const return d->m_localIntersection; } +/*! + * \enum Qt3DRender::QPickEvent::Buttons + * + * \value LeftButton + * \value RightButton + * \value MiddleButton + * \value BackButton + * \value NoButton + */ + +/*! + \qmlproperty bool Qt3D.Render::PickEvent::button + Specifies mouse button that caused the event +*/ +/*! + \property Qt3DRender::QPickEvent::button + Specifies mouse button that caused the event + */ +/*! + * \brief QPickEvent::button + * \return mouse button that caused the event + */ +QPickEvent::Buttons QPickEvent::button() const +{ + Q_D(const QPickEvent); + return d->m_button; +} + +/*! + \qmlproperty bool Qt3D.Render::PickEvent::buttons + Specifies state of the mouse buttons for the event +*/ +/*! + \property Qt3DRender::QPickEvent::buttons + Specifies state of the mouse buttons for the event + */ +/*! + * \brief QPickEvent::buttons + * \return bitfield to be used to check for mouse buttons that may be accompanying the pick event. + */ +int QPickEvent::buttons() const +{ + Q_D(const QPickEvent); + return d->m_buttons; +} + +/*! + * \enum Qt3DRender::QPickEvent::Modifiers + * + * \value NoModifier + * \value ShiftModifier + * \value ControlModifier + * \value AltModifier + * \value MetaModifier + * \value KeypadModifier + */ + +/*! + \qmlproperty bool Qt3D.Render::PickEvent::modifiers + Specifies state of the mouse buttons for the event +*/ +/*! + \property Qt3DRender::QPickEvent::modifiers + Specifies state of the mouse buttons for the event + */ +/*! + * \brief QPickEvent::modifiers + * \return bitfield to be used to check for keyboard modifiers that may be accompanying the pick event. + */ +int QPickEvent::modifiers() const +{ + Q_D(const QPickEvent); + return d->m_modifiers; +} + } // Qt3DRender QT_END_NAMESPACE diff --git a/src/render/picking/qpickevent.h b/src/render/picking/qpickevent.h index 431fe1927..cd925f7ea 100644 --- a/src/render/picking/qpickevent.h +++ b/src/render/picking/qpickevent.h @@ -62,9 +62,32 @@ class QT3DRENDERSHARED_EXPORT QPickEvent : public QObject Q_PROPERTY(float distance READ distance CONSTANT) Q_PROPERTY(QVector3D localIntersection READ localIntersection CONSTANT) Q_PROPERTY(QVector3D worldIntersection READ worldIntersection CONSTANT) + Q_PROPERTY(Qt3DRender::QPickEvent::Buttons button READ button CONSTANT) + Q_PROPERTY(int buttons READ buttons CONSTANT) + Q_PROPERTY(int modifiers READ modifiers CONSTANT) public: + enum Buttons { + LeftButton = Qt::LeftButton, + RightButton = Qt::RightButton, + MiddleButton = Qt::MiddleButton, + BackButton = Qt::BackButton, + NoButton = Qt::NoButton + }; + Q_ENUM(Buttons) + + enum Modifiers { + NoModifier = Qt::NoModifier, + ShiftModifier = Qt::ShiftModifier, + ControlModifier = Qt::ControlModifier, + AltModifier = Qt::AltModifier, + MetaModifier = Qt::MetaModifier, + KeypadModifier = Qt::KeypadModifier + }; + Q_ENUM(Modifiers) + QPickEvent(); QPickEvent(const QPointF &position, const QVector3D& worldIntersection, const QVector3D& localIntersection, float distance); + QPickEvent(const QPointF &position, const QVector3D& worldIntersection, const QVector3D& localIntersection, float distance, Buttons button, int buttons, int modifiers); ~QPickEvent(); bool isAccepted() const; @@ -77,6 +100,9 @@ public: float distance() const; QVector3D worldIntersection() const; QVector3D localIntersection() const; + Buttons button() const; + int buttons() const; + int modifiers() const; Q_SIGNALS: void acceptedChanged(bool accepted); diff --git a/src/render/picking/qpickevent_p.h b/src/render/picking/qpickevent_p.h index fd9ed36a2..399795619 100644 --- a/src/render/picking/qpickevent_p.h +++ b/src/render/picking/qpickevent_p.h @@ -61,6 +61,9 @@ public: : QObjectPrivate() , m_accepted(true) , m_distance(-1.f) + , m_button(QPickEvent::NoButton) + , m_buttons(QPickEvent::NoButton) + , m_modifiers(QPickEvent::NoModifier) { } @@ -69,6 +72,9 @@ public: QVector3D m_worldIntersection; QVector3D m_localIntersection; float m_distance; + QPickEvent::Buttons m_button; + int m_buttons; + int m_modifiers; }; } // Qt3DRender diff --git a/src/render/picking/qpicktriangleevent.cpp b/src/render/picking/qpicktriangleevent.cpp index b636638e6..50cafb8d9 100644 --- a/src/render/picking/qpicktriangleevent.cpp +++ b/src/render/picking/qpicktriangleevent.cpp @@ -102,14 +102,15 @@ QPickTriangleEvent::QPickTriangleEvent() * \a vertex2Index and * \a vertex3Index */ -QPickTriangleEvent::QPickTriangleEvent(const QPointF &position, const QVector3D &intersection, const QVector3D &localIntersection, float distance, +// NOTE: remove in Qt6 +QPickTriangleEvent::QPickTriangleEvent(const QPointF &position, const QVector3D &worldIntersection, const QVector3D &localIntersection, float distance, uint triangleIndex, uint vertex1Index, uint vertex2Index, uint vertex3Index) : QPickEvent(*new QPickTriangleEventPrivate()) { Q_D(QPickTriangleEvent); d->m_position = position; d->m_distance = distance; - d->m_worldIntersection = intersection; + d->m_worldIntersection = worldIntersection; d->m_localIntersection = localIntersection; d->m_triangleIndex = triangleIndex; d->m_vertex1Index = vertex1Index; @@ -117,6 +118,23 @@ QPickTriangleEvent::QPickTriangleEvent(const QPointF &position, const QVector3D d->m_vertex3Index = vertex3Index; } +QPickTriangleEvent::QPickTriangleEvent(const QPointF &position, const QVector3D &worldIntersection, const QVector3D &localIntersection, float distance, uint triangleIndex, uint vertex1Index, uint vertex2Index, uint vertex3Index, QPickEvent::Buttons button, int buttons, int modifiers) + : QPickEvent(*new QPickTriangleEventPrivate()) +{ + Q_D(QPickTriangleEvent); + d->m_position = position; + d->m_distance = distance; + d->m_worldIntersection = worldIntersection; + d->m_localIntersection = localIntersection; + d->m_triangleIndex = triangleIndex; + d->m_vertex1Index = vertex1Index; + d->m_vertex2Index = vertex2Index; + d->m_vertex3Index = vertex3Index; + d->m_button = button; + d->m_buttons = buttons; + d->m_modifiers = modifiers; +} + /*! \internal */ QPickTriangleEvent::~QPickTriangleEvent() { diff --git a/src/render/picking/qpicktriangleevent.h b/src/render/picking/qpicktriangleevent.h index e60a81dd6..7cafa1aeb 100644 --- a/src/render/picking/qpicktriangleevent.h +++ b/src/render/picking/qpicktriangleevent.h @@ -58,6 +58,8 @@ public: QPickTriangleEvent(); QPickTriangleEvent(const QPointF &position, const QVector3D& worldIntersection, const QVector3D& localIntersection, float distance, uint triangleIndex, uint vertex1Index, uint vertex2Index, uint vertex3Index); + QPickTriangleEvent(const QPointF &position, const QVector3D& worldIntersection, const QVector3D& localIntersection, float distance, + uint triangleIndex, uint vertex1Index, uint vertex2Index, uint vertex3Index, Buttons button, int buttons, int modifiers); ~QPickTriangleEvent(); public: |