From 00faefe5aca91eca90525038b083777bec04608d Mon Sep 17 00:00:00 2001 From: zhouchaobo Date: Mon, 23 Sep 2024 16:26:57 +0800 Subject: [PATCH] capi gesture add axis event type rawInputEvent Signed-off-by: zhouchaobo Change-Id: Id6a63296af098da096562116464f1cca127a5630 --- .../ohos/entrance/touch_event_convertor.cpp | 5 + .../entrance/touch_event_convertor.cpp | 2 + .../gestures/recognizers/click_recognizer.cpp | 1 + .../recognizers/long_press_recognizer.cpp | 1 + .../recognizers/multi_fingers_recognizer.cpp | 10 + .../gestures/recognizers/pan_recognizer.cpp | 1 + .../gestures/recognizers/pinch_recognizer.cpp | 2 + .../recognizers/rotation_recognizer.cpp | 2 + .../gestures/recognizers/swipe_recognizer.cpp | 1 + .../core/interfaces/arkoala/arkoala_api.h | 11 ++ .../native/node/node_gesture_modifier.cpp | 44 ++++- .../native/node/touch_event_convertor.h | 1 + interfaces/native/event/ui_input_event.cpp | 175 ++++++++++++++---- interfaces/native/event/ui_input_event_impl.h | 1 + interfaces/native/node/gesture_impl.cpp | 5 +- 15 files changed, 225 insertions(+), 37 deletions(-) diff --git a/adapter/ohos/entrance/touch_event_convertor.cpp b/adapter/ohos/entrance/touch_event_convertor.cpp index a0105c6a226..8b06001aa1a 100644 --- a/adapter/ohos/entrance/touch_event_convertor.cpp +++ b/adapter/ohos/entrance/touch_event_convertor.cpp @@ -29,4 +29,9 @@ void ConvertToMouseEvent(MouseEvent& mouseEvent, const std::shared_ptrIsScenceBoardWindow()); } + +void ConvertToAxisEvent(AxisEvent& event, const std::shared_ptr& srcPointerEvent) +{ + Platform::ConvertAxisEvent(srcPointerEvent, event); +} } \ No newline at end of file diff --git a/adapter/preview/entrance/touch_event_convertor.cpp b/adapter/preview/entrance/touch_event_convertor.cpp index 7b3317c795c..90b95bea977 100644 --- a/adapter/preview/entrance/touch_event_convertor.cpp +++ b/adapter/preview/entrance/touch_event_convertor.cpp @@ -22,4 +22,6 @@ TouchEvent ConvertToTouchEvent(const std::shared_ptr& srcPoin } void ConvertToMouseEvent(MouseEvent& mouseEvent, const std::shared_ptr& srcPointerEvent) {} + +void ConvertToAxisEvent(AxisEvent& event, const std::shared_ptr& srcPointerEvent) {} } \ No newline at end of file diff --git a/frameworks/core/components_ng/gestures/recognizers/click_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/click_recognizer.cpp index 98f6df36384..c7600c6ed0a 100644 --- a/frameworks/core/components_ng/gestures/recognizers/click_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/click_recognizer.cpp @@ -463,6 +463,7 @@ GestureEvent ClickRecognizer::GetGestureEventInfo() #endif info.SetPointerEvent(lastPointEvent_); info.SetPressedKeyCodes(touchPoint.pressedKeyCodes_); + info.SetInputEventType(inputEventType_); return info; } diff --git a/frameworks/core/components_ng/gestures/recognizers/long_press_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/long_press_recognizer.cpp index a77be593b77..9fc36ad09a2 100644 --- a/frameworks/core/components_ng/gestures/recognizers/long_press_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/long_press_recognizer.cpp @@ -362,6 +362,7 @@ void LongPressRecognizer::SendCallbackMsg( info.SetPointerEvent(lastPointEvent_); Platform::UpdatePressedKeyCodes(lastTouchEvent_.pressedKeyCodes_); info.SetPressedKeyCodes(lastTouchEvent_.pressedKeyCodes_); + info.SetInputEventType(inputEventType_); // callback may be overwritten in its invoke so we copy it first auto callbackFunction = *callback; callbackFunction(info); diff --git a/frameworks/core/components_ng/gestures/recognizers/multi_fingers_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/multi_fingers_recognizer.cpp index 137090a27a2..6037c31436e 100644 --- a/frameworks/core/components_ng/gestures/recognizers/multi_fingers_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/multi_fingers_recognizer.cpp @@ -110,5 +110,15 @@ void MultiFingersRecognizer::UpdateTouchPointWithAxisEvent(const AxisEvent& even touchPoints_[event.id].sourceType = event.sourceType; touchPoints_[event.id].sourceTool = event.sourceTool; touchPoints_[event.id].originalId = event.originalId; + TouchPoint point; + point.id = event.id; + point.x = event.x; + point.y = event.y; + point.screenX = event.screenX; + point.screenY = event.screenY; + point.sourceTool = event.sourceTool; + point.originalId = event.originalId; + touchPoints_[event.id].pointers = { point }; + touchPoints_[event.id].pointerEvent = event.pointerEvent; } } // namespace OHOS::Ace::NG diff --git a/frameworks/core/components_ng/gestures/recognizers/pan_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/pan_recognizer.cpp index ccaa45cf081..ba835f20ac2 100644 --- a/frameworks/core/components_ng/gestures/recognizers/pan_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/pan_recognizer.cpp @@ -435,6 +435,7 @@ void PanRecognizer::HandleTouchMoveEvent(const AxisEvent& event) mainDelta_ = GetMainAxisDelta(); averageDistance_ += delta_; + UpdateTouchPointWithAxisEvent(event); UpdateAxisPointInVelocityTracker(event); time_ = event.time; diff --git a/frameworks/core/components_ng/gestures/recognizers/pinch_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/pinch_recognizer.cpp index 37f53654dde..615992e8b98 100644 --- a/frameworks/core/components_ng/gestures/recognizers/pinch_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/pinch_recognizer.cpp @@ -185,6 +185,7 @@ void PinchRecognizer::HandleTouchUpEvent(const AxisEvent& event) if (isPinchEnd_ || event.isRotationEvent) { return; } + UpdateTouchPointWithAxisEvent(event); lastAxisEvent_ = event; if ((refereeState_ != RefereeState::SUCCEED) && (refereeState_ != RefereeState::FAIL)) { Adjudicate(AceType::Claim(this), GestureDisposal::REJECT); @@ -422,6 +423,7 @@ void PinchRecognizer::SendCallbackMsg(const std::unique_ptr& c info.SetPressedKeyCodes(lastTouchEvent_.pressedKeyCodes_); } info.SetPointerEvent(lastPointEvent_); + info.SetInputEventType(inputEventType_); // callback may be overwritten in its invoke so we copy it first auto callbackFunction = *callback; callbackFunction(info); diff --git a/frameworks/core/components_ng/gestures/recognizers/rotation_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/rotation_recognizer.cpp index 49014b0c01e..b43420e3c0d 100644 --- a/frameworks/core/components_ng/gestures/recognizers/rotation_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/rotation_recognizer.cpp @@ -162,6 +162,7 @@ void RotationRecognizer::HandleTouchUpEvent(const AxisEvent& event) if (!event.isRotationEvent) { return; } + UpdateTouchPointWithAxisEvent(event); lastAxisEvent_ = event; if ((refereeState_ != RefereeState::SUCCEED) && (refereeState_ != RefereeState::FAIL)) { Adjudicate(AceType::Claim(this), GestureDisposal::REJECT); @@ -359,6 +360,7 @@ void RotationRecognizer::SendCallbackMsg(const std::unique_ptr info.SetPressedKeyCodes(touchPoint.pressedKeyCodes_); } info.SetPointerEvent(lastPointEvent_); + info.SetInputEventType(inputEventType_); // callback may be overwritten in its invoke so we copy it first auto callbackFunction = *callback; callbackFunction(info); diff --git a/frameworks/core/components_ng/gestures/recognizers/swipe_recognizer.cpp b/frameworks/core/components_ng/gestures/recognizers/swipe_recognizer.cpp index 4f824d0ac72..c91a0ea0531 100644 --- a/frameworks/core/components_ng/gestures/recognizers/swipe_recognizer.cpp +++ b/frameworks/core/components_ng/gestures/recognizers/swipe_recognizer.cpp @@ -400,6 +400,7 @@ void SwipeRecognizer::SendCallbackMsg(const std::unique_ptr& c if (prevAngle_) { info.SetAngle(prevAngle_.value()); } + info.SetInputEventType(inputEventType_); // callback may be overwritten in its invoke so we copy it first auto callbackFunction = *callback; callbackFunction(info); diff --git a/frameworks/core/interfaces/arkoala/arkoala_api.h b/frameworks/core/interfaces/arkoala/arkoala_api.h index 41b5b4e85ca..95969bfd8ac 100644 --- a/frameworks/core/interfaces/arkoala/arkoala_api.h +++ b/frameworks/core/interfaces/arkoala/arkoala_api.h @@ -223,6 +223,16 @@ struct ArkUIMouseEvent { ArkUI_Int32 interceptResult; }; +struct ArkUIAxisEvent { + ArkUI_Int32 action; + ArkUI_Int64 timeStamp; + ArkUITouchPoint actionTouchPoint; + ArkUI_Int32 sourceType; + ArkUI_Float64 horizontalAxis; + ArkUI_Float64 verticalAxis; + ArkUI_Float64 pinchAxisScale; +}; + struct ArkUIDragEvent { void* unifiedData; void* unifiedDataSummary; @@ -1070,6 +1080,7 @@ struct ArkUIAPIEventGestureAsyncEvent { ArkUI_Float32 velocityX; ArkUI_Float32 velocityY; ArkUI_Float32 velocity; + ArkUI_Int32 inputEventType; void* rawPointerEvent; }; diff --git a/frameworks/core/interfaces/native/node/node_gesture_modifier.cpp b/frameworks/core/interfaces/native/node/node_gesture_modifier.cpp index e69d60caac4..df14dc7e36a 100644 --- a/frameworks/core/interfaces/native/node/node_gesture_modifier.cpp +++ b/frameworks/core/interfaces/native/node/node_gesture_modifier.cpp @@ -265,6 +265,19 @@ void GetGestureEvent(ArkUIAPIEventGestureAsyncEvent& ret, GestureEvent& info) ret.pinchCenterY = info.GetPinchCenter().GetY(); ret.speed = info.GetSpeed(); ret.source = static_cast(info.GetSourceDevice()); + switch (info.GetInputEventType()) { + case InputEventType::TOUCH_SCREEN : + ret.inputEventType = static_cast(ARKUI_UIINPUTEVENT_TYPE_TOUCH); + break; + case InputEventType::MOUSE_BUTTON: + ret.inputEventType = static_cast(ARKUI_UIINPUTEVENT_TYPE_MOUSE); + break; + case InputEventType::AXIS : + ret.inputEventType = static_cast(ARKUI_UIINPUTEVENT_TYPE_AXIS); + break; + default: + break; + } } void GetBaseGestureEvent(ArkUIAPIEventGestureAsyncEvent* ret, ArkUITouchEvent& rawInputEvent, @@ -378,6 +391,28 @@ void ConvertIMMEventToMouseEvent(GestureEvent& info, ArkUIMouseEvent& mouseEvent mouseEvent.actionTouchPoint.toolType = static_cast(tempMouseEvent.sourceTool); } +void ConvertIMMEventToAxisEvent(GestureEvent& info, ArkUIAxisEvent& axisEvent) +{ + CHECK_NULL_VOID(info.GetPointerEvent()); + AxisEvent tempAxisEvent; + NG::ConvertToAxisEvent(tempAxisEvent, info.GetPointerEvent()); + auto fingureBegin = std::begin(info.GetFingerList()); + auto fingureEnd = std::end(info.GetFingerList()); + axisEvent.action = static_cast(tempAxisEvent.action); + axisEvent.sourceType = static_cast(tempAxisEvent.sourceType); + axisEvent.timeStamp = tempAxisEvent.time.time_since_epoch().count(); + axisEvent.horizontalAxis = tempAxisEvent.horizontalAxis; + axisEvent.verticalAxis = tempAxisEvent.verticalAxis; + axisEvent.pinchAxisScale = tempAxisEvent.pinchAxisScale; + axisEvent.actionTouchPoint.nodeX = fingureBegin == fingureEnd ? 0.0f : fingureBegin->localLocation_.GetX(); + axisEvent.actionTouchPoint.nodeY = fingureBegin == fingureEnd ? 0.0f : fingureBegin->localLocation_.GetY(); + axisEvent.actionTouchPoint.windowX = fingureBegin == fingureEnd ? 0.0f : fingureBegin->globalLocation_.GetX(); + axisEvent.actionTouchPoint.windowY = fingureBegin == fingureEnd ? 0.0f : fingureBegin->globalLocation_.GetY(); + axisEvent.actionTouchPoint.screenX = fingureBegin == fingureEnd ? 0.0f : fingureBegin->screenLocation_.GetX(); + axisEvent.actionTouchPoint.screenY = fingureBegin == fingureEnd ? 0.0f : fingureBegin->screenLocation_.GetY(); + axisEvent.actionTouchPoint.toolType = static_cast(tempAxisEvent.sourceTool); +} + void SendGestureEvent(GestureEvent& info, int32_t eventKind, void* extraParam) { ArkUINodeEvent eventData; @@ -386,7 +421,14 @@ void SendGestureEvent(GestureEvent& info, int32_t eventKind, void* extraParam) eventData.extraParam = reinterpret_cast(extraParam); eventData.gestureAsyncEvent.subKind = eventKind; GetGestureEvent(eventData.gestureAsyncEvent, info); - if (info.GetSourceDevice() == SourceType::MOUSE) { + if (info.GetInputEventType() == InputEventType::AXIS) { + ArkUIAxisEvent rawInputEvent; + ConvertIMMEventToAxisEvent(info, rawInputEvent); + eventData.gestureAsyncEvent.rawPointerEvent = &rawInputEvent; + SendArkUIAsyncEvent(&eventData); + return; + } + if (info.GetInputEventType() == InputEventType::MOUSE_BUTTON) { ArkUIMouseEvent rawInputEvent; ConvertIMMEventToMouseEvent(info, rawInputEvent); eventData.gestureAsyncEvent.rawPointerEvent = &rawInputEvent; diff --git a/frameworks/core/interfaces/native/node/touch_event_convertor.h b/frameworks/core/interfaces/native/node/touch_event_convertor.h index 7f34b7dc75b..bc7be140413 100644 --- a/frameworks/core/interfaces/native/node/touch_event_convertor.h +++ b/frameworks/core/interfaces/native/node/touch_event_convertor.h @@ -22,5 +22,6 @@ namespace OHOS::Ace::NG { TouchEvent ConvertToTouchEvent(const std::shared_ptr& srcPointerEvent); void ConvertToMouseEvent(MouseEvent& event, const std::shared_ptr& srcPointerEvent); + void ConvertToAxisEvent(AxisEvent& event, const std::shared_ptr& srcPointerEvent); } #endif \ No newline at end of file diff --git a/interfaces/native/event/ui_input_event.cpp b/interfaces/native/event/ui_input_event.cpp index 2b27a08ed00..9a32c80851e 100644 --- a/interfaces/native/event/ui_input_event.cpp +++ b/interfaces/native/event/ui_input_event.cpp @@ -104,6 +104,13 @@ int32_t OH_ArkUI_UIInputEvent_GetSourceType(const ArkUI_UIInputEvent* event) } return mouseEvent->sourceType; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return static_cast(UI_INPUT_EVENT_SOURCE_TYPE_UNKNOWN); + } + return axisEvent->sourceType; + } default: break; } @@ -130,6 +137,13 @@ int32_t OH_ArkUI_UIInputEvent_GetToolType(const ArkUI_UIInputEvent* event) } return OHOS::Ace::NodeModel::ConvertToCInputEventToolType(mouseEvent->actionTouchPoint.toolType); } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return static_cast(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN); + } + return OHOS::Ace::NodeModel::ConvertToCInputEventToolType(axisEvent->actionTouchPoint.toolType); + } default: break; } @@ -172,6 +186,13 @@ int64_t OH_ArkUI_UIInputEvent_GetEventTime(const ArkUI_UIInputEvent* event) } return mouseEvent->timeStamp; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return 0; + } + return axisEvent->timeStamp; + } default: break; } @@ -198,6 +219,13 @@ uint32_t OH_ArkUI_PointerEvent_GetPointerCount(const ArkUI_UIInputEvent* event) } return 1; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return 0; + } + return 1; + } default: break; } @@ -224,6 +252,13 @@ int32_t OH_ArkUI_PointerEvent_GetPointerId(const ArkUI_UIInputEvent* event, uint } return mouseEvent->actionTouchPoint.id; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent || pointerIndex != 0) { + return 0; + } + return axisEvent->actionTouchPoint.id; + } default: break; } @@ -264,6 +299,13 @@ float OH_ArkUI_PointerEvent_GetX(const ArkUI_UIInputEvent* event) } return mouseEvent->actionTouchPoint.nodeX; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return 0.0f; + } + return axisEvent->actionTouchPoint.nodeX; + } default: break; } @@ -290,6 +332,13 @@ float OH_ArkUI_PointerEvent_GetXByIndex(const ArkUI_UIInputEvent* event, uint32_ } return mouseEvent->actionTouchPoint.nodeX; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent || pointerIndex != 0) { + return 0.0f; + } + return axisEvent->actionTouchPoint.nodeX; + } default: break; } @@ -330,6 +379,13 @@ float OH_ArkUI_PointerEvent_GetY(const ArkUI_UIInputEvent* event) } return mouseEvent->actionTouchPoint.nodeY; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return 0.0f; + } + return axisEvent->actionTouchPoint.nodeY; + } default: break; } @@ -357,6 +413,13 @@ float OH_ArkUI_PointerEvent_GetYByIndex(const ArkUI_UIInputEvent* event, uint32_ } return mouseEvent->actionTouchPoint.nodeY; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent || pointerIndex != 0) { + return 0.0f; + } + return axisEvent->actionTouchPoint.nodeY; + } default: break; } @@ -397,6 +460,13 @@ float OH_ArkUI_PointerEvent_GetWindowX(const ArkUI_UIInputEvent* event) } return mouseEvent->actionTouchPoint.windowX; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return 0.0f; + } + return axisEvent->actionTouchPoint.windowX; + } default: break; } @@ -424,6 +494,13 @@ float OH_ArkUI_PointerEvent_GetWindowXByIndex(const ArkUI_UIInputEvent* event, u } return mouseEvent->actionTouchPoint.windowX; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent || pointerIndex != 0) { + return 0.0f; + } + return axisEvent->actionTouchPoint.windowX; + } default: break; } @@ -464,6 +541,13 @@ float OH_ArkUI_PointerEvent_GetWindowY(const ArkUI_UIInputEvent* event) } return mouseEvent->actionTouchPoint.windowY; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return 0.0f; + } + return axisEvent->actionTouchPoint.windowY; + } default: break; } @@ -491,6 +575,13 @@ float OH_ArkUI_PointerEvent_GetWindowYByIndex(const ArkUI_UIInputEvent* event, u } return mouseEvent->actionTouchPoint.windowY; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent || pointerIndex != 0) { + return 0.0f; + } + return axisEvent->actionTouchPoint.windowY; + } default: break; } @@ -531,6 +622,13 @@ float OH_ArkUI_PointerEvent_GetDisplayX(const ArkUI_UIInputEvent* event) } return mouseEvent->actionTouchPoint.screenX; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return 0.0f; + } + return axisEvent->actionTouchPoint.screenX; + } default: break; } @@ -558,6 +656,13 @@ float OH_ArkUI_PointerEvent_GetDisplayXByIndex(const ArkUI_UIInputEvent* event, } return mouseEvent->actionTouchPoint.screenX; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent || pointerIndex != 0) { + return 0.0f; + } + return axisEvent->actionTouchPoint.screenX; + } default: break; } @@ -598,6 +703,13 @@ float OH_ArkUI_PointerEvent_GetDisplayY(const ArkUI_UIInputEvent* event) } return mouseEvent->actionTouchPoint.screenY; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return 0.0f; + } + return axisEvent->actionTouchPoint.screenY; + } default: break; } @@ -625,6 +737,13 @@ float OH_ArkUI_PointerEvent_GetDisplayYByIndex(const ArkUI_UIInputEvent* event, } return mouseEvent->actionTouchPoint.screenY; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent || pointerIndex != 0) { + return 0.0f; + } + return axisEvent->actionTouchPoint.screenY; + } default: break; } @@ -644,13 +763,6 @@ float OH_ArkUI_PointerEvent_GetPressure(const ArkUI_UIInputEvent* event, uint32_ } return touchEvent->touchPointes[touchEvent->touchPointSize-1].pressure; } - case C_MOUSE_EVENT_ID: { - const auto* mouseEvent = reinterpret_cast(event->inputEvent); - if (!mouseEvent || pointerIndex != 0) { - return 0.0f; - } - return mouseEvent->actionTouchPoint.pressure; - } default: break; } @@ -670,13 +782,6 @@ float OH_ArkUI_PointerEvent_GetTiltX(const ArkUI_UIInputEvent* event, uint32_t p } return touchEvent->touchPointes[touchEvent->touchPointSize-1].tiltX; } - case C_MOUSE_EVENT_ID: { - const auto* mouseEvent = reinterpret_cast(event->inputEvent); - if (!mouseEvent || pointerIndex != 0) { - return 0.0f; - } - return mouseEvent->actionTouchPoint.tiltX; - } default: break; } @@ -696,13 +801,6 @@ float OH_ArkUI_PointerEvent_GetTiltY(const ArkUI_UIInputEvent* event, uint32_t p } return touchEvent->touchPointes[touchEvent->touchPointSize-1].tiltY; } - case C_MOUSE_EVENT_ID: { - const auto* mouseEvent = reinterpret_cast(event->inputEvent); - if (!mouseEvent || pointerIndex != 0) { - return 0.0f; - } - return mouseEvent->actionTouchPoint.tiltY; - } default: break; } @@ -722,13 +820,6 @@ float OH_ArkUI_PointerEvent_GetTouchAreaWidth(const ArkUI_UIInputEvent* event, u } return touchEvent->touchPointes[touchEvent->touchPointSize-1].contactAreaWidth; } - case C_MOUSE_EVENT_ID: { - const auto* mouseEvent = reinterpret_cast(event->inputEvent); - if (!mouseEvent || pointerIndex != 0) { - return 0.0f; - } - return mouseEvent->actionTouchPoint.contactAreaWidth; - } default: break; } @@ -748,13 +839,6 @@ float OH_ArkUI_PointerEvent_GetTouchAreaHeight(const ArkUI_UIInputEvent* event, } return touchEvent->touchPointes[touchEvent->touchPointSize-1].contactAreaHeight; } - case C_MOUSE_EVENT_ID: { - const auto* mouseEvent = reinterpret_cast(event->inputEvent); - if (!mouseEvent || pointerIndex != 0) { - return 0.0f; - } - return mouseEvent->actionTouchPoint.contactAreaHeight; - } default: break; } @@ -1071,6 +1155,13 @@ double OH_ArkUI_AxisEvent_GetVerticalAxisValue(const ArkUI_UIInputEvent* event) } break; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return 0.0; + } + return axisEvent->verticalAxis; + } default: break; } @@ -1090,6 +1181,13 @@ double OH_ArkUI_AxisEvent_GetHorizontalAxisValue(const ArkUI_UIInputEvent* event } break; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return 0.0; + } + return axisEvent->horizontalAxis; + } default: break; } @@ -1109,6 +1207,13 @@ double OH_ArkUI_AxisEvent_GetPinchAxisScaleValue(const ArkUI_UIInputEvent* event } break; } + case C_AXIS_EVENT_ID: { + const auto* axisEvent = reinterpret_cast(event->inputEvent); + if (!axisEvent) { + return 0.0; + } + return axisEvent->pinchAxisScale; + } default: break; } diff --git a/interfaces/native/event/ui_input_event_impl.h b/interfaces/native/event/ui_input_event_impl.h index 4db68fbe680..ae9e97007da 100644 --- a/interfaces/native/event/ui_input_event_impl.h +++ b/interfaces/native/event/ui_input_event_impl.h @@ -27,6 +27,7 @@ typedef enum { TOUCH_EVENT_ID = 1, // defined in ace_engine/frameworks/core/event/touch_event.h C_TOUCH_EVENT_ID = 2, // defined in ace_engine/frameworks/core/interfaces/arkoala/arkoala_api.h C_MOUSE_EVENT_ID = 3, // defined in ace_engine/frameworks/core/interfaces/arkoala/arkoala_api.h + C_AXIS_EVENT_ID = 4, // defined in ace_engine/frameworks/core/interfaces/arkoala/arkoala_api.h } ArkUIEventTypeId; struct ArkUI_UIInputEvent { diff --git a/interfaces/native/node/gesture_impl.cpp b/interfaces/native/node/gesture_impl.cpp index 4f73ab87274..b62bf0b6f80 100644 --- a/interfaces/native/node/gesture_impl.cpp +++ b/interfaces/native/node/gesture_impl.cpp @@ -551,9 +551,12 @@ void HandleGestureEvent(ArkUINodeEvent* event) return; } ArkUI_UIInputEvent uiEvent; - if (gestureEvent->eventData.source == static_cast(UI_INPUT_EVENTT_SOURCE_TYPE_MOUSE)) { + if (gestureEvent->eventData.inputEventType == static_cast(ARKUI_UIINPUTEVENT_TYPE_MOUSE)) { uiEvent.eventTypeId = C_MOUSE_EVENT_ID; uiEvent.inputType = ARKUI_UIINPUTEVENT_TYPE_MOUSE; + } else if (gestureEvent->eventData.inputEventType == static_cast(ARKUI_UIINPUTEVENT_TYPE_AXIS)) { + uiEvent.eventTypeId = C_AXIS_EVENT_ID; + uiEvent.inputType = ARKUI_UIINPUTEVENT_TYPE_AXIS; } else { uiEvent.eventTypeId = C_TOUCH_EVENT_ID; uiEvent.inputType = ARKUI_UIINPUTEVENT_TYPE_TOUCH; -- Gitee