48void QQuickHandlerPoint::reset()
51 m_device = QPointingDevice::primaryPointingDevice();
52 m_uniqueId = QPointingDeviceUniqueId();
53 m_position = QPointF();
54 m_scenePosition = QPointF();
55 m_pressPosition = QPointF();
56 m_scenePressPosition = QPointF();
57 m_sceneGrabPosition = QPointF();
58 m_velocity = QVector2D();
61 m_ellipseDiameters = QSizeF();
62 m_pressedButtons = Qt::NoButton;
63 m_pressedModifiers = Qt::NoModifier;
66void QQuickHandlerPoint::reset(
const QPointerEvent *event,
const QEventPoint &point)
68 const bool isTouch = QQuickDeliveryAgentPrivate::isTouchEvent(event);
70 m_device = event->pointingDevice();
71 const auto state = (isTouch ?
static_cast<
const QTouchEvent *>(event)->touchPointStates() : point.state());
72 if (state.testFlag(QEventPoint::Pressed)) {
73 m_pressPosition = point.position();
74 m_scenePressPosition = point.scenePosition();
77 m_pressedButtons =
static_cast<
const QSinglePointEvent *>(event)->buttons();
78 m_pressedModifiers = event->modifiers();
80 m_uniqueId = point.uniqueId();
81 m_rotation = point.rotation();
82 m_pressure = point.pressure();
83 m_ellipseDiameters = point.ellipseDiameters();
84#if QT_CONFIG(tabletevent)
85 }
else if (QQuickDeliveryAgentPrivate::isTabletEvent(event)) {
86 m_uniqueId = event->pointingDevice()->uniqueId();
87 m_rotation = point.rotation();
88 m_pressure = point.pressure();
89 m_ellipseDiameters = QSizeF();
92 m_uniqueId = event->pointingDevice()->uniqueId();
94 m_pressure = m_pressedButtons ? 1 : 0;
95 m_ellipseDiameters = QSizeF();
97 m_position = point.position();
98 m_scenePosition = point.scenePosition();
99 if (point.state() == QEventPoint::Updated)
100 m_velocity = point.velocity();
103void QQuickHandlerPoint::reset(
const QVector<QQuickHandlerPoint> &points)
105 if (points.isEmpty()) {
106 qWarning(
"reset: no points");
109 if (points.size() == 1) {
110 *
this = points.first();
117 QPointF scenePressPosSum;
118 QVector2D velocitySum;
119 qreal pressureSum = 0;
120 QSizeF ellipseDiameterSum;
121 for (
const QQuickHandlerPoint &point : points) {
122 posSum += point.position();
123 scenePosSum += point.scenePosition();
124 pressPosSum += point.pressPosition();
125 scenePressPosSum += point.scenePressPosition();
126 velocitySum += point.velocity();
127 pressureSum += point.pressure();
128 ellipseDiameterSum += point.ellipseDiameters();
132 m_uniqueId = QPointingDeviceUniqueId();
134 m_pressedButtons = points.first().pressedButtons();
135 m_pressedModifiers = points.first().modifiers();
136 m_position = posSum / points.size();
137 m_scenePosition = scenePosSum / points.size();
138 m_pressPosition = pressPosSum / points.size();
139 m_scenePressPosition = scenePressPosSum / points.size();
140 m_velocity = velocitySum / points.size();
142 m_pressure = pressureSum / points.size();
143 m_ellipseDiameters = ellipseDiameterSum / points.size();