WebTouchEvent WebEventFactory::createWebTouchEvent(const EwkTouchEvent* event, const AffineTransform& toWebContent) { API::Array* touchPointsArray = toImpl(event->touchPoints()); size_t size = touchPointsArray->size(); Vector<WebPlatformTouchPoint> touchPoints; touchPoints.reserveInitialCapacity(size); for (size_t i = 0; i < size; ++i) { if (EwkTouchPoint* point = touchPointsArray->at<EwkTouchPoint>(i)) touchPoints.uncheckedAppend(WebPlatformTouchPoint(point->id(), toWebPlatformTouchPointState(point->state()), toIntPoint(point->screenPosition()), toWebContent.mapPoint(toIntPoint(point->position())), toIntSize(point->radius()), point->rotationAngle(), point->forceFactor())); } return WebTouchEvent(toWebEventType(event->eventType()), touchPoints, toWebEventModifiers(event->modifiers()), event->timestamp()); }
WebTouchEvent WebEventFactory::createWebTouchEvent(const QTouchEvent* event, const QTransform& fromItemTransform) { WebEvent::Type type = webEventTypeForEvent(event); WebPlatformTouchPoint::TouchPointState state = static_cast<WebPlatformTouchPoint::TouchPointState>(0); unsigned int id; WebEvent::Modifiers modifiers = modifiersForEvent(event->modifiers()); double timestamp = currentTimeForEvent(event); const QList<QTouchEvent::TouchPoint>& points = event->touchPoints(); Vector<WebPlatformTouchPoint, 6> m_touchPoints; for (int i = 0; i < points.count(); ++i) { const QTouchEvent::TouchPoint& touchPoint = points.at(i); id = static_cast<unsigned>(touchPoint.id()); switch (touchPoint.state()) { case Qt::TouchPointReleased: state = WebPlatformTouchPoint::TouchReleased; break; case Qt::TouchPointMoved: state = WebPlatformTouchPoint::TouchMoved; break; case Qt::TouchPointPressed: state = WebPlatformTouchPoint::TouchPressed; break; case Qt::TouchPointStationary: state = WebPlatformTouchPoint::TouchStationary; break; default: ASSERT_NOT_REACHED(); break; } // Qt does not have a Qt::TouchPointCancelled point state, so if we receive a touch cancel event, // simply cancel all touch points here. if (type == WebEvent::TouchCancel) state = WebPlatformTouchPoint::TouchCancelled; IntSize radius(touchPoint.rect().width()/ 2, touchPoint.rect().height() / 2); m_touchPoints.append(WebPlatformTouchPoint(id, state, touchPoint.screenPos().toPoint(), fromItemTransform.map(touchPoint.pos()).toPoint(), radius, 0.0, touchPoint.pressure())); } return WebTouchEvent(type, m_touchPoints, modifiers, timestamp); }
WebTouchEvent WebEventFactory::createWebTouchEvent(const NIXTouchEvent& event) { WebEvent::Type type = convertToWebEventType(event.type); Vector<WebPlatformTouchPoint> touchPoints; WebEvent::Modifiers modifiers = convertToWebEventModifiers(event.modifiers); double timestamp = event.timestamp; for (unsigned i = 0; i < event.numTouchPoints; ++i) { const NIXTouchPoint& touch = event.touchPoints[i]; uint32_t id = static_cast<uint32_t>(touch.id); WebPlatformTouchPoint::TouchPointState state = convertToWebTouchState(touch.state); IntPoint position = IntPoint(touch.x, touch.y); IntPoint globalPosition = IntPoint(touch.globalX, touch.globalY); IntSize radius = IntSize(touch.horizontalRadius, touch.verticalRadius); float rotationAngle = touch.rotationAngle; float force = touch.pressure; WebPlatformTouchPoint webTouchPoint = WebPlatformTouchPoint(id, state, globalPosition, position, radius, rotationAngle, force); touchPoints.append(webTouchPoint); } return WebTouchEvent(type, touchPoints, modifiers, timestamp); }
WebTouchEvent WebEventFactory::createWebTouchEvent(const QTouchEvent* event) { WebEvent::Type type = webEventTypeForEvent(event); WebPlatformTouchPoint::TouchPointState state = static_cast<WebPlatformTouchPoint::TouchPointState>(0); unsigned int id; WebEvent::Modifiers modifiers = modifiersForEvent(event->modifiers()); double timestamp = currentTimeForEvent(event); const QList<QTouchEvent::TouchPoint>& points = event->touchPoints(); Vector<WebPlatformTouchPoint> m_touchPoints; for (int i = 0; i < points.count(); ++i) { id = static_cast<unsigned>(points.at(i).id()); switch (points.at(i).state()) { case Qt::TouchPointReleased: state = WebPlatformTouchPoint::TouchReleased; break; case Qt::TouchPointMoved: state = WebPlatformTouchPoint::TouchMoved; break; case Qt::TouchPointPressed: state = WebPlatformTouchPoint::TouchPressed; break; case Qt::TouchPointStationary: state = WebPlatformTouchPoint::TouchStationary; break; default: ASSERT_NOT_REACHED(); break; } m_touchPoints.append(WebPlatformTouchPoint(id, state, points.at(i).screenPos().toPoint(), points.at(i).pos().toPoint())); } return WebTouchEvent(type, m_touchPoints, modifiers, timestamp); }