• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "interfaces/native/event/ui_input_event_impl.h"
17 
18 #include "core/event/touch_event.h"
19 #include "interfaces/native/node/event_converter.h"
20 #include "interfaces/native/node/node_model.h"
21 #include "base/error/error_code.h"
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
isCurrentCTouchEventParamValid(const ArkUITouchEvent * touchEvent,uint32_t pointerIndex)26 bool isCurrentCTouchEventParamValid(const ArkUITouchEvent* touchEvent, uint32_t pointerIndex)
27 {
28     if (!touchEvent) {
29         return false;
30     }
31     if ((pointerIndex < 0 || pointerIndex >= touchEvent->touchPointSize) ||
32         !(touchEvent->touchPointes)) {
33         return false;
34     }
35     return true;
36 }
37 
isHistoryCTouchEventParamValid(const ArkUITouchEvent * touchEvent,uint32_t historyIndex,uint32_t pointerIndex)38 bool isHistoryCTouchEventParamValid(const ArkUITouchEvent* touchEvent, uint32_t historyIndex, uint32_t pointerIndex)
39 {
40     if (!touchEvent) {
41         return false;
42     }
43     if ((historyIndex < 0 || historyIndex >= touchEvent->historySize) ||
44         !touchEvent->historyEvents) {
45         return false;
46     }
47     if ((pointerIndex < 0 || pointerIndex >= touchEvent->historyEvents[historyIndex].touchPointSize) ||
48         !(touchEvent->historyEvents[historyIndex].touchPointes)) {
49         return false;
50     }
51     return true;
52 }
53 
OH_ArkUI_UIInputEvent_GetType(const ArkUI_UIInputEvent * event)54 int32_t OH_ArkUI_UIInputEvent_GetType(const ArkUI_UIInputEvent* event)
55 {
56     if (!event) {
57         return 0;
58     }
59     return event->inputType;
60 }
61 
OH_ArkUI_UIInputEvent_GetAction(const ArkUI_UIInputEvent * event)62 int32_t OH_ArkUI_UIInputEvent_GetAction(const ArkUI_UIInputEvent* event)
63 {
64     if (!event) {
65         return -1;
66     }
67     switch (event->eventTypeId) {
68         case C_TOUCH_EVENT_ID: {
69             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
70             if (!touchEvent) {
71                 return -1;
72             }
73             return OHOS::Ace::NodeModel::ConvertToCTouchActionType(touchEvent->action);
74         }
75         case C_MOUSE_EVENT_ID: {
76             const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
77             if (!mouseEvent) {
78                 return -1;
79             }
80             return OHOS::Ace::NodeModel::ConvertToCMouseActionType(mouseEvent->action);
81         }
82         default:
83             break;
84     }
85     return -1;
86 }
87 
HandleCTouchEventSourceType(const ArkUI_UIInputEvent * event)88 int32_t HandleCTouchEventSourceType(const ArkUI_UIInputEvent* event)
89 {
90     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
91     if (!touchEvent) {
92         return static_cast<int32_t>(UI_INPUT_EVENT_SOURCE_TYPE_UNKNOWN);
93     }
94     return touchEvent->sourceType;
95 }
96 
HandleCClickEventSourceType(const ArkUI_UIInputEvent * event)97 int32_t HandleCClickEventSourceType(const ArkUI_UIInputEvent* event)
98 {
99     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
100     if (!clickEvent) {
101         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
102     }
103     return clickEvent->sourceType;
104 }
105 
HandleCMouseEventSourceType(const ArkUI_UIInputEvent * event)106 int32_t HandleCMouseEventSourceType(const ArkUI_UIInputEvent* event)
107 {
108     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
109     if (!mouseEvent) {
110         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
111     }
112     return mouseEvent->sourceType;
113 }
114 
HandleCAxisEventSourceType(const ArkUI_UIInputEvent * event)115 int32_t HandleCAxisEventSourceType(const ArkUI_UIInputEvent* event)
116 {
117     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
118     if (!axisEvent) {
119         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
120     }
121     return axisEvent->sourceType;
122 }
123 
HandleCFocusAxisEventSourceType(const ArkUI_UIInputEvent * event)124 int32_t HandleCFocusAxisEventSourceType(const ArkUI_UIInputEvent* event)
125 {
126     const auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
127     if (!focusAxisEvent) {
128         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
129     }
130     return focusAxisEvent->sourceType;
131 }
132 
HandleCHoverEventSourceType(const ArkUI_UIInputEvent * event)133 int32_t HandleCHoverEventSourceType(const ArkUI_UIInputEvent* event)
134 {
135     const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
136     if (!hoverEvent) {
137         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
138     }
139     return hoverEvent->sourceType;
140 }
141 
HandleAxisEventSourceType(const ArkUI_UIInputEvent * event)142 int32_t HandleAxisEventSourceType(const ArkUI_UIInputEvent* event)
143 {
144     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
145     if (!axisEvent) {
146         return static_cast<int32_t>(UI_INPUT_EVENT_SOURCE_TYPE_UNKNOWN);
147     }
148     return static_cast<int32_t>(axisEvent->sourceType);
149 }
150 
OH_ArkUI_UIInputEvent_GetSourceType(const ArkUI_UIInputEvent * event)151 int32_t OH_ArkUI_UIInputEvent_GetSourceType(const ArkUI_UIInputEvent* event)
152 {
153     if (!event) {
154         return static_cast<int32_t>(UI_INPUT_EVENT_SOURCE_TYPE_UNKNOWN);
155     }
156     std::map<ArkUIEventTypeId, std::function<int32_t(ArkUI_UIInputEvent*)>> eventHandlers = {
157         { C_TOUCH_EVENT_ID, HandleCTouchEventSourceType },
158         { C_MOUSE_EVENT_ID, HandleCMouseEventSourceType },
159         { C_AXIS_EVENT_ID, HandleCAxisEventSourceType },
160         { C_FOCUS_AXIS_EVENT_ID, HandleCFocusAxisEventSourceType },
161         { C_HOVER_EVENT_ID, HandleCHoverEventSourceType },
162         { C_CLICK_EVENT_ID, HandleCClickEventSourceType },
163         { AXIS_EVENT_ID, HandleAxisEventSourceType },
164     };
165     auto it = eventHandlers.find(event->eventTypeId);
166     if (it != eventHandlers.end()) {
167         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
168         return it->second(inputEvent);
169     }
170     return static_cast<int32_t>(UI_INPUT_EVENT_SOURCE_TYPE_UNKNOWN);
171 }
172 
HandleCTouchEventToolType(const ArkUI_UIInputEvent * event)173 int32_t HandleCTouchEventToolType(const ArkUI_UIInputEvent* event)
174 {
175     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
176     if (!touchEvent) {
177         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
178     }
179     return OHOS::Ace::NodeModel::ConvertToCInputEventToolType(touchEvent->actionTouchPoint.toolType);
180 }
181 
HandleCMouseEventToolType(const ArkUI_UIInputEvent * event)182 int32_t HandleCMouseEventToolType(const ArkUI_UIInputEvent* event)
183 {
184     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
185     if (!mouseEvent) {
186         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
187     }
188     return OHOS::Ace::NodeModel::ConvertToCInputEventToolType(mouseEvent->actionTouchPoint.toolType);
189 }
190 
HandleCHoverEventToolType(const ArkUI_UIInputEvent * event)191 int32_t HandleCHoverEventToolType(const ArkUI_UIInputEvent* event)
192 {
193     const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
194     if (!hoverEvent) {
195         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
196     }
197     return OHOS::Ace::NodeModel::ConvertToCInputEventToolType(hoverEvent->toolType);
198 }
199 
HandleCClickEventToolType(const ArkUI_UIInputEvent * event)200 int32_t HandleCClickEventToolType(const ArkUI_UIInputEvent* event)
201 {
202     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
203     if (!clickEvent) {
204         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
205     }
206     return OHOS::Ace::NodeModel::ConvertToCInputEventToolType(clickEvent->toolType);
207 }
208 
HandleCAxisEventToolType(const ArkUI_UIInputEvent * event)209 int32_t HandleCAxisEventToolType(const ArkUI_UIInputEvent* event)
210 {
211     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
212     if (!axisEvent) {
213         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
214     }
215     return OHOS::Ace::NodeModel::ConvertToCInputEventToolType(axisEvent->actionTouchPoint.toolType);
216 }
217 
HandleCFocusAxisEventToolType(const ArkUI_UIInputEvent * event)218 int32_t HandleCFocusAxisEventToolType(const ArkUI_UIInputEvent* event)
219 {
220     const auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
221     if (!focusAxisEvent) {
222         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
223     }
224     return OHOS::Ace::NodeModel::ConvertToCInputEventToolType(focusAxisEvent->toolType);
225 }
226 
HandleAxisEventToolType(const ArkUI_UIInputEvent * event)227 int32_t HandleAxisEventToolType(const ArkUI_UIInputEvent* event)
228 {
229     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
230     if (!axisEvent) {
231         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
232     }
233     return OHOS::Ace::NodeModel::ConvertToCInputEventToolType(static_cast<int32_t>(axisEvent->sourceTool));
234 }
235 
OH_ArkUI_UIInputEvent_GetToolType(const ArkUI_UIInputEvent * event)236 int32_t OH_ArkUI_UIInputEvent_GetToolType(const ArkUI_UIInputEvent* event)
237 {
238     if (!event) {
239         return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
240     }
241     std::map<ArkUIEventTypeId, std::function<int32_t(ArkUI_UIInputEvent*)>> eventHandlers = {
242         { C_TOUCH_EVENT_ID, HandleCTouchEventToolType },
243         { C_MOUSE_EVENT_ID, HandleCMouseEventToolType },
244         { C_AXIS_EVENT_ID, HandleCAxisEventToolType },
245         { C_FOCUS_AXIS_EVENT_ID, HandleCFocusAxisEventToolType },
246         { C_HOVER_EVENT_ID, HandleCHoverEventToolType },
247         { C_CLICK_EVENT_ID, HandleCClickEventToolType },
248         { AXIS_EVENT_ID, HandleAxisEventToolType },
249     };
250     auto it = eventHandlers.find(event->eventTypeId);
251     if (it != eventHandlers.end()) {
252         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
253         return it->second(inputEvent);
254     }
255     return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
256 }
257 
HandleCTouchEvent(ArkUI_UIInputEvent * event)258 int64_t HandleCTouchEvent(ArkUI_UIInputEvent* event)
259 {
260     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
261     if (!touchEvent) {
262         return 0;
263     }
264     return touchEvent->timeStamp;
265 }
266 
HandleTouchEvent(ArkUI_UIInputEvent * event)267 int64_t HandleTouchEvent(ArkUI_UIInputEvent* event)
268 {
269     const auto* uiEvent = reinterpret_cast<const OHOS::Ace::PointerEvent*>(event->inputEvent);
270     if (!uiEvent) {
271         LOGE("The parameter of OH_ArkUI_UIInputEvent_GetEventTime is invalid");
272         return 0;
273     }
274     return uiEvent->time.time_since_epoch().count();
275 }
276 
HandleAxisEvent(ArkUI_UIInputEvent * event)277 int64_t HandleAxisEvent(ArkUI_UIInputEvent* event)
278 {
279     const auto* uiEvent = reinterpret_cast<const OHOS::Ace::PointerEvent*>(event->inputEvent);
280     if (!uiEvent) {
281         LOGE("The parameter of OH_ArkUI_UIInputEvent_GetEventTime is invalid");
282         return 0;
283     }
284     return uiEvent->time.time_since_epoch().count();
285 }
286 
HandleCMouseEvent(ArkUI_UIInputEvent * event)287 int64_t HandleCMouseEvent(ArkUI_UIInputEvent* event)
288 {
289     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
290     if (!mouseEvent) {
291         return 0;
292     }
293     return mouseEvent->timeStamp;
294 }
295 
HandleCAxisEvent(ArkUI_UIInputEvent * event)296 int64_t HandleCAxisEvent(ArkUI_UIInputEvent* event)
297 {
298     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
299     if (!axisEvent) {
300         return 0;
301     }
302     return axisEvent->timeStamp;
303 }
304 
HandleCKeyEvent(ArkUI_UIInputEvent * event)305 int64_t HandleCKeyEvent(ArkUI_UIInputEvent* event)
306 {
307     const auto* keyEvent = reinterpret_cast<ArkUIKeyEvent*>(event->inputEvent);
308     if (!keyEvent) {
309         return 0;
310     }
311     return keyEvent->timestamp;
312 }
313 
HandleCFocusAxisEvent(ArkUI_UIInputEvent * event)314 int64_t HandleCFocusAxisEvent(ArkUI_UIInputEvent* event)
315 {
316     const auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
317     if (!focusAxisEvent) {
318         return 0;
319     }
320     return focusAxisEvent->timeStamp;
321 }
322 
HandleCHoverEventTimestamp(ArkUI_UIInputEvent * event)323 int64_t HandleCHoverEventTimestamp(ArkUI_UIInputEvent* event)
324 {
325     const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
326     if (!hoverEvent) {
327         return 0;
328     }
329     return hoverEvent->timeStamp;
330 }
331 
HandleCClickEventTimestamp(ArkUI_UIInputEvent * event)332 int64_t HandleCClickEventTimestamp(ArkUI_UIInputEvent* event)
333 {
334     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
335     if (!clickEvent) {
336         return 0;
337     }
338     return clickEvent->timestamp;
339 }
340 
OH_ArkUI_UIInputEvent_GetEventTime(const ArkUI_UIInputEvent * event)341 int64_t OH_ArkUI_UIInputEvent_GetEventTime(const ArkUI_UIInputEvent* event)
342 {
343     if (!event) {
344         return 0;
345     }
346     std::map<ArkUIEventTypeId, std::function<int64_t(ArkUI_UIInputEvent*)>> eventHandlers = {
347         {C_TOUCH_EVENT_ID, HandleCTouchEvent},
348         {TOUCH_EVENT_ID, HandleTouchEvent},
349         {AXIS_EVENT_ID, HandleAxisEvent},
350         {C_MOUSE_EVENT_ID, HandleCMouseEvent},
351         {C_AXIS_EVENT_ID, HandleCAxisEvent},
352         {C_KEY_EVENT_ID, HandleCKeyEvent},
353         {C_FOCUS_AXIS_EVENT_ID, HandleCFocusAxisEvent},
354         {C_HOVER_EVENT_ID, HandleCHoverEventTimestamp},
355         {C_CLICK_EVENT_ID, HandleCClickEventTimestamp},
356     };
357     auto it = eventHandlers.find(event->eventTypeId);
358     if (it != eventHandlers.end()) {
359         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
360         return it->second(inputEvent);
361     }
362     return 0;
363 }
364 
GetCKeyEventDeviceId(ArkUI_UIInputEvent * event)365 int32_t GetCKeyEventDeviceId(ArkUI_UIInputEvent* event)
366 {
367     const auto* keyEvent = reinterpret_cast<ArkUIKeyEvent*>(event->inputEvent);
368     if (!keyEvent) {
369         return -1;
370     }
371     return static_cast<int32_t>(keyEvent->deviceId);
372 }
373 
GetCFocusAxisEventDeviceId(ArkUI_UIInputEvent * event)374 int32_t GetCFocusAxisEventDeviceId(ArkUI_UIInputEvent* event)
375 {
376     const auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
377     if (!focusAxisEvent) {
378         return -1;
379     }
380     return static_cast<int32_t>(focusAxisEvent->deviceId);
381 }
382 
GetCMouseEventDeviceId(ArkUI_UIInputEvent * event)383 int32_t GetCMouseEventDeviceId(ArkUI_UIInputEvent* event)
384 {
385     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
386     if (!mouseEvent) {
387         return -1;
388     }
389     return static_cast<int32_t>(mouseEvent->deviceId);
390 }
391 
GetCTouchEventDeviceId(ArkUI_UIInputEvent * event)392 int32_t GetCTouchEventDeviceId(ArkUI_UIInputEvent* event)
393 {
394     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
395     if (!touchEvent) {
396         return -1;
397     }
398     return static_cast<int32_t>(touchEvent->deviceId);
399 }
400 
GetCHoverEventDeviceId(ArkUI_UIInputEvent * event)401 int32_t GetCHoverEventDeviceId(ArkUI_UIInputEvent* event)
402 {
403     const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
404     if (!hoverEvent) {
405         return -1;
406     }
407     return static_cast<int32_t>(hoverEvent->deviceId);
408 }
409 
GetCClickEventDeviceId(ArkUI_UIInputEvent * event)410 int32_t GetCClickEventDeviceId(ArkUI_UIInputEvent* event)
411 {
412     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
413     if (!clickEvent) {
414         return -1;
415     }
416     return static_cast<int32_t>(clickEvent->deviceId);
417 }
418 
GetCAxisEventDeviceId(ArkUI_UIInputEvent * event)419 int32_t GetCAxisEventDeviceId(ArkUI_UIInputEvent* event)
420 {
421     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
422     if (!axisEvent) {
423         return -1;
424     }
425     return static_cast<int32_t>(axisEvent->deviceId);
426 }
427 
GetAxisEventDeviceId(ArkUI_UIInputEvent * event)428 int32_t GetAxisEventDeviceId(ArkUI_UIInputEvent* event)
429 {
430     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
431     if (!axisEvent) {
432         return -1;
433     }
434     return static_cast<int32_t>(axisEvent->deviceId);
435 }
436 
GetTouchEventDeviceId(ArkUI_UIInputEvent * event)437 int32_t GetTouchEventDeviceId(ArkUI_UIInputEvent* event)
438 {
439     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
440     if (!touchEvent) {
441         return -1;
442     }
443     return static_cast<int32_t>(touchEvent->deviceId);
444 }
445 
OH_ArkUI_UIInputEvent_GetDeviceId(const ArkUI_UIInputEvent * event)446 int32_t OH_ArkUI_UIInputEvent_GetDeviceId(const ArkUI_UIInputEvent *event)
447 {
448     if (!event) {
449         return -1;
450     }
451     std::map<ArkUIEventTypeId, std::function<int64_t(ArkUI_UIInputEvent*)>> eventHandlers = {
452         {C_KEY_EVENT_ID, GetCKeyEventDeviceId},
453         {C_FOCUS_AXIS_EVENT_ID, GetCFocusAxisEventDeviceId},
454         {C_MOUSE_EVENT_ID, GetCMouseEventDeviceId},
455         {C_TOUCH_EVENT_ID, GetCTouchEventDeviceId},
456         {C_HOVER_EVENT_ID, GetCHoverEventDeviceId},
457         {C_CLICK_EVENT_ID, GetCClickEventDeviceId},
458         {C_AXIS_EVENT_ID, GetCAxisEventDeviceId },
459         {AXIS_EVENT_ID, GetAxisEventDeviceId },
460         {TOUCH_EVENT_ID, GetTouchEventDeviceId },
461     };
462     auto iter = eventHandlers.find(event->eventTypeId);
463     if (iter != eventHandlers.end()) {
464         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
465         return iter->second(inputEvent);
466     }
467     return -1;
468 }
469 
OH_ArkUI_UIInputEvent_GetPressedKeys(const ArkUI_UIInputEvent * event,int32_t * pressedKeyCodes,int32_t * length)470 int32_t OH_ArkUI_UIInputEvent_GetPressedKeys(
471     const ArkUI_UIInputEvent* event, int32_t* pressedKeyCodes, int32_t* length)
472 {
473     if (!event || !pressedKeyCodes || !length) {
474         return ARKUI_ERROR_CODE_PARAM_INVALID;
475     }
476     const auto* keyEvent = reinterpret_cast<ArkUIKeyEvent*>(event->inputEvent);
477     if (!keyEvent) {
478         return ARKUI_ERROR_CODE_PARAM_INVALID;
479     }
480     auto inputLength = *length;
481     if (keyEvent->keyCodesLength > inputLength) {
482         return ARKUI_ERROR_CODE_BUFFER_SIZE_NOT_ENOUGH;
483     }
484     *length = keyEvent->keyCodesLength;
485     for (int i = 0; i < keyEvent->keyCodesLength; i++) {
486         pressedKeyCodes[i] = keyEvent->pressedKeyCodes[i];
487     }
488     return ARKUI_ERROR_CODE_NO_ERROR;
489 }
490 
OH_ArkUI_PointerEvent_GetPointerCount(const ArkUI_UIInputEvent * event)491 uint32_t OH_ArkUI_PointerEvent_GetPointerCount(const ArkUI_UIInputEvent* event)
492 {
493     if (!event) {
494         return 0;
495     }
496     switch (event->eventTypeId) {
497         case C_TOUCH_EVENT_ID: {
498             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
499             if (!touchEvent) {
500                 return 0;
501             }
502             return touchEvent->touchPointSize;
503         }
504         case C_MOUSE_EVENT_ID: {
505             const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
506             if (!mouseEvent) {
507                 return 0;
508             }
509             return 1;
510         }
511         case C_AXIS_EVENT_ID: {
512             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
513             if (!axisEvent) {
514                 return 0;
515             }
516             return 1;
517         }
518         case C_CLICK_EVENT_ID: {
519             const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
520             if (!clickEvent) {
521                 return 0;
522             }
523             return clickEvent->clickPointSize;
524         }
525         default:
526             break;
527     }
528     return 0;
529 }
530 
OH_ArkUI_PointerEvent_GetPointerId(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)531 int32_t OH_ArkUI_PointerEvent_GetPointerId(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
532 {
533     if (!event) {
534         return 0;
535     }
536     switch (event->eventTypeId) {
537         case C_TOUCH_EVENT_ID: {
538             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
539             if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
540                 return 0;
541             }
542             return touchEvent->touchPointes[pointerIndex].id;
543         }
544         case C_MOUSE_EVENT_ID: {
545             const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
546             if (!mouseEvent || pointerIndex != 0) {
547                 return 0;
548             }
549             return mouseEvent->actionTouchPoint.id;
550         }
551         case C_AXIS_EVENT_ID: {
552             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
553             if (!axisEvent || pointerIndex != 0) {
554                 return 0;
555             }
556             return axisEvent->actionTouchPoint.id;
557         }
558         default:
559             break;
560     }
561     return 0;
562 }
563 
HandleCClickEventX(const ArkUI_UIInputEvent * event)564 float HandleCClickEventX(const ArkUI_UIInputEvent* event)
565 {
566     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
567     if (!clickEvent) {
568         return 0.0f;
569     }
570     return clickEvent->localX;
571 }
572 
HandleCTouchEventX(const ArkUI_UIInputEvent * event)573 float HandleCTouchEventX(const ArkUI_UIInputEvent* event)
574 {
575     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
576     if (!touchEvent) {
577         return 0.0f;
578     }
579     return touchEvent->actionTouchPoint.nodeX;
580 }
581 
HandleCMouseEventX(const ArkUI_UIInputEvent * event)582 float HandleCMouseEventX(const ArkUI_UIInputEvent* event)
583 {
584     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
585     if (!mouseEvent) {
586         return 0.0f;
587     }
588     return mouseEvent->actionTouchPoint.nodeX;
589 }
590 
HandleCAxisEventX(const ArkUI_UIInputEvent * event)591 float HandleCAxisEventX(const ArkUI_UIInputEvent* event)
592 {
593     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
594     if (!axisEvent) {
595         return 0.0f;
596     }
597     return axisEvent->actionTouchPoint.nodeX;
598 }
599 
HandleTouchEventX(const ArkUI_UIInputEvent * event)600 float HandleTouchEventX(const ArkUI_UIInputEvent* event)
601 {
602     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
603     if (touchEvent) {
604         return touchEvent->localX;
605     }
606     return 0.0f;
607 }
608 
HandleAxisEventX(const ArkUI_UIInputEvent * event)609 float HandleAxisEventX(const ArkUI_UIInputEvent* event)
610 {
611     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
612     if (axisEvent) {
613         return axisEvent->localX;
614     }
615     return 0.0f;
616 }
617 
OH_ArkUI_PointerEvent_GetX(const ArkUI_UIInputEvent * event)618 float OH_ArkUI_PointerEvent_GetX(const ArkUI_UIInputEvent* event)
619 {
620     if (!event) {
621         return 0.0f;
622     }
623     std::map<ArkUIEventTypeId, std::function<float(ArkUI_UIInputEvent*)>> eventHandlers = {
624         { C_TOUCH_EVENT_ID, HandleCTouchEventX },
625         { TOUCH_EVENT_ID, HandleTouchEventX },
626         { AXIS_EVENT_ID, HandleAxisEventX },
627         { C_MOUSE_EVENT_ID, HandleCMouseEventX },
628         { C_AXIS_EVENT_ID, HandleCAxisEventX },
629         { C_CLICK_EVENT_ID, HandleCClickEventX },
630     };
631     auto it = eventHandlers.find(event->eventTypeId);
632     if (it != eventHandlers.end()) {
633         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
634         return it->second(inputEvent);
635     }
636     return 0.0f;
637 }
638 
OH_ArkUI_PointerEvent_GetXByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)639 float OH_ArkUI_PointerEvent_GetXByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
640 {
641     if (!event) {
642         return 0.0f;
643     }
644     switch (event->eventTypeId) {
645         case C_TOUCH_EVENT_ID: {
646             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
647             if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
648                 return 0.0f;
649             }
650             return touchEvent->touchPointes[pointerIndex].nodeX;
651         }
652         case C_MOUSE_EVENT_ID: {
653             const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
654             if (!mouseEvent || pointerIndex != 0) {
655                 return 0.0f;
656             }
657             return mouseEvent->actionTouchPoint.nodeX;
658         }
659         case C_AXIS_EVENT_ID: {
660             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
661             if (!axisEvent || pointerIndex != 0) {
662                 return 0.0f;
663             }
664             return axisEvent->actionTouchPoint.nodeX;
665         }
666         default:
667             break;
668     }
669     return 0.0f;
670 }
671 
HandleCClickEventY(const ArkUI_UIInputEvent * event)672 float HandleCClickEventY(const ArkUI_UIInputEvent* event)
673 {
674     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
675     if (!clickEvent) {
676         return 0.0f;
677     }
678     return clickEvent->localY;
679 }
680 
HandleCTouchEventY(const ArkUI_UIInputEvent * event)681 float HandleCTouchEventY(const ArkUI_UIInputEvent* event)
682 {
683     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
684     if (!touchEvent) {
685         return 0.0f;
686     }
687     return touchEvent->actionTouchPoint.nodeY;
688 }
689 
HandleCMouseEventY(const ArkUI_UIInputEvent * event)690 float HandleCMouseEventY(const ArkUI_UIInputEvent* event)
691 {
692     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
693     if (!mouseEvent) {
694         return 0.0f;
695     }
696     return mouseEvent->actionTouchPoint.nodeY;
697 }
698 
HandleCAxisEventY(const ArkUI_UIInputEvent * event)699 float HandleCAxisEventY(const ArkUI_UIInputEvent* event)
700 {
701     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
702     if (!axisEvent) {
703         return 0.0f;
704     }
705     return axisEvent->actionTouchPoint.nodeY;
706 }
707 
HandleTouchEventY(const ArkUI_UIInputEvent * event)708 float HandleTouchEventY(const ArkUI_UIInputEvent* event)
709 {
710     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
711     if (touchEvent) {
712         return touchEvent->localY;
713     }
714     return 0.0f;
715 }
716 
HandleAxisEventY(const ArkUI_UIInputEvent * event)717 float HandleAxisEventY(const ArkUI_UIInputEvent* event)
718 {
719     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
720     if (axisEvent) {
721         return axisEvent->localY;
722     }
723     return 0.0f;
724 }
725 
OH_ArkUI_PointerEvent_GetY(const ArkUI_UIInputEvent * event)726 float OH_ArkUI_PointerEvent_GetY(const ArkUI_UIInputEvent* event)
727 {
728     if (!event) {
729         return 0.0f;
730     }
731     std::map<ArkUIEventTypeId, std::function<float(ArkUI_UIInputEvent*)>> eventHandlers = {
732         { C_TOUCH_EVENT_ID, HandleCTouchEventY },
733         { TOUCH_EVENT_ID, HandleTouchEventY },
734         { AXIS_EVENT_ID, HandleAxisEventY },
735         { C_MOUSE_EVENT_ID, HandleCMouseEventY },
736         { C_AXIS_EVENT_ID, HandleCAxisEventY },
737         { C_CLICK_EVENT_ID, HandleCClickEventY },
738     };
739     auto it = eventHandlers.find(event->eventTypeId);
740     if (it != eventHandlers.end()) {
741         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
742         return it->second(inputEvent);
743     }
744     LOGE("The parameter of OH_ArkUI_PointerEvent_GetY is invalid");
745     return 0.0f;
746 }
747 
OH_ArkUI_PointerEvent_GetYByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)748 float OH_ArkUI_PointerEvent_GetYByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
749 {
750     if (!event) {
751         return 0.0f;
752     }
753     switch (event->eventTypeId) {
754         case C_TOUCH_EVENT_ID: {
755             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
756             if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
757                 return 0.0f;
758             }
759             return touchEvent->touchPointes[pointerIndex].nodeY;
760         }
761         case C_MOUSE_EVENT_ID: {
762             const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
763             if (!mouseEvent || pointerIndex != 0) {
764                 return 0.0f;
765             }
766             return mouseEvent->actionTouchPoint.nodeY;
767         }
768         case C_AXIS_EVENT_ID: {
769             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
770             if (!axisEvent || pointerIndex != 0) {
771                 return 0.0f;
772             }
773             return axisEvent->actionTouchPoint.nodeY;
774         }
775         default:
776             break;
777     }
778     return 0.0f;
779 }
780 
HandleCTouchEventWindowX(const ArkUI_UIInputEvent * event)781 float HandleCTouchEventWindowX(const ArkUI_UIInputEvent* event)
782 {
783     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
784     if (!touchEvent) {
785         return 0.0f;
786     }
787     return touchEvent->actionTouchPoint.windowX;
788 }
789 
HandleTouchEventWindowX(const ArkUI_UIInputEvent * event)790 float HandleTouchEventWindowX(const ArkUI_UIInputEvent* event)
791 {
792     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
793     if (touchEvent) {
794         return touchEvent->x;
795     }
796     return 0.0f;
797 }
798 
HandleAxisEventWindowX(const ArkUI_UIInputEvent * event)799 float HandleAxisEventWindowX(const ArkUI_UIInputEvent* event)
800 {
801     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
802     if (axisEvent) {
803         return axisEvent->x;
804     }
805     return 0.0f;
806 }
807 
HandleCMouseEventWindowX(const ArkUI_UIInputEvent * event)808 float HandleCMouseEventWindowX(const ArkUI_UIInputEvent* event)
809 {
810     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
811     if (!mouseEvent) {
812         return 0.0f;
813     }
814     return mouseEvent->actionTouchPoint.windowX;
815 }
816 
HandleCAxisEventWindowX(const ArkUI_UIInputEvent * event)817 float HandleCAxisEventWindowX(const ArkUI_UIInputEvent* event)
818 {
819     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
820     if (!axisEvent) {
821         return 0.0f;
822     }
823     return axisEvent->actionTouchPoint.windowX;
824 }
825 
HandleCClickEventWindowX(const ArkUI_UIInputEvent * event)826 float HandleCClickEventWindowX(const ArkUI_UIInputEvent* event)
827 {
828     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
829     if (!clickEvent) {
830         return 0.0f;
831     }
832     return clickEvent->windowX;
833 }
834 
OH_ArkUI_PointerEvent_GetWindowX(const ArkUI_UIInputEvent * event)835 float OH_ArkUI_PointerEvent_GetWindowX(const ArkUI_UIInputEvent* event)
836 {
837     if (!event) {
838         return 0.0f;
839     }
840     std::map<ArkUIEventTypeId, std::function<float(ArkUI_UIInputEvent*)>> eventHandlers = {
841         { C_TOUCH_EVENT_ID, HandleCTouchEventWindowX },
842         { TOUCH_EVENT_ID, HandleTouchEventWindowX },
843         { AXIS_EVENT_ID, HandleAxisEventWindowX },
844         { C_MOUSE_EVENT_ID, HandleCMouseEventWindowX },
845         { C_AXIS_EVENT_ID, HandleCAxisEventWindowX },
846         { C_CLICK_EVENT_ID, HandleCClickEventWindowX },
847     };
848     auto it = eventHandlers.find(event->eventTypeId);
849     if (it != eventHandlers.end()) {
850         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
851         return it->second(inputEvent);
852     }
853     LOGE("The parameter of OH_ArkUI_PointerEvent_GetWindowX is invalid");
854     return 0.0f;
855 }
856 
OH_ArkUI_PointerEvent_GetWindowXByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)857 float OH_ArkUI_PointerEvent_GetWindowXByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
858 {
859     if (!event) {
860         return 0.0f;
861     }
862     switch (event->eventTypeId) {
863         case C_TOUCH_EVENT_ID: {
864             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
865             if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
866                 return 0.0f;
867             }
868             return touchEvent->touchPointes[pointerIndex].windowX;
869         }
870         case C_MOUSE_EVENT_ID: {
871             const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
872             if (!mouseEvent || pointerIndex != 0) {
873                 return 0.0f;
874             }
875             return mouseEvent->actionTouchPoint.windowX;
876         }
877         case C_AXIS_EVENT_ID: {
878             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
879             if (!axisEvent || pointerIndex != 0) {
880                 return 0.0f;
881             }
882             return axisEvent->actionTouchPoint.windowX;
883         }
884         default:
885             break;
886     }
887     return 0.0f;
888 }
889 
HandleCClickEventWindowY(const ArkUI_UIInputEvent * event)890 float HandleCClickEventWindowY(const ArkUI_UIInputEvent* event)
891 {
892     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
893     if (!clickEvent) {
894         return 0.0f;
895     }
896     return clickEvent->windowY;
897 }
898 
HandleCTouchEventWindowY(const ArkUI_UIInputEvent * event)899 float HandleCTouchEventWindowY(const ArkUI_UIInputEvent* event)
900 {
901     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
902     if (!touchEvent) {
903         return 0.0f;
904     }
905     return touchEvent->actionTouchPoint.windowY;
906 }
907 
HandleCAxisEventWindowY(const ArkUI_UIInputEvent * event)908 float HandleCAxisEventWindowY(const ArkUI_UIInputEvent* event)
909 {
910     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
911     if (!axisEvent) {
912         return 0.0f;
913     }
914     return axisEvent->actionTouchPoint.windowY;
915 }
916 
HandleCMouseEventWindowY(const ArkUI_UIInputEvent * event)917 float HandleCMouseEventWindowY(const ArkUI_UIInputEvent* event)
918 {
919     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
920     if (!mouseEvent) {
921         return 0.0f;
922     }
923     return mouseEvent->actionTouchPoint.windowY;
924 }
925 
HandleTouchEventWindowY(const ArkUI_UIInputEvent * event)926 float HandleTouchEventWindowY(const ArkUI_UIInputEvent* event)
927 {
928     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
929     if (touchEvent) {
930         return touchEvent->y;
931     }
932     return 0.0f;
933 }
934 
HandleAxisEventWindowY(const ArkUI_UIInputEvent * event)935 float HandleAxisEventWindowY(const ArkUI_UIInputEvent* event)
936 {
937     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
938     if (axisEvent) {
939         return axisEvent->y;
940     }
941     return 0.0f;
942 }
943 
OH_ArkUI_PointerEvent_GetWindowY(const ArkUI_UIInputEvent * event)944 float OH_ArkUI_PointerEvent_GetWindowY(const ArkUI_UIInputEvent* event)
945 {
946     if (!event) {
947         return 0.0f;
948     }
949     std::map<ArkUIEventTypeId, std::function<float(ArkUI_UIInputEvent*)>> eventHandlers = {
950         { C_TOUCH_EVENT_ID, HandleCTouchEventWindowY },
951         { TOUCH_EVENT_ID, HandleTouchEventWindowY },
952         { AXIS_EVENT_ID, HandleAxisEventWindowY },
953         { C_MOUSE_EVENT_ID, HandleCMouseEventWindowY },
954         { C_AXIS_EVENT_ID, HandleCAxisEventWindowY },
955         { C_CLICK_EVENT_ID, HandleCClickEventWindowY },
956     };
957     auto it = eventHandlers.find(event->eventTypeId);
958     if (it != eventHandlers.end()) {
959         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
960         return it->second(inputEvent);
961     }
962     LOGE("The parameter of OH_ArkUI_PointerEvent_GetWindowY is invalid");
963     return 0.0f;
964 }
965 
OH_ArkUI_PointerEvent_GetWindowYByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)966 float OH_ArkUI_PointerEvent_GetWindowYByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
967 {
968     if (!event) {
969         return 0.0f;
970     }
971     switch (event->eventTypeId) {
972         case C_TOUCH_EVENT_ID: {
973             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
974             if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
975                 return 0.0f;
976             }
977             return touchEvent->touchPointes[pointerIndex].windowY;
978         }
979         case C_MOUSE_EVENT_ID: {
980             const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
981             if (!mouseEvent || pointerIndex != 0) {
982                 return 0.0f;
983             }
984             return mouseEvent->actionTouchPoint.windowY;
985         }
986         case C_AXIS_EVENT_ID: {
987             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
988             if (!axisEvent || pointerIndex != 0) {
989                 return 0.0f;
990             }
991             return axisEvent->actionTouchPoint.windowY;
992         }
993         default:
994             break;
995     }
996     return 0.0f;
997 }
998 
HandleCTouchEventDisplayX(const ArkUI_UIInputEvent * event)999 float HandleCTouchEventDisplayX(const ArkUI_UIInputEvent* event)
1000 {
1001     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1002     if (!touchEvent) {
1003         return 0.0f;
1004     }
1005     return touchEvent->actionTouchPoint.screenX;
1006 }
1007 
HandleCClickEventDisplayX(const ArkUI_UIInputEvent * event)1008 float HandleCClickEventDisplayX(const ArkUI_UIInputEvent* event)
1009 {
1010     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
1011     if (!clickEvent) {
1012         return 0.0f;
1013     }
1014     return clickEvent->displayX;
1015 }
1016 
HandleCMouseEventDisplayX(const ArkUI_UIInputEvent * event)1017 float HandleCMouseEventDisplayX(const ArkUI_UIInputEvent* event)
1018 {
1019     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1020     if (!mouseEvent) {
1021         return 0.0f;
1022     }
1023     return mouseEvent->actionTouchPoint.screenX;
1024 }
1025 
HandleCAxisEventDisplayX(const ArkUI_UIInputEvent * event)1026 float HandleCAxisEventDisplayX(const ArkUI_UIInputEvent* event)
1027 {
1028     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
1029     if (!axisEvent) {
1030         return 0.0f;
1031     }
1032     return axisEvent->actionTouchPoint.screenX;
1033 }
1034 
HandleTouchEventDisplayX(const ArkUI_UIInputEvent * event)1035 float HandleTouchEventDisplayX(const ArkUI_UIInputEvent* event)
1036 {
1037     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
1038     if (touchEvent) {
1039         return touchEvent->screenX;
1040     }
1041     return 0.0f;
1042 }
1043 
HandleAxisEventDisplayX(const ArkUI_UIInputEvent * event)1044 float HandleAxisEventDisplayX(const ArkUI_UIInputEvent* event)
1045 {
1046     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
1047     if (axisEvent) {
1048         return axisEvent->screenX;
1049     }
1050     return 0.0f;
1051 }
1052 
OH_ArkUI_PointerEvent_GetDisplayX(const ArkUI_UIInputEvent * event)1053 float OH_ArkUI_PointerEvent_GetDisplayX(const ArkUI_UIInputEvent* event)
1054 {
1055     if (!event) {
1056         return 0.0f;
1057     }
1058     std::map<ArkUIEventTypeId, std::function<float(ArkUI_UIInputEvent*)>> eventHandlers = {
1059         { C_TOUCH_EVENT_ID, HandleCTouchEventDisplayX },
1060         { TOUCH_EVENT_ID, HandleTouchEventDisplayX },
1061         { AXIS_EVENT_ID, HandleAxisEventDisplayX },
1062         { C_MOUSE_EVENT_ID, HandleCMouseEventDisplayX },
1063         { C_AXIS_EVENT_ID, HandleCAxisEventDisplayX },
1064         { C_CLICK_EVENT_ID, HandleCClickEventDisplayX },
1065     };
1066     auto it = eventHandlers.find(event->eventTypeId);
1067     if (it != eventHandlers.end()) {
1068         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
1069         return it->second(inputEvent);
1070     }
1071     LOGE("The parameter of OH_ArkUI_PointerEvent_GetDisplayX is invalid");
1072     return 0.0f;
1073 }
1074 
OH_ArkUI_PointerEvent_GetDisplayXByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)1075 float OH_ArkUI_PointerEvent_GetDisplayXByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
1076 {
1077     if (!event) {
1078         return 0.0f;
1079     }
1080     switch (event->eventTypeId) {
1081         case C_TOUCH_EVENT_ID: {
1082             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1083             if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
1084                 return 0.0f;
1085             }
1086             return touchEvent->touchPointes[pointerIndex].screenX;
1087         }
1088         case C_MOUSE_EVENT_ID: {
1089             const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1090             if (!mouseEvent || pointerIndex != 0) {
1091                 return 0.0f;
1092             }
1093             return mouseEvent->actionTouchPoint.screenX;
1094         }
1095         case C_AXIS_EVENT_ID: {
1096             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
1097             if (!axisEvent || pointerIndex != 0) {
1098                 return 0.0f;
1099             }
1100             return axisEvent->actionTouchPoint.screenX;
1101         }
1102         default:
1103             break;
1104     }
1105     return 0.0f;
1106 }
1107 
HandleCTouchEventDisplayY(const ArkUI_UIInputEvent * event)1108 float HandleCTouchEventDisplayY(const ArkUI_UIInputEvent* event)
1109 {
1110     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1111     if (!touchEvent) {
1112         return 0.0f;
1113     }
1114     return touchEvent->actionTouchPoint.screenY;
1115 }
1116 
HandleCClickEventDisplayY(const ArkUI_UIInputEvent * event)1117 float HandleCClickEventDisplayY(const ArkUI_UIInputEvent* event)
1118 {
1119     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
1120     if (!clickEvent) {
1121         return 0.0f;
1122     }
1123     return clickEvent->displayY;
1124 }
1125 
HandleCMouseEventDisplayY(const ArkUI_UIInputEvent * event)1126 float HandleCMouseEventDisplayY(const ArkUI_UIInputEvent* event)
1127 {
1128     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1129     if (!mouseEvent) {
1130         return 0.0f;
1131     }
1132     return mouseEvent->actionTouchPoint.screenY;
1133 }
1134 
HandleCAxisEventDisplayY(const ArkUI_UIInputEvent * event)1135 float HandleCAxisEventDisplayY(const ArkUI_UIInputEvent* event)
1136 {
1137     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
1138     if (!axisEvent) {
1139         return 0.0f;
1140     }
1141     return axisEvent->actionTouchPoint.screenY;
1142 }
1143 
HandleTouchEventDisplayY(const ArkUI_UIInputEvent * event)1144 float HandleTouchEventDisplayY(const ArkUI_UIInputEvent* event)
1145 {
1146     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
1147     if (touchEvent) {
1148         return touchEvent->screenY;
1149     }
1150     return 0.0f;
1151 }
1152 
HandleAxisEventDisplayY(const ArkUI_UIInputEvent * event)1153 float HandleAxisEventDisplayY(const ArkUI_UIInputEvent* event)
1154 {
1155     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
1156     if (axisEvent) {
1157         return axisEvent->screenY;
1158     }
1159     return 0.0f;
1160 }
1161 
OH_ArkUI_PointerEvent_GetDisplayY(const ArkUI_UIInputEvent * event)1162 float OH_ArkUI_PointerEvent_GetDisplayY(const ArkUI_UIInputEvent* event)
1163 {
1164     if (!event) {
1165         return 0.0f;
1166     }
1167     std::map<ArkUIEventTypeId, std::function<float(ArkUI_UIInputEvent*)>> eventHandlers = {
1168         { C_TOUCH_EVENT_ID, HandleCTouchEventDisplayY },
1169         { TOUCH_EVENT_ID, HandleTouchEventDisplayY },
1170         { AXIS_EVENT_ID, HandleAxisEventDisplayY },
1171         { C_MOUSE_EVENT_ID, HandleCMouseEventDisplayY },
1172         { C_AXIS_EVENT_ID, HandleCAxisEventDisplayY },
1173         { C_CLICK_EVENT_ID, HandleCClickEventDisplayY },
1174     };
1175     auto it = eventHandlers.find(event->eventTypeId);
1176     if (it != eventHandlers.end()) {
1177         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
1178         return it->second(inputEvent);
1179     }
1180     LOGE("The parameter of OH_ArkUI_PointerEvent_GetDisplayY is invalid");
1181     return 0.0f;
1182 }
1183 
OH_ArkUI_PointerEvent_GetDisplayYByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)1184 float OH_ArkUI_PointerEvent_GetDisplayYByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
1185 {
1186     if (!event) {
1187         return 0.0f;
1188     }
1189     switch (event->eventTypeId) {
1190         case C_TOUCH_EVENT_ID: {
1191             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1192             if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
1193                 return 0.0f;
1194             }
1195             return touchEvent->touchPointes[pointerIndex].screenY;
1196         }
1197         case C_MOUSE_EVENT_ID: {
1198             const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1199             if (!mouseEvent || pointerIndex != 0) {
1200                 return 0.0f;
1201             }
1202             return mouseEvent->actionTouchPoint.screenY;
1203         }
1204         case C_AXIS_EVENT_ID: {
1205             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
1206             if (!axisEvent || pointerIndex != 0) {
1207                 return 0.0f;
1208             }
1209             return axisEvent->actionTouchPoint.screenY;
1210         }
1211         default:
1212             break;
1213     }
1214     return 0.0f;
1215 }
1216 
OH_ArkUI_PointerEvent_GetPressure(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)1217 float OH_ArkUI_PointerEvent_GetPressure(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
1218 {
1219     if (!event) {
1220         return 0.0f;
1221     }
1222     switch (event->eventTypeId) {
1223         case C_TOUCH_EVENT_ID: {
1224             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1225             if (!touchEvent || touchEvent->touchPointSize <= 0) {
1226                 return 0.0f;
1227             }
1228             return touchEvent->touchPointes[touchEvent->touchPointSize-1].pressure;
1229         }
1230         case C_MOUSE_EVENT_ID: {
1231             const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1232             if (!mouseEvent) {
1233                 return 0.0f;
1234             }
1235             return mouseEvent->actionTouchPoint.pressure;
1236         }
1237         case C_CLICK_EVENT_ID: {
1238             const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
1239             if (!clickEvent) {
1240                 return 0.0f;
1241             }
1242             return clickEvent->pressure;
1243         }
1244         default:
1245             break;
1246     }
1247     return 0.0f;
1248 }
1249 
OH_ArkUI_PointerEvent_GetTiltX(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)1250 float OH_ArkUI_PointerEvent_GetTiltX(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
1251 {
1252     if (!event) {
1253         return 0.0f;
1254     }
1255     switch (event->eventTypeId) {
1256         case C_TOUCH_EVENT_ID: {
1257             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1258             if (!touchEvent || touchEvent->touchPointSize <= 0) {
1259                 return 0.0f;
1260             }
1261             return touchEvent->touchPointes[touchEvent->touchPointSize-1].tiltX;
1262         }
1263         case C_CLICK_EVENT_ID: {
1264             const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
1265             if (!clickEvent) {
1266                 return 0.0f;
1267             }
1268             return clickEvent->tiltX;
1269         }
1270         case C_HOVER_EVENT_ID: {
1271             const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
1272             if (!hoverEvent) {
1273                 return 0.0f;
1274             }
1275             return hoverEvent->tiltX;
1276         }
1277         default:
1278             break;
1279     }
1280     return 0.0f;
1281 }
1282 
OH_ArkUI_PointerEvent_GetTiltY(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)1283 float OH_ArkUI_PointerEvent_GetTiltY(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
1284 {
1285     if (!event) {
1286         return 0.0f;
1287     }
1288     switch (event->eventTypeId) {
1289         case C_TOUCH_EVENT_ID: {
1290             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1291             if (!touchEvent || touchEvent->touchPointSize <= 0) {
1292                 return 0.0f;
1293             }
1294             return touchEvent->touchPointes[touchEvent->touchPointSize-1].tiltY;
1295         }
1296         case C_CLICK_EVENT_ID: {
1297             const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
1298             if (!clickEvent) {
1299                 return 0.0f;
1300             }
1301             return clickEvent->tiltY;
1302         }
1303         case C_HOVER_EVENT_ID: {
1304             const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
1305             if (!hoverEvent) {
1306                 return 0.0f;
1307             }
1308             return hoverEvent->tiltY;
1309         }
1310         default:
1311             break;
1312     }
1313     return 0.0f;
1314 }
1315 
OH_ArkUI_PointerEvent_GetRollAngle(const ArkUI_UIInputEvent * event,double * rollAngle)1316 int32_t OH_ArkUI_PointerEvent_GetRollAngle(const ArkUI_UIInputEvent* event, double* rollAngle)
1317 {
1318     if (rollAngle == nullptr || event == nullptr) {
1319         return ARKUI_ERROR_CODE_PARAM_INVALID;
1320     }
1321     switch (event->eventTypeId) {
1322         case C_TOUCH_EVENT_ID: {
1323             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1324             if (touchEvent && touchEvent->subKind == ON_HOVER_MOVE) {
1325                 *rollAngle = touchEvent->actionTouchPoint.rollAngle;
1326                 return ARKUI_ERROR_CODE_NO_ERROR;
1327             }
1328             if (touchEvent && touchEvent->subKind == ON_TOUCH) {
1329                 *rollAngle = touchEvent->rollAngle;
1330                 return ARKUI_ERROR_CODE_NO_ERROR;
1331             }
1332             if (!touchEvent || touchEvent->touchPointSize <= 0) {
1333                 return ARKUI_ERROR_CODE_PARAM_INVALID;
1334             }
1335             *rollAngle = touchEvent->touchPointes[touchEvent->touchPointSize - 1].rollAngle;
1336             return ARKUI_ERROR_CODE_NO_ERROR;
1337         }
1338         case C_CLICK_EVENT_ID: {
1339             const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
1340             if (!clickEvent) {
1341                 return ARKUI_ERROR_CODE_PARAM_INVALID;
1342             }
1343             *rollAngle = clickEvent->rollAngle;
1344             return ARKUI_ERROR_CODE_NO_ERROR;
1345         }
1346         case C_HOVER_EVENT_ID: {
1347             const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
1348             if (!hoverEvent) {
1349                 return ARKUI_ERROR_CODE_PARAM_INVALID;
1350             }
1351             *rollAngle = hoverEvent->rollAngle;
1352             return ARKUI_ERROR_CODE_NO_ERROR;
1353         }
1354         default:
1355             break;
1356     }
1357     return ARKUI_ERROR_CODE_PARAM_INVALID;
1358 }
1359 
OH_ArkUI_PointerEvent_GetInteractionHand(const ArkUI_UIInputEvent * event,ArkUI_InteractionHand * hand)1360 int32_t OH_ArkUI_PointerEvent_GetInteractionHand(const ArkUI_UIInputEvent *event, ArkUI_InteractionHand *hand)
1361 {
1362     if (!event || !hand) {
1363         return ARKUI_ERROR_CODE_PARAM_INVALID;
1364     }
1365     switch (event->eventTypeId) {
1366         case C_TOUCH_EVENT_ID: {
1367             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1368             *hand = static_cast<ArkUI_InteractionHand>(touchEvent->actionTouchPoint.operatingHand);
1369             break;
1370         }
1371         default:
1372             break;
1373     }
1374     return ARKUI_ERROR_CODE_NO_ERROR;
1375 }
1376 
OH_ArkUI_PointerEvent_GetInteractionHandByIndex(const ArkUI_UIInputEvent * event,int32_t pointerIndex,ArkUI_InteractionHand * hand)1377 int32_t OH_ArkUI_PointerEvent_GetInteractionHandByIndex(const ArkUI_UIInputEvent *event, int32_t pointerIndex,
1378     ArkUI_InteractionHand *hand)
1379 {
1380     if (!event || !hand) {
1381         return ARKUI_ERROR_CODE_PARAM_INVALID;
1382     }
1383 
1384     switch (event->eventTypeId) {
1385         case C_TOUCH_EVENT_ID: {
1386             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1387             if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
1388                 return ARKUI_ERROR_CODE_PARAM_INVALID;
1389             }
1390             *hand = static_cast<ArkUI_InteractionHand>(touchEvent->touchPointes[pointerIndex].operatingHand);
1391             break;
1392         }
1393         default:
1394             break;
1395     }
1396     return ARKUI_ERROR_CODE_NO_ERROR;
1397 }
1398 
OH_ArkUI_PointerEvent_GetTouchAreaWidth(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)1399 float OH_ArkUI_PointerEvent_GetTouchAreaWidth(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
1400 {
1401     if (!event) {
1402         return 0.0f;
1403     }
1404     switch (event->eventTypeId) {
1405         case C_TOUCH_EVENT_ID: {
1406             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1407             if (!touchEvent || touchEvent->touchPointSize <= 0) {
1408                 return 0.0f;
1409             }
1410             return touchEvent->touchPointes[touchEvent->touchPointSize-1].contactAreaWidth;
1411         }
1412         default:
1413             break;
1414     }
1415     return 0.0f;
1416 }
1417 
OH_ArkUI_PointerEvent_GetTouchAreaHeight(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)1418 float OH_ArkUI_PointerEvent_GetTouchAreaHeight(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
1419 {
1420     if (!event) {
1421         return 0.0f;
1422     }
1423     switch (event->eventTypeId) {
1424         case C_TOUCH_EVENT_ID: {
1425             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1426             if (!touchEvent || touchEvent->touchPointSize <= 0) {
1427                 return 0.0f;
1428             }
1429             return touchEvent->touchPointes[touchEvent->touchPointSize-1].contactAreaHeight;
1430         }
1431         default:
1432             break;
1433     }
1434     return 0.0f;
1435 }
1436 
OH_ArkUI_PointerEvent_GetChangedPointerId(const ArkUI_UIInputEvent * event,uint32_t * pointerIndex)1437 int32_t OH_ArkUI_PointerEvent_GetChangedPointerId(const ArkUI_UIInputEvent* event, uint32_t* pointerIndex)
1438 {
1439     if (!event || !pointerIndex) {
1440         return ARKUI_ERROR_CODE_PARAM_INVALID;
1441     }
1442     switch (event->eventTypeId) {
1443         case C_TOUCH_EVENT_ID: {
1444             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1445             if (!touchEvent || touchEvent->touchPointSize <= 0) {
1446                 return ARKUI_ERROR_CODE_PARAM_INVALID;
1447             }
1448             *pointerIndex = touchEvent->changedPointerId;
1449             return ARKUI_ERROR_CODE_NO_ERROR;
1450         }
1451         default:
1452             break;
1453     }
1454     return ARKUI_ERROR_CODE_PARAM_INVALID;
1455 }
1456 
OH_ArkUI_PointerEvent_GetHistorySize(const ArkUI_UIInputEvent * event)1457 uint32_t OH_ArkUI_PointerEvent_GetHistorySize(const ArkUI_UIInputEvent* event)
1458 {
1459     if (!event) {
1460         return 0;
1461     }
1462     switch (event->eventTypeId) {
1463         case C_TOUCH_EVENT_ID: {
1464             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1465             if (!touchEvent || !touchEvent->historyEvents) {
1466                 return 0;
1467             }
1468             return touchEvent->historySize;
1469         }
1470         default:
1471             break;
1472     }
1473     return 0;
1474 }
1475 
OH_ArkUI_PointerEvent_GetHistoryEventTime(const ArkUI_UIInputEvent * event,uint32_t historyIndex)1476 int64_t OH_ArkUI_PointerEvent_GetHistoryEventTime(const ArkUI_UIInputEvent* event, uint32_t historyIndex)
1477 {
1478     if (!event) {
1479         return 0;
1480     }
1481     switch (event->eventTypeId) {
1482         case C_TOUCH_EVENT_ID: {
1483             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1484             if (!touchEvent || !touchEvent->historyEvents || touchEvent->historySize <= historyIndex ||
1485                 historyIndex < 0) {
1486                 return 0;
1487             }
1488             return touchEvent->historyEvents[historyIndex].timeStamp;
1489         }
1490         default:
1491             break;
1492     }
1493     return 0;
1494 }
1495 
OH_ArkUI_PointerEvent_GetHistoryPointerCount(const ArkUI_UIInputEvent * event,uint32_t historyIndex)1496 uint32_t OH_ArkUI_PointerEvent_GetHistoryPointerCount(const ArkUI_UIInputEvent* event, uint32_t historyIndex)
1497 {
1498     if (!event) {
1499         return 0;
1500     }
1501     switch (event->eventTypeId) {
1502         case C_TOUCH_EVENT_ID: {
1503             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1504             if (!touchEvent || !touchEvent->historyEvents || touchEvent->historySize <= historyIndex ||
1505                 historyIndex < 0) {
1506                 return 0;
1507             }
1508             return touchEvent->historyEvents[historyIndex].touchPointSize;
1509         }
1510         default:
1511             break;
1512     }
1513     return 0;
1514 }
1515 
OH_ArkUI_PointerEvent_GetHistoryPointerId(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1516 int32_t OH_ArkUI_PointerEvent_GetHistoryPointerId(
1517     const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1518 {
1519     if (!event) {
1520         return 0;
1521     }
1522     switch (event->eventTypeId) {
1523         case C_TOUCH_EVENT_ID: {
1524             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1525             if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1526                 return 0;
1527             }
1528             return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].id;
1529         }
1530         default:
1531             break;
1532     }
1533     return 0;
1534 }
1535 
OH_ArkUI_PointerEvent_GetHistoryX(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1536 float OH_ArkUI_PointerEvent_GetHistoryX(const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1537 {
1538     if (!event) {
1539         return 0.0f;
1540     }
1541     switch (event->eventTypeId) {
1542         case C_TOUCH_EVENT_ID: {
1543             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1544             if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1545                 return 0.0f;
1546             }
1547             return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].nodeX;
1548         }
1549         default:
1550             break;
1551     }
1552     return 0.0f;
1553 }
1554 
OH_ArkUI_PointerEvent_GetHistoryY(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1555 float OH_ArkUI_PointerEvent_GetHistoryY(const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1556 {
1557     if (!event) {
1558         return 0.0f;
1559     }
1560     switch (event->eventTypeId) {
1561         case C_TOUCH_EVENT_ID: {
1562             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1563             if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1564                 return 0.0f;
1565             }
1566             return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].nodeY;
1567         }
1568         default:
1569             break;
1570     }
1571     return 0.0f;
1572 }
1573 
OH_ArkUI_PointerEvent_GetHistoryWindowX(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1574 float OH_ArkUI_PointerEvent_GetHistoryWindowX(
1575     const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1576 {
1577     if (!event) {
1578         return 0.0f;
1579     }
1580     switch (event->eventTypeId) {
1581         case C_TOUCH_EVENT_ID: {
1582             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1583             if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1584                 return 0.0f;
1585             }
1586             return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].windowX;
1587         }
1588         default:
1589             break;
1590     }
1591     return 0.0f;
1592 }
1593 
OH_ArkUI_PointerEvent_GetHistoryWindowY(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1594 float OH_ArkUI_PointerEvent_GetHistoryWindowY(
1595     const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1596 {
1597     if (!event) {
1598         return 0.0f;
1599     }
1600     switch (event->eventTypeId) {
1601         case C_TOUCH_EVENT_ID: {
1602             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1603             if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1604                 return 0.0f;
1605             }
1606             return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].windowY;
1607         }
1608         default:
1609             break;
1610     }
1611     return 0.0f;
1612 }
1613 
OH_ArkUI_PointerEvent_GetHistoryDisplayX(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1614 float OH_ArkUI_PointerEvent_GetHistoryDisplayX(
1615     const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1616 {
1617     if (!event) {
1618         return 0.0f;
1619     }
1620     switch (event->eventTypeId) {
1621         case C_TOUCH_EVENT_ID: {
1622             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1623             if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1624                 return 0.0f;
1625             }
1626             return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].screenX;
1627         }
1628         default:
1629             break;
1630     }
1631     return 0.0f;
1632 }
1633 
OH_ArkUI_PointerEvent_GetHistoryDisplayY(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1634 float OH_ArkUI_PointerEvent_GetHistoryDisplayY(
1635     const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1636 {
1637     if (!event) {
1638         return 0.0f;
1639     }
1640     switch (event->eventTypeId) {
1641         case C_TOUCH_EVENT_ID: {
1642             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1643             if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1644                 return 0.0f;
1645             }
1646             return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].screenY;
1647         }
1648         default:
1649             break;
1650     }
1651     return 0.0f;
1652 }
1653 
OH_ArkUI_PointerEvent_GetHistoryPressure(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1654 float OH_ArkUI_PointerEvent_GetHistoryPressure(
1655     const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1656 {
1657     if (!event) {
1658         return 0.0f;
1659     }
1660     switch (event->eventTypeId) {
1661         case C_TOUCH_EVENT_ID: {
1662             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1663             if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1664                 return 0.0f;
1665             }
1666             return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].pressure;
1667         }
1668         default:
1669             break;
1670     }
1671     return 0.0f;
1672 }
1673 
OH_ArkUI_PointerEvent_GetHistoryTiltX(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1674 float OH_ArkUI_PointerEvent_GetHistoryTiltX(
1675     const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1676 {
1677     if (!event) {
1678         return 0.0f;
1679     }
1680     switch (event->eventTypeId) {
1681         case C_TOUCH_EVENT_ID: {
1682             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1683             if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1684                 return 0.0f;
1685             }
1686             return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].tiltX;
1687         }
1688         default:
1689             break;
1690     }
1691     return 0.0f;
1692 }
1693 
OH_ArkUI_PointerEvent_GetHistoryTiltY(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1694 float OH_ArkUI_PointerEvent_GetHistoryTiltY(
1695     const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1696 {
1697     if (!event) {
1698         return 0.0f;
1699     }
1700     switch (event->eventTypeId) {
1701         case C_TOUCH_EVENT_ID: {
1702             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1703             if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1704                 return 0.0f;
1705             }
1706             return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].tiltY;
1707         }
1708         default:
1709             break;
1710     }
1711     return 0.0f;
1712 }
1713 
OH_ArkUI_PointerEvent_GetHistoryTouchAreaWidth(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1714 float OH_ArkUI_PointerEvent_GetHistoryTouchAreaWidth(
1715     const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1716 {
1717     if (!event) {
1718         return 0.0f;
1719     }
1720     switch (event->eventTypeId) {
1721         case C_TOUCH_EVENT_ID: {
1722             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1723             if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1724                 return 0.0f;
1725             }
1726             return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].contactAreaWidth;
1727         }
1728         default:
1729             break;
1730     }
1731     return 0.0f;
1732 }
1733 
OH_ArkUI_PointerEvent_GetHistoryTouchAreaHeight(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1734 float OH_ArkUI_PointerEvent_GetHistoryTouchAreaHeight(
1735     const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1736 {
1737     if (!event) {
1738         return 0.0f;
1739     }
1740     switch (event->eventTypeId) {
1741         case C_TOUCH_EVENT_ID: {
1742             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1743             if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1744                 return 0.0f;
1745             }
1746             return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].contactAreaHeight;
1747         }
1748         default:
1749             break;
1750     }
1751     return 0.0f;
1752 }
1753 
OH_ArkUI_AxisEvent_GetVerticalAxisValue(const ArkUI_UIInputEvent * event)1754 double OH_ArkUI_AxisEvent_GetVerticalAxisValue(const ArkUI_UIInputEvent* event)
1755 {
1756     if (!event) {
1757         return 0.0;
1758     }
1759     switch (event->eventTypeId) {
1760         case AXIS_EVENT_ID: {
1761             const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
1762             if (axisEvent) {
1763                 return axisEvent->verticalAxis;
1764             }
1765             break;
1766         }
1767         case C_AXIS_EVENT_ID: {
1768             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
1769             if (!axisEvent) {
1770                 return 0.0;
1771             }
1772             return axisEvent->verticalAxis;
1773         }
1774         default:
1775             break;
1776     }
1777     return 0.0;
1778 }
1779 
OH_ArkUI_AxisEvent_GetHorizontalAxisValue(const ArkUI_UIInputEvent * event)1780 double OH_ArkUI_AxisEvent_GetHorizontalAxisValue(const ArkUI_UIInputEvent* event)
1781 {
1782     if (!event) {
1783         return 0.0;
1784     }
1785     switch (event->eventTypeId) {
1786         case AXIS_EVENT_ID: {
1787             const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
1788             if (axisEvent) {
1789                 return axisEvent->horizontalAxis;
1790             }
1791             break;
1792         }
1793         case C_AXIS_EVENT_ID: {
1794             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
1795             if (!axisEvent) {
1796                 return 0.0;
1797             }
1798             return axisEvent->horizontalAxis;
1799         }
1800         default:
1801             break;
1802     }
1803     return 0.0;
1804 }
1805 
OH_ArkUI_AxisEvent_GetPinchAxisScaleValue(const ArkUI_UIInputEvent * event)1806 double OH_ArkUI_AxisEvent_GetPinchAxisScaleValue(const ArkUI_UIInputEvent* event)
1807 {
1808     if (!event) {
1809         return 0.0;
1810     }
1811     switch (event->eventTypeId) {
1812         case AXIS_EVENT_ID: {
1813             const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
1814             if (axisEvent) {
1815                 return axisEvent->pinchAxisScale;
1816             }
1817             break;
1818         }
1819         case C_AXIS_EVENT_ID: {
1820             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
1821             if (!axisEvent) {
1822                 return 0.0;
1823             }
1824             return axisEvent->pinchAxisScale;
1825         }
1826         default:
1827             break;
1828     }
1829     return 0.0;
1830 }
1831 
OH_ArkUI_AxisEvent_GetAxisAction(const ArkUI_UIInputEvent * event)1832 int32_t OH_ArkUI_AxisEvent_GetAxisAction(const ArkUI_UIInputEvent* event)
1833 {
1834     if (!event) {
1835         return UI_AXIS_EVENT_ACTION_NONE;
1836     }
1837     switch (event->eventTypeId) {
1838         case AXIS_EVENT_ID: {
1839             const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
1840             if (axisEvent) {
1841                 return OHOS::Ace::NodeModel::ConvertToCAxisActionType(static_cast<int32_t>(axisEvent->action));
1842             }
1843             break;
1844         }
1845         case C_AXIS_EVENT_ID: {
1846             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
1847             if (axisEvent) {
1848                 return OHOS::Ace::NodeModel::ConvertToCAxisActionType(axisEvent->action);
1849             }
1850             break;
1851         }
1852         default:
1853             break;
1854     }
1855     return UI_AXIS_EVENT_ACTION_NONE;
1856 }
1857 
OH_ArkUI_PointerEvent_SetInterceptHitTestMode(const ArkUI_UIInputEvent * event,HitTestMode mode)1858 int32_t OH_ArkUI_PointerEvent_SetInterceptHitTestMode(const ArkUI_UIInputEvent* event, HitTestMode mode)
1859 {
1860     if (!event) {
1861         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
1862     }
1863     switch (event->eventTypeId) {
1864         case C_TOUCH_EVENT_ID: {
1865             auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1866             touchEvent->interceptResult = static_cast<int32_t>(mode);
1867             break;
1868         }
1869         case C_MOUSE_EVENT_ID: {
1870             auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1871             if (!mouseEvent) {
1872                 return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
1873             }
1874             return mouseEvent->interceptResult = static_cast<int32_t>(mode);
1875         }
1876         default:
1877             return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
1878     }
1879     return OHOS::Ace::ERROR_CODE_NO_ERROR;
1880 }
1881 
OH_ArkUI_PointerEvent_SetStopPropagation(const ArkUI_UIInputEvent * event,bool stopPropagation)1882 int32_t OH_ArkUI_PointerEvent_SetStopPropagation(const ArkUI_UIInputEvent* event, bool stopPropagation)
1883 {
1884     if (!event) {
1885         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
1886     }
1887     switch (event->eventTypeId) {
1888         case C_TOUCH_EVENT_ID: {
1889             auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1890             touchEvent->stopPropagation = stopPropagation;
1891             break;
1892         }
1893         case C_MOUSE_EVENT_ID: {
1894             auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1895             mouseEvent->stopPropagation = stopPropagation;
1896             break;
1897         }
1898         case C_HOVER_EVENT_ID: {
1899             auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
1900             hoverEvent->stopPropagation = stopPropagation;
1901             break;
1902         }
1903         default:
1904             return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
1905     }
1906     return OHOS::Ace::ERROR_CODE_NO_ERROR;
1907 }
1908 
OH_ArkUI_MouseEvent_GetMouseButton(const ArkUI_UIInputEvent * event)1909 int32_t OH_ArkUI_MouseEvent_GetMouseButton(const ArkUI_UIInputEvent* event)
1910 {
1911     if (!event) {
1912         return -1;
1913     }
1914     switch (event->eventTypeId) {
1915         case C_MOUSE_EVENT_ID: {
1916             const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1917             if (!mouseEvent) {
1918                 return -1;
1919             }
1920             return OHOS::Ace::NodeModel::ConvertToCMouseEventButtonType(mouseEvent->button);
1921         }
1922         default:
1923             break;
1924     }
1925     return -1;
1926 }
1927 
OH_ArkUI_MouseEvent_GetMouseAction(const ArkUI_UIInputEvent * event)1928 int32_t OH_ArkUI_MouseEvent_GetMouseAction(const ArkUI_UIInputEvent* event)
1929 {
1930     if (!event) {
1931         return -1;
1932     }
1933     switch (event->eventTypeId) {
1934         case C_MOUSE_EVENT_ID: {
1935             const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1936             if (!mouseEvent) {
1937                 return -1;
1938             }
1939             return OHOS::Ace::NodeModel::ConvertToCMouseActionType(mouseEvent->action);
1940         }
1941         default:
1942             break;
1943     }
1944     return -1;
1945 }
1946 
OH_ArkUI_PointerEvent_GetPressedTimeByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)1947 int64_t OH_ArkUI_PointerEvent_GetPressedTimeByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
1948 {
1949     if (!event) {
1950         return 0;
1951     }
1952     switch (event->eventTypeId) {
1953         case C_TOUCH_EVENT_ID: {
1954             const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1955             if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
1956                 return 0;
1957             }
1958             return touchEvent->touchPointes[pointerIndex].pressedTime;
1959         }
1960         default:
1961             break;
1962     }
1963     return 0;
1964 }
1965 
OH_ArkUI_MouseEvent_GetRawDeltaX(const ArkUI_UIInputEvent * event)1966 float OH_ArkUI_MouseEvent_GetRawDeltaX(const ArkUI_UIInputEvent* event)
1967 {
1968     if (!event) {
1969         return 0.0f;
1970     }
1971     switch (event->eventTypeId) {
1972         case C_MOUSE_EVENT_ID: {
1973             auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1974             if (!mouseEvent) {
1975                 return 0.0f;
1976             }
1977             return mouseEvent->rawDeltaX;
1978         }
1979         default:
1980             break;
1981     }
1982     return 0.0f;
1983 }
1984 
OH_ArkUI_MouseEvent_GetRawDeltaY(const ArkUI_UIInputEvent * event)1985 float OH_ArkUI_MouseEvent_GetRawDeltaY(const ArkUI_UIInputEvent* event)
1986 {
1987     if (!event) {
1988         return 0.0f;
1989     }
1990     switch (event->eventTypeId) {
1991         case C_MOUSE_EVENT_ID: {
1992             auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1993             if (!mouseEvent) {
1994                 return 0.0f;
1995             }
1996             return mouseEvent->rawDeltaY;
1997         }
1998         default:
1999             break;
2000     }
2001     return 0.0f;
2002 }
2003 
OH_ArkUI_UIInputEvent_GetTargetDisplayId(const ArkUI_UIInputEvent * event)2004 int32_t OH_ArkUI_UIInputEvent_GetTargetDisplayId(const ArkUI_UIInputEvent* event)
2005 {
2006     if (!event) {
2007         return 0;
2008     }
2009     auto getTargetDisplayId = [](auto* specificEvent) -> int32_t {
2010         return specificEvent ? specificEvent->targetDisplayId : 0;
2011     };
2012     switch (event->eventTypeId) {
2013         case C_MOUSE_EVENT_ID:
2014             return getTargetDisplayId(reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent));
2015         case C_TOUCH_EVENT_ID:
2016             return getTargetDisplayId(reinterpret_cast<ArkUITouchEvent*>(event->inputEvent));
2017         case C_AXIS_EVENT_ID:
2018             return getTargetDisplayId(reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent));
2019         case C_FOCUS_AXIS_EVENT_ID:
2020             return getTargetDisplayId(reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent));
2021         case TOUCH_EVENT_ID: {
2022             return getTargetDisplayId(reinterpret_cast<OHOS::Ace::TouchEvent*>(event->inputEvent));
2023         }
2024         case AXIS_EVENT_ID: {
2025             return getTargetDisplayId(reinterpret_cast<OHOS::Ace::AxisEvent*>(event->inputEvent));
2026         }
2027         default:
2028             return 0;
2029     }
2030 }
2031 
OH_ArkUI_MouseEvent_GetPressedButtons(const ArkUI_UIInputEvent * event,int32_t * pressedButtons,int32_t * length)2032 int32_t OH_ArkUI_MouseEvent_GetPressedButtons(const ArkUI_UIInputEvent* event, int32_t* pressedButtons, int32_t* length)
2033 {
2034     if (!event || !pressedButtons || !length) {
2035         return ARKUI_ERROR_CODE_PARAM_INVALID;
2036     }
2037     switch (event->eventTypeId) {
2038         case C_MOUSE_EVENT_ID: {
2039             auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
2040             if (!mouseEvent) {
2041                 return ARKUI_ERROR_CODE_PARAM_INVALID;
2042             }
2043             auto inputLength = *length;
2044             if (mouseEvent->pressedButtonsLength > inputLength) {
2045                 return ARKUI_ERROR_CODE_BUFFER_SIZE_NOT_ENOUGH;
2046             }
2047             *length = mouseEvent->pressedButtonsLength;
2048             for (int i = 0; i < mouseEvent->pressedButtonsLength; i++) {
2049                 pressedButtons[i] = mouseEvent->pressedButtons[i];
2050             }
2051             return ARKUI_ERROR_CODE_NO_ERROR;
2052         }
2053         default:
2054             break;
2055     }
2056     return ARKUI_ERROR_CODE_PARAM_INVALID;
2057 }
2058 
OH_ArkUI_FocusAxisEvent_GetAxisValue(const ArkUI_UIInputEvent * event,int32_t axis)2059 double OH_ArkUI_FocusAxisEvent_GetAxisValue(const ArkUI_UIInputEvent* event, int32_t axis)
2060 {
2061     if (!event) {
2062         return 0.0;
2063     }
2064     if (event->eventTypeId != C_FOCUS_AXIS_EVENT_ID) {
2065         return 0.0f;
2066     }
2067     const auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
2068     if (!focusAxisEvent) {
2069         return 0.0;
2070     }
2071     switch (axis) {
2072         case UI_FOCUS_AXIS_EVENT_ABS_X:
2073             return focusAxisEvent->absXValue;
2074         case UI_FOCUS_AXIS_EVENT_ABS_Y:
2075             return focusAxisEvent->absYValue;
2076         case UI_FOCUS_AXIS_EVENT_ABS_Z:
2077             return focusAxisEvent->absZValue;
2078         case UI_FOCUS_AXIS_EVENT_ABS_RZ:
2079             return focusAxisEvent->absRzValue;
2080         case UI_FOCUS_AXIS_EVENT_ABS_GAS:
2081             return focusAxisEvent->absGasValue;
2082         case UI_FOCUS_AXIS_EVENT_ABS_BRAKE:
2083             return focusAxisEvent->absBrakeValue;
2084         case UI_FOCUS_AXIS_EVENT_ABS_HAT0X:
2085             return focusAxisEvent->absHat0XValue;
2086         case UI_FOCUS_AXIS_EVENT_ABS_HAT0Y:
2087             return focusAxisEvent->absHat0YValue;
2088         default:
2089             return 0.0;
2090     }
2091     return 0.0;
2092 }
2093 
OH_ArkUI_FocusAxisEvent_SetStopPropagation(const ArkUI_UIInputEvent * event,bool stopPropagation)2094 int32_t OH_ArkUI_FocusAxisEvent_SetStopPropagation(const ArkUI_UIInputEvent* event, bool stopPropagation)
2095 {
2096     if (!event) {
2097         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2098     }
2099     switch (event->eventTypeId) {
2100         case C_FOCUS_AXIS_EVENT_ID: {
2101             auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
2102             focusAxisEvent->stopPropagation = stopPropagation;
2103             break;
2104         }
2105         default:
2106             return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2107     }
2108     return OHOS::Ace::ERROR_CODE_NO_ERROR;
2109 }
2110 
HandleCMouseEventTargetWidth(const ArkUI_UIInputEvent * event)2111 float HandleCMouseEventTargetWidth(const ArkUI_UIInputEvent* event)
2112 {
2113     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
2114     if (!mouseEvent) {
2115         return 0.0f;
2116     }
2117     return mouseEvent->width;
2118 }
2119 
HandleCTouchEventTargetWidth(const ArkUI_UIInputEvent * event)2120 float HandleCTouchEventTargetWidth(const ArkUI_UIInputEvent* event)
2121 {
2122     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2123     if (!touchEvent) {
2124         return 0.0f;
2125     }
2126     return touchEvent->width;
2127 }
2128 
HandleCHoverEventTargetWidth(const ArkUI_UIInputEvent * event)2129 float HandleCHoverEventTargetWidth(const ArkUI_UIInputEvent* event)
2130 {
2131     const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
2132     if (!hoverEvent) {
2133         return 0.0f;
2134     }
2135     return hoverEvent->width;
2136 }
2137 
HandleCClickEventTargetWidth(const ArkUI_UIInputEvent * event)2138 float HandleCClickEventTargetWidth(const ArkUI_UIInputEvent* event)
2139 {
2140     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
2141     if (!clickEvent) {
2142         return 0.0f;
2143     }
2144     return clickEvent->width;
2145 }
2146 
HandleCAxisEventTargetWidth(const ArkUI_UIInputEvent * event)2147 float HandleCAxisEventTargetWidth(const ArkUI_UIInputEvent* event)
2148 {
2149     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
2150     if (!axisEvent) {
2151         return 0.0f;
2152     }
2153     return axisEvent->width;
2154 }
2155 
HandleCFocusAxisEventTargetWidth(const ArkUI_UIInputEvent * event)2156 float HandleCFocusAxisEventTargetWidth(const ArkUI_UIInputEvent* event)
2157 {
2158     const auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
2159     if (!focusAxisEvent) {
2160         return 0.0f;
2161     }
2162     return focusAxisEvent->width;
2163 }
2164 
HandleAxisEventTargetWidth(const ArkUI_UIInputEvent * event)2165 float HandleAxisEventTargetWidth(const ArkUI_UIInputEvent* event)
2166 {
2167     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
2168     if (!axisEvent) {
2169         return 0.0f;
2170     }
2171     return axisEvent->width;
2172 }
2173 
HandleTouchEventTargetWidth(const ArkUI_UIInputEvent * event)2174 float HandleTouchEventTargetWidth(const ArkUI_UIInputEvent* event)
2175 {
2176     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
2177     if (!touchEvent) {
2178         return 0.0f;
2179     }
2180     return touchEvent->width;
2181 }
2182 
OH_ArkUI_UIInputEvent_GetEventTargetWidth(const ArkUI_UIInputEvent * event)2183 float OH_ArkUI_UIInputEvent_GetEventTargetWidth(const ArkUI_UIInputEvent* event)
2184 {
2185     if (!event) {
2186         return 0.0f;
2187     }
2188     std::map<ArkUIEventTypeId, std::function<float(ArkUI_UIInputEvent*)>> eventHandlers = {
2189         { C_TOUCH_EVENT_ID, HandleCTouchEventTargetWidth },
2190         { TOUCH_EVENT_ID, HandleTouchEventTargetWidth },
2191         { AXIS_EVENT_ID, HandleAxisEventTargetWidth },
2192         { C_MOUSE_EVENT_ID, HandleCMouseEventTargetWidth },
2193         { C_AXIS_EVENT_ID, HandleCAxisEventTargetWidth },
2194         { C_FOCUS_AXIS_EVENT_ID, HandleCFocusAxisEventTargetWidth },
2195         { C_HOVER_EVENT_ID, HandleCHoverEventTargetWidth },
2196         { C_CLICK_EVENT_ID, HandleCClickEventTargetWidth },
2197     };
2198     auto it = eventHandlers.find(event->eventTypeId);
2199     if (it != eventHandlers.end()) {
2200         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
2201         return it->second(inputEvent);
2202     }
2203     return 0.0f;
2204 }
2205 
HandleCMouseEventTargetHeight(const ArkUI_UIInputEvent * event)2206 float HandleCMouseEventTargetHeight(const ArkUI_UIInputEvent* event)
2207 {
2208     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
2209     if (!mouseEvent) {
2210         return 0.0f;
2211     }
2212     return mouseEvent->height;
2213 }
2214 
HandleCTouchEventTargetHeight(const ArkUI_UIInputEvent * event)2215 float HandleCTouchEventTargetHeight(const ArkUI_UIInputEvent* event)
2216 {
2217     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2218     if (!touchEvent) {
2219         return 0.0f;
2220     }
2221     return touchEvent->height;
2222 }
2223 
HandleCHoverEventTargetHeight(const ArkUI_UIInputEvent * event)2224 float HandleCHoverEventTargetHeight(const ArkUI_UIInputEvent* event)
2225 {
2226     const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
2227     if (!hoverEvent) {
2228         return 0.0f;
2229     }
2230     return hoverEvent->height;
2231 }
2232 
HandleCClickEventTargetHeight(const ArkUI_UIInputEvent * event)2233 float HandleCClickEventTargetHeight(const ArkUI_UIInputEvent* event)
2234 {
2235     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
2236     if (!clickEvent) {
2237         return 0.0f;
2238     }
2239     return clickEvent->height;
2240 }
2241 
HandleCAxisEventTargetHeight(const ArkUI_UIInputEvent * event)2242 float HandleCAxisEventTargetHeight(const ArkUI_UIInputEvent* event)
2243 {
2244     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
2245     if (!axisEvent) {
2246         return 0.0f;
2247     }
2248     return axisEvent->height;
2249 }
2250 
HandleCFocusAxisEventTargetHeight(const ArkUI_UIInputEvent * event)2251 float HandleCFocusAxisEventTargetHeight(const ArkUI_UIInputEvent* event)
2252 {
2253     const auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
2254     if (!focusAxisEvent) {
2255         return 0.0f;
2256     }
2257     return focusAxisEvent->height;
2258 }
2259 
HandleAxisEventTargetHeight(const ArkUI_UIInputEvent * event)2260 float HandleAxisEventTargetHeight(const ArkUI_UIInputEvent* event)
2261 {
2262     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
2263     if (!axisEvent) {
2264         return 0.0f;
2265     }
2266     return axisEvent->height;
2267 }
2268 
HandleTouchEventTargetHeight(const ArkUI_UIInputEvent * event)2269 float HandleTouchEventTargetHeight(const ArkUI_UIInputEvent* event)
2270 {
2271     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
2272     if (!touchEvent) {
2273         return 0.0f;
2274     }
2275     return touchEvent->height;
2276 }
2277 
OH_ArkUI_UIInputEvent_GetEventTargetHeight(const ArkUI_UIInputEvent * event)2278 float OH_ArkUI_UIInputEvent_GetEventTargetHeight(const ArkUI_UIInputEvent* event)
2279 {
2280     if (!event) {
2281         return 0.0f;
2282     }
2283     std::map<ArkUIEventTypeId, std::function<float(ArkUI_UIInputEvent*)>> eventHandlers = {
2284         { C_TOUCH_EVENT_ID, HandleCTouchEventTargetHeight },
2285         { TOUCH_EVENT_ID, HandleTouchEventTargetHeight },
2286         { AXIS_EVENT_ID, HandleAxisEventTargetHeight },
2287         { C_MOUSE_EVENT_ID, HandleCMouseEventTargetHeight },
2288         { C_AXIS_EVENT_ID, HandleCAxisEventTargetHeight },
2289         { C_FOCUS_AXIS_EVENT_ID, HandleCFocusAxisEventTargetHeight },
2290         { C_HOVER_EVENT_ID, HandleCHoverEventTargetHeight },
2291         { C_CLICK_EVENT_ID, HandleCClickEventTargetHeight },
2292     };
2293     auto it = eventHandlers.find(event->eventTypeId);
2294     if (it != eventHandlers.end()) {
2295         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
2296         return it->second(inputEvent);
2297     }
2298     return 0.0f;
2299 }
2300 
HandleCMouseEventTargetPositionX(const ArkUI_UIInputEvent * event)2301 float HandleCMouseEventTargetPositionX(const ArkUI_UIInputEvent* event)
2302 {
2303     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
2304     if (!mouseEvent) {
2305         return 0.0f;
2306     }
2307     return mouseEvent->targetPositionX;
2308 }
2309 
HandleCTouchEventTargetPositionX(const ArkUI_UIInputEvent * event)2310 float HandleCTouchEventTargetPositionX(const ArkUI_UIInputEvent* event)
2311 {
2312     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2313     if (!touchEvent) {
2314         return 0.0f;
2315     }
2316     return touchEvent->targetPositionX;
2317 }
2318 
HandleCHoverEventTargetPositionX(const ArkUI_UIInputEvent * event)2319 float HandleCHoverEventTargetPositionX(const ArkUI_UIInputEvent* event)
2320 {
2321     const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
2322     if (!hoverEvent) {
2323         return 0.0f;
2324     }
2325     return hoverEvent->targetPositionX;
2326 }
2327 
HandleCClickEventTargetPositionX(const ArkUI_UIInputEvent * event)2328 float HandleCClickEventTargetPositionX(const ArkUI_UIInputEvent* event)
2329 {
2330     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
2331     if (!clickEvent) {
2332         return 0.0f;
2333     }
2334     return clickEvent->targetPositionX;
2335 }
2336 
HandleCAxisEventTargetPositionX(const ArkUI_UIInputEvent * event)2337 float HandleCAxisEventTargetPositionX(const ArkUI_UIInputEvent* event)
2338 {
2339     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
2340     if (!axisEvent) {
2341         return 0.0f;
2342     }
2343     return axisEvent->targetPositionX;
2344 }
2345 
HandleCFocusAxisEventTargetPositionX(const ArkUI_UIInputEvent * event)2346 float HandleCFocusAxisEventTargetPositionX(const ArkUI_UIInputEvent* event)
2347 {
2348     const auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
2349     if (!focusAxisEvent) {
2350         return 0.0f;
2351     }
2352     return focusAxisEvent->targetPositionX;
2353 }
2354 
HandleAxisEventTargetPositionX(const ArkUI_UIInputEvent * event)2355 float HandleAxisEventTargetPositionX(const ArkUI_UIInputEvent* event)
2356 {
2357     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
2358     if (!axisEvent) {
2359         return 0.0f;
2360     }
2361     return axisEvent->targetPositionX;
2362 }
2363 
HandleTouchEventTargetPositionX(const ArkUI_UIInputEvent * event)2364 float HandleTouchEventTargetPositionX(const ArkUI_UIInputEvent* event)
2365 {
2366     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
2367     if (!touchEvent) {
2368         return 0.0f;
2369     }
2370     return touchEvent->targetPositionX;
2371 }
2372 
OH_ArkUI_UIInputEvent_GetEventTargetPositionX(const ArkUI_UIInputEvent * event)2373 float OH_ArkUI_UIInputEvent_GetEventTargetPositionX(const ArkUI_UIInputEvent* event)
2374 {
2375     if (!event) {
2376         return 0.0f;
2377     }
2378     std::map<ArkUIEventTypeId, std::function<float(ArkUI_UIInputEvent*)>> eventHandlers = {
2379         { C_TOUCH_EVENT_ID, HandleCTouchEventTargetPositionX },
2380         { TOUCH_EVENT_ID, HandleTouchEventTargetPositionX },
2381         { AXIS_EVENT_ID, HandleAxisEventTargetPositionX },
2382         { C_MOUSE_EVENT_ID, HandleCMouseEventTargetPositionX },
2383         { C_AXIS_EVENT_ID, HandleCAxisEventTargetPositionX },
2384         { C_FOCUS_AXIS_EVENT_ID, HandleCFocusAxisEventTargetPositionX },
2385         { C_HOVER_EVENT_ID, HandleCHoverEventTargetPositionX },
2386         { C_CLICK_EVENT_ID, HandleCClickEventTargetPositionX },
2387     };
2388     auto it = eventHandlers.find(event->eventTypeId);
2389     if (it != eventHandlers.end()) {
2390         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
2391         return it->second(inputEvent);
2392     }
2393     return 0.0f;
2394 }
2395 
HandleCMouseEventTargetPositionY(const ArkUI_UIInputEvent * event)2396 float HandleCMouseEventTargetPositionY(const ArkUI_UIInputEvent* event)
2397 {
2398     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
2399     if (!mouseEvent) {
2400         return 0.0f;
2401     }
2402     return mouseEvent->targetPositionY;
2403 }
2404 
HandleCTouchEventTargetPositionY(const ArkUI_UIInputEvent * event)2405 float HandleCTouchEventTargetPositionY(const ArkUI_UIInputEvent* event)
2406 {
2407     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2408     if (!touchEvent) {
2409         return 0.0f;
2410     }
2411     return touchEvent->targetPositionY;
2412 }
2413 
HandleCHoverEventTargetPositionY(const ArkUI_UIInputEvent * event)2414 float HandleCHoverEventTargetPositionY(const ArkUI_UIInputEvent* event)
2415 {
2416     const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
2417     if (!hoverEvent) {
2418         return 0.0f;
2419     }
2420     return hoverEvent->targetPositionY;
2421 }
2422 
HandleCClickEventTargetPositionY(const ArkUI_UIInputEvent * event)2423 float HandleCClickEventTargetPositionY(const ArkUI_UIInputEvent* event)
2424 {
2425     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
2426     if (!clickEvent) {
2427         return 0.0f;
2428     }
2429     return clickEvent->targetPositionY;
2430 }
2431 
HandleCAxisEventTargetPositionY(const ArkUI_UIInputEvent * event)2432 float HandleCAxisEventTargetPositionY(const ArkUI_UIInputEvent* event)
2433 {
2434     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
2435     if (!axisEvent) {
2436         return 0.0f;
2437     }
2438     return axisEvent->targetPositionY;
2439 }
2440 
HandleCFocusAxisEventTargetPositionY(const ArkUI_UIInputEvent * event)2441 float HandleCFocusAxisEventTargetPositionY(const ArkUI_UIInputEvent* event)
2442 {
2443     const auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
2444     if (!focusAxisEvent) {
2445         return 0.0f;
2446     }
2447     return focusAxisEvent->targetPositionY;
2448 }
2449 
HandleAxisEventTargetPositionY(const ArkUI_UIInputEvent * event)2450 float HandleAxisEventTargetPositionY(const ArkUI_UIInputEvent* event)
2451 {
2452     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
2453     if (!axisEvent) {
2454         return 0.0f;
2455     }
2456     return axisEvent->targetPositionY;
2457 }
2458 
HandleTouchEventTargetPositionY(const ArkUI_UIInputEvent * event)2459 float HandleTouchEventTargetPositionY(const ArkUI_UIInputEvent* event)
2460 {
2461     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
2462     if (!touchEvent) {
2463         return 0.0f;
2464     }
2465     return touchEvent->targetPositionY;
2466 }
2467 
OH_ArkUI_UIInputEvent_GetEventTargetPositionY(const ArkUI_UIInputEvent * event)2468 float OH_ArkUI_UIInputEvent_GetEventTargetPositionY(const ArkUI_UIInputEvent* event)
2469 {
2470     if (!event) {
2471         return 0.0f;
2472     }
2473     std::map<ArkUIEventTypeId, std::function<float(ArkUI_UIInputEvent*)>> eventHandlers = {
2474         { C_TOUCH_EVENT_ID, HandleCTouchEventTargetPositionY },
2475         { TOUCH_EVENT_ID, HandleTouchEventTargetPositionY },
2476         { AXIS_EVENT_ID, HandleAxisEventTargetPositionY },
2477         { C_MOUSE_EVENT_ID, HandleCMouseEventTargetPositionY },
2478         { C_AXIS_EVENT_ID, HandleCAxisEventTargetPositionY },
2479         { C_FOCUS_AXIS_EVENT_ID, HandleCFocusAxisEventTargetPositionY },
2480         { C_HOVER_EVENT_ID, HandleCHoverEventTargetPositionY },
2481         { C_CLICK_EVENT_ID, HandleCClickEventTargetPositionY },
2482     };
2483     auto it = eventHandlers.find(event->eventTypeId);
2484     if (it != eventHandlers.end()) {
2485         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
2486         return it->second(inputEvent);
2487     }
2488     return 0.0f;
2489 }
2490 
HandleCMouseEventTargetGlobalPositionX(const ArkUI_UIInputEvent * event)2491 float HandleCMouseEventTargetGlobalPositionX(const ArkUI_UIInputEvent* event)
2492 {
2493     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
2494     if (!mouseEvent) {
2495         return 0.0f;
2496     }
2497     return mouseEvent->targetGlobalPositionX;
2498 }
2499 
HandleCTouchEventTargetGlobalPositionX(const ArkUI_UIInputEvent * event)2500 float HandleCTouchEventTargetGlobalPositionX(const ArkUI_UIInputEvent* event)
2501 {
2502     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2503     if (!touchEvent) {
2504         return 0.0f;
2505     }
2506     return touchEvent->targetGlobalPositionX;
2507 }
2508 
HandleCHoverEventTargetGlobalPositionX(const ArkUI_UIInputEvent * event)2509 float HandleCHoverEventTargetGlobalPositionX(const ArkUI_UIInputEvent* event)
2510 {
2511     const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
2512     if (!hoverEvent) {
2513         return 0.0f;
2514     }
2515     return hoverEvent->targetGlobalPositionX;
2516 }
2517 
HandleCClickEventTargetGlobalPositionX(const ArkUI_UIInputEvent * event)2518 float HandleCClickEventTargetGlobalPositionX(const ArkUI_UIInputEvent* event)
2519 {
2520     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
2521     if (!clickEvent) {
2522         return 0.0f;
2523     }
2524     return clickEvent->targetGlobalPositionX;
2525 }
2526 
HandleCAxisEventTargetGlobalPositionX(const ArkUI_UIInputEvent * event)2527 float HandleCAxisEventTargetGlobalPositionX(const ArkUI_UIInputEvent* event)
2528 {
2529     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
2530     if (!axisEvent) {
2531         return 0.0f;
2532     }
2533     return axisEvent->targetGlobalPositionX;
2534 }
2535 
HandleCFocusAxisEventTargetGlobalPositionX(const ArkUI_UIInputEvent * event)2536 float HandleCFocusAxisEventTargetGlobalPositionX(const ArkUI_UIInputEvent* event)
2537 {
2538     const auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
2539     if (!focusAxisEvent) {
2540         return 0.0f;
2541     }
2542     return focusAxisEvent->targetGlobalPositionX;
2543 }
2544 
HandleAxisEventTargetGlobalPositionX(const ArkUI_UIInputEvent * event)2545 float HandleAxisEventTargetGlobalPositionX(const ArkUI_UIInputEvent* event)
2546 {
2547     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
2548     if (!axisEvent) {
2549         return 0.0f;
2550     }
2551     return axisEvent->targetGlobalPositionX;
2552 }
2553 
HandleTouchEventTargetGlobalPositionX(const ArkUI_UIInputEvent * event)2554 float HandleTouchEventTargetGlobalPositionX(const ArkUI_UIInputEvent* event)
2555 {
2556     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
2557     if (!touchEvent) {
2558         return 0.0f;
2559     }
2560     return touchEvent->targetGlobalPositionX;
2561 }
2562 
OH_ArkUI_UIInputEvent_GetEventTargetGlobalPositionX(const ArkUI_UIInputEvent * event)2563 float OH_ArkUI_UIInputEvent_GetEventTargetGlobalPositionX(const ArkUI_UIInputEvent* event)
2564 {
2565     if (!event) {
2566         return 0.0f;
2567     }
2568     std::map<ArkUIEventTypeId, std::function<float(ArkUI_UIInputEvent*)>> eventHandlers = {
2569         { C_TOUCH_EVENT_ID, HandleCTouchEventTargetGlobalPositionX },
2570         { TOUCH_EVENT_ID, HandleTouchEventTargetGlobalPositionX },
2571         { AXIS_EVENT_ID, HandleAxisEventTargetGlobalPositionX },
2572         { C_MOUSE_EVENT_ID, HandleCMouseEventTargetGlobalPositionX },
2573         { C_AXIS_EVENT_ID, HandleCAxisEventTargetGlobalPositionX },
2574         { C_FOCUS_AXIS_EVENT_ID, HandleCFocusAxisEventTargetGlobalPositionX },
2575         { C_HOVER_EVENT_ID, HandleCHoverEventTargetGlobalPositionX },
2576         { C_CLICK_EVENT_ID, HandleCClickEventTargetGlobalPositionX },
2577     };
2578     auto it = eventHandlers.find(event->eventTypeId);
2579     if (it != eventHandlers.end()) {
2580         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
2581         return it->second(inputEvent);
2582     }
2583     return 0.0f;
2584 }
2585 
HandleCMouseEventTargetGlobalPositionY(const ArkUI_UIInputEvent * event)2586 float HandleCMouseEventTargetGlobalPositionY(const ArkUI_UIInputEvent* event)
2587 {
2588     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
2589     if (!mouseEvent) {
2590         return 0.0f;
2591     }
2592     return mouseEvent->targetGlobalPositionY;
2593 }
2594 
HandleCTouchEventTargetGlobalPositionY(const ArkUI_UIInputEvent * event)2595 float HandleCTouchEventTargetGlobalPositionY(const ArkUI_UIInputEvent* event)
2596 {
2597     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2598     if (!touchEvent) {
2599         return 0.0f;
2600     }
2601     return touchEvent->targetGlobalPositionY;
2602 }
2603 
HandleCHoverEventTargetGlobalPositionY(const ArkUI_UIInputEvent * event)2604 float HandleCHoverEventTargetGlobalPositionY(const ArkUI_UIInputEvent* event)
2605 {
2606     const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
2607     if (!hoverEvent) {
2608         return 0.0f;
2609     }
2610     return hoverEvent->targetGlobalPositionY;
2611 }
2612 
HandleCClickEventTargetGlobalPositionY(const ArkUI_UIInputEvent * event)2613 float HandleCClickEventTargetGlobalPositionY(const ArkUI_UIInputEvent* event)
2614 {
2615     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
2616     if (!clickEvent) {
2617         return 0.0f;
2618     }
2619     return clickEvent->targetGlobalPositionY;
2620 }
2621 
HandleCAxisEventTargetGlobalPositionY(const ArkUI_UIInputEvent * event)2622 float HandleCAxisEventTargetGlobalPositionY(const ArkUI_UIInputEvent* event)
2623 {
2624     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
2625     if (!axisEvent) {
2626         return 0.0f;
2627     }
2628     return axisEvent->targetGlobalPositionY;
2629 }
2630 
HandleCFocusAxisEventTargetGlobalPositionY(const ArkUI_UIInputEvent * event)2631 float HandleCFocusAxisEventTargetGlobalPositionY(const ArkUI_UIInputEvent* event)
2632 {
2633     const auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
2634     if (!focusAxisEvent) {
2635         return 0.0f;
2636     }
2637     return focusAxisEvent->targetGlobalPositionY;
2638 }
2639 
HandleAxisEventTargetGlobalPositionY(const ArkUI_UIInputEvent * event)2640 float HandleAxisEventTargetGlobalPositionY(const ArkUI_UIInputEvent* event)
2641 {
2642     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
2643     if (!axisEvent) {
2644         return 0.0f;
2645     }
2646     return axisEvent->targetGlobalPositionY;
2647 }
2648 
HandleTouchEventTargetGlobalPositionY(const ArkUI_UIInputEvent * event)2649 float HandleTouchEventTargetGlobalPositionY(const ArkUI_UIInputEvent* event)
2650 {
2651     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
2652     if (!touchEvent) {
2653         return 0.0f;
2654     }
2655     return touchEvent->targetGlobalPositionY;
2656 }
2657 
OH_ArkUI_UIInputEvent_GetEventTargetGlobalPositionY(const ArkUI_UIInputEvent * event)2658 float OH_ArkUI_UIInputEvent_GetEventTargetGlobalPositionY(const ArkUI_UIInputEvent* event)
2659 {
2660     if (!event) {
2661         return 0.0f;
2662     }
2663     std::map<ArkUIEventTypeId, std::function<float(ArkUI_UIInputEvent*)>> eventHandlers = {
2664         { C_TOUCH_EVENT_ID, HandleCTouchEventTargetGlobalPositionY },
2665         { TOUCH_EVENT_ID, HandleTouchEventTargetGlobalPositionY },
2666         { AXIS_EVENT_ID, HandleAxisEventTargetGlobalPositionY },
2667         { C_MOUSE_EVENT_ID, HandleCMouseEventTargetGlobalPositionY },
2668         { C_AXIS_EVENT_ID, HandleCAxisEventTargetGlobalPositionY },
2669         { C_FOCUS_AXIS_EVENT_ID, HandleCFocusAxisEventTargetGlobalPositionY },
2670         { C_HOVER_EVENT_ID, HandleCHoverEventTargetGlobalPositionY },
2671         { C_CLICK_EVENT_ID, HandleCClickEventTargetGlobalPositionY },
2672     };
2673     auto it = eventHandlers.find(event->eventTypeId);
2674     if (it != eventHandlers.end()) {
2675         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
2676         return it->second(inputEvent);
2677     }
2678     return 0.0f;
2679 }
2680 
HandleCMouseEventModifierKeyStates(const ArkUI_UIInputEvent * event,uint64_t * keys)2681 int32_t HandleCMouseEventModifierKeyStates(const ArkUI_UIInputEvent* event, uint64_t* keys)
2682 {
2683     const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
2684     *keys = mouseEvent->modifierKeyState;
2685     return ARKUI_ERROR_CODE_NO_ERROR;
2686 }
2687 
HandleCTouchEventModifierKeyStates(const ArkUI_UIInputEvent * event,uint64_t * keys)2688 int32_t HandleCTouchEventModifierKeyStates(const ArkUI_UIInputEvent* event, uint64_t* keys)
2689 {
2690     const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2691     *keys = touchEvent->modifierKeyState;
2692     return ARKUI_ERROR_CODE_NO_ERROR;
2693 }
2694 
HandleCHoverEventModifierKeyStates(const ArkUI_UIInputEvent * event,uint64_t * keys)2695 int32_t HandleCHoverEventModifierKeyStates(const ArkUI_UIInputEvent* event, uint64_t* keys)
2696 {
2697     const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
2698     *keys = hoverEvent->modifierKeyState;
2699     return ARKUI_ERROR_CODE_NO_ERROR;
2700 }
2701 
HandleCClickEventModifierKeyStates(const ArkUI_UIInputEvent * event,uint64_t * keys)2702 int32_t HandleCClickEventModifierKeyStates(const ArkUI_UIInputEvent* event, uint64_t* keys)
2703 {
2704     const auto* clickEvent = reinterpret_cast<ArkUIClickEvent*>(event->inputEvent);
2705     *keys = clickEvent->modifierKeyState;
2706     return ARKUI_ERROR_CODE_NO_ERROR;
2707 }
2708 
HandleCAxisEventModifierKeyStates(const ArkUI_UIInputEvent * event,uint64_t * keys)2709 int32_t HandleCAxisEventModifierKeyStates(const ArkUI_UIInputEvent* event, uint64_t* keys)
2710 {
2711     const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
2712     *keys = axisEvent->modifierKeyState;
2713     return ARKUI_ERROR_CODE_NO_ERROR;
2714 }
2715 
HandleCKeyEventModifierKeyStates(const ArkUI_UIInputEvent * event,uint64_t * keys)2716 int32_t HandleCKeyEventModifierKeyStates(const ArkUI_UIInputEvent* event, uint64_t* keys)
2717 {
2718     const auto* keyEvent = reinterpret_cast<ArkUIKeyEvent*>(event->inputEvent);
2719     *keys = keyEvent->modifierKeyState;
2720     return ARKUI_ERROR_CODE_NO_ERROR;
2721 }
2722 
HandleCFocusAxisEventModifierKeyStates(const ArkUI_UIInputEvent * event,uint64_t * keys)2723 int32_t HandleCFocusAxisEventModifierKeyStates(const ArkUI_UIInputEvent* event, uint64_t* keys)
2724 {
2725     const auto* focusAxisEvent = reinterpret_cast<ArkUIFocusAxisEvent*>(event->inputEvent);
2726     *keys = focusAxisEvent->modifierKeyState;
2727     return ARKUI_ERROR_CODE_NO_ERROR;
2728 }
2729 
HandleAxisEventModifierKeyStates(const ArkUI_UIInputEvent * event,uint64_t * keys)2730 int32_t HandleAxisEventModifierKeyStates(const ArkUI_UIInputEvent* event, uint64_t* keys)
2731 {
2732     const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
2733     *keys = axisEvent->modifierKeyState;
2734     return ARKUI_ERROR_CODE_NO_ERROR;
2735 }
2736 
HandleTouchEventModifierKeyStates(const ArkUI_UIInputEvent * event,uint64_t * keys)2737 int32_t HandleTouchEventModifierKeyStates(const ArkUI_UIInputEvent* event, uint64_t* keys)
2738 {
2739     const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
2740     *keys = touchEvent->modifierKeyState;
2741     return ARKUI_ERROR_CODE_NO_ERROR;
2742 }
2743 
OH_ArkUI_UIInputEvent_GetModifierKeyStates(const ArkUI_UIInputEvent * event,uint64_t * keys)2744 int32_t OH_ArkUI_UIInputEvent_GetModifierKeyStates(const ArkUI_UIInputEvent* event, uint64_t* keys)
2745 {
2746     if (!event || !keys) {
2747         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2748     }
2749     std::map<ArkUIEventTypeId, std::function<int32_t(ArkUI_UIInputEvent*, uint64_t*)>> eventHandlers = {
2750         { C_TOUCH_EVENT_ID, HandleCTouchEventModifierKeyStates },
2751         { TOUCH_EVENT_ID, HandleTouchEventModifierKeyStates },
2752         { AXIS_EVENT_ID, HandleAxisEventModifierKeyStates },
2753         { C_MOUSE_EVENT_ID, HandleCMouseEventModifierKeyStates },
2754         { C_AXIS_EVENT_ID, HandleCAxisEventModifierKeyStates },
2755         { C_KEY_EVENT_ID, HandleCKeyEventModifierKeyStates },
2756         { C_FOCUS_AXIS_EVENT_ID, HandleCFocusAxisEventModifierKeyStates },
2757         { C_HOVER_EVENT_ID, HandleCHoverEventModifierKeyStates },
2758         { C_CLICK_EVENT_ID, HandleCClickEventModifierKeyStates },
2759     };
2760     auto it = eventHandlers.find(event->eventTypeId);
2761     if (it != eventHandlers.end()) {
2762         ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
2763         uint64_t* inputkeys = const_cast<uint64_t*>(keys);
2764         return it->second(inputEvent, inputkeys);
2765     }
2766     return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2767 }
2768 
OH_ArkUI_HoverEvent_IsHovered(const ArkUI_UIInputEvent * event)2769 bool OH_ArkUI_HoverEvent_IsHovered(const ArkUI_UIInputEvent* event)
2770 {
2771     if (!event) {
2772         return false;
2773     }
2774     switch (event->eventTypeId) {
2775         case C_HOVER_EVENT_ID: {
2776             const auto* hoverEvent = reinterpret_cast<ArkUIHoverEvent*>(event->inputEvent);
2777             if (!hoverEvent) {
2778                 return false;
2779             }
2780             return hoverEvent->isHover;
2781         }
2782         default:
2783             break;
2784     }
2785     return false;
2786 }
2787 
OH_ArkUI_AxisEvent_SetPropagation(const ArkUI_UIInputEvent * event,bool propagation)2788 int32_t OH_ArkUI_AxisEvent_SetPropagation(const ArkUI_UIInputEvent* event, bool propagation)
2789 {
2790     if (!event) {
2791         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2792     }
2793     switch (event->eventTypeId) {
2794         case C_AXIS_EVENT_ID: {
2795             auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
2796             if (axisEvent) {
2797                 axisEvent->propagation = propagation;
2798                 break;
2799             }
2800             return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2801         }
2802         default:
2803             return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2804     }
2805     return OHOS::Ace::ERROR_CODE_NO_ERROR;
2806 }
2807 
OH_ArkUI_AxisEvent_GetScrollStep(const ArkUI_UIInputEvent * event)2808 int32_t OH_ArkUI_AxisEvent_GetScrollStep(const ArkUI_UIInputEvent* event)
2809 {
2810     int32_t scroll_step_value = 0;
2811 
2812     if (!event) {
2813         return scroll_step_value;
2814     }
2815     switch (event->eventTypeId) {
2816         case AXIS_EVENT_ID: {
2817             const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
2818             if (axisEvent) {
2819                 scroll_step_value = axisEvent->scrollStep;
2820             }
2821             break;
2822         }
2823         case C_AXIS_EVENT_ID: {
2824             const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
2825             if (axisEvent) {
2826                 scroll_step_value = axisEvent->scrollStep;
2827             }
2828             break;
2829         }
2830         default:
2831             break;
2832     }
2833     return scroll_step_value;
2834 }
2835 
OH_ArkUI_PointerEvent_CreateClonedEvent(const ArkUI_UIInputEvent * event,ArkUI_UIInputEvent ** clonedEvent)2836 int32_t OH_ArkUI_PointerEvent_CreateClonedEvent(const ArkUI_UIInputEvent* event, ArkUI_UIInputEvent** clonedEvent)
2837 {
2838     if (!event) {
2839         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2840     }
2841     auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2842     if (!touchEvent) {
2843         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2844     }
2845     auto fullImpl = OHOS::Ace::NodeModel::GetFullImpl();
2846     if (!fullImpl) {
2847         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2848     }
2849     ArkUI_UIInputEvent* currentEvent = new ArkUI_UIInputEvent();
2850     currentEvent->inputType = event->inputType;
2851     currentEvent->eventTypeId = event->eventTypeId;
2852     ArkUITouchEvent* touchEventCloned = new ArkUITouchEvent();
2853     fullImpl->getNodeModifiers()->getCommonModifier()->createClonedTouchEvent(touchEventCloned, touchEvent);
2854     currentEvent->inputEvent = touchEventCloned;
2855     currentEvent->isCloned = true;
2856     *clonedEvent = currentEvent;
2857     return OHOS::Ace::ERROR_CODE_NO_ERROR;
2858 }
2859 
OH_ArkUI_PointerEvent_DestroyClonedEvent(const ArkUI_UIInputEvent * event)2860 int32_t OH_ArkUI_PointerEvent_DestroyClonedEvent(const ArkUI_UIInputEvent* event)
2861 {
2862     if (!event) {
2863         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2864     }
2865     if (!event->isCloned) {
2866         return ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT;
2867     }
2868     auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2869     if (touchEvent) {
2870         auto fullImpl = OHOS::Ace::NodeModel::GetFullImpl();
2871         fullImpl->getNodeModifiers()->getCommonModifier()->destroyTouchEvent(touchEvent);
2872     }
2873     delete event;
2874     event = nullptr;
2875     return OHOS::Ace::ERROR_CODE_NO_ERROR;
2876 }
2877 
OH_ArkUI_PointerEvent_SetClonedEventLocalPosition(const ArkUI_UIInputEvent * event,float x,float y)2878 int32_t OH_ArkUI_PointerEvent_SetClonedEventLocalPosition(const ArkUI_UIInputEvent* event, float x, float y)
2879 {
2880     if (!event) {
2881         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2882     }
2883     if (!event->isCloned) {
2884         return ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT;
2885     }
2886     auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2887     if (!touchEvent) {
2888         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2889     }
2890     touchEvent->actionTouchPoint.nodeX = x;
2891     touchEvent->actionTouchPoint.nodeY = y;
2892     return OHOS::Ace::ERROR_CODE_NO_ERROR;
2893 }
2894 
OH_ArkUI_PointerEvent_SetClonedEventLocalPositionByIndex(const ArkUI_UIInputEvent * event,float x,float y,int32_t pointerIndex)2895 int32_t OH_ArkUI_PointerEvent_SetClonedEventLocalPositionByIndex(
2896     const ArkUI_UIInputEvent* event, float x, float y, int32_t pointerIndex)
2897 {
2898     if (!event) {
2899         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2900     }
2901     if (!event->isCloned) {
2902         return ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT;
2903     }
2904     auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2905     if (!touchEvent) {
2906         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2907     }
2908     if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
2909         return ARKUI_ERROR_CODE_PARAM_INVALID;
2910     }
2911     touchEvent->touchPointes[pointerIndex].nodeX = x;
2912     touchEvent->touchPointes[pointerIndex].nodeY = y;
2913     return OHOS::Ace::ERROR_CODE_NO_ERROR;
2914 }
2915 
OH_ArkUI_PointerEvent_SetClonedEventActionType(const ArkUI_UIInputEvent * event,int32_t actionType)2916 int32_t OH_ArkUI_PointerEvent_SetClonedEventActionType(const ArkUI_UIInputEvent* event, int32_t actionType)
2917 {
2918     if (!event) {
2919         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2920     }
2921     if (!event->isCloned) {
2922         return ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT;
2923     }
2924     auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2925     if (!touchEvent) {
2926         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2927     }
2928     touchEvent->action = OHOS::Ace::NodeModel::ConvertToOriginTouchActionType(actionType);
2929     return OHOS::Ace::ERROR_CODE_NO_ERROR;
2930 }
2931 
OH_ArkUI_PointerEvent_SetClonedEventChangedFingerId(const ArkUI_UIInputEvent * event,int32_t fingerId)2932 int32_t OH_ArkUI_PointerEvent_SetClonedEventChangedFingerId(const ArkUI_UIInputEvent* event, int32_t fingerId)
2933 {
2934     if (!event) {
2935         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2936     }
2937     if (!event->isCloned) {
2938         return ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT;
2939     }
2940     auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2941     if (!touchEvent) {
2942         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2943     }
2944     touchEvent->actionTouchPoint.id = fingerId;
2945     return OHOS::Ace::ERROR_CODE_NO_ERROR;
2946 }
2947 
OH_ArkUI_PointerEvent_SetClonedEventFingerIdByIndex(const ArkUI_UIInputEvent * event,int32_t fingerId,int32_t pointerIndex)2948 int32_t OH_ArkUI_PointerEvent_SetClonedEventFingerIdByIndex(
2949     const ArkUI_UIInputEvent* event, int32_t fingerId, int32_t pointerIndex)
2950 {
2951     if (!event) {
2952         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2953     }
2954     if (!event->isCloned) {
2955         return ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT;
2956     }
2957     auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2958     if (!touchEvent) {
2959         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2960     }
2961     if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
2962         return ARKUI_ERROR_CODE_PARAM_INVALID;
2963     }
2964     touchEvent->touchPointes[pointerIndex].id = fingerId;
2965     return OHOS::Ace::ERROR_CODE_NO_ERROR;
2966 }
2967 
OH_ArkUI_PointerEvent_PostClonedEvent(ArkUI_NodeHandle node,const ArkUI_UIInputEvent * event)2968 int32_t OH_ArkUI_PointerEvent_PostClonedEvent(ArkUI_NodeHandle node, const ArkUI_UIInputEvent* event)
2969 {
2970     if (!event) {
2971         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2972     }
2973     if (!node) {
2974         return ARKUI_ERROR_CODE_POST_CLONED_COMPONENT_STATUS_ABNORMAL;
2975     }
2976     if (!event->isCloned) {
2977         return ARKUI_ERROR_CODE_NOT_CLONED_POINTER_EVENT;
2978     }
2979     auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
2980     if (!touchEvent) {
2981         return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
2982     }
2983     auto fullImpl = OHOS::Ace::NodeModel::GetFullImpl();
2984     if (!fullImpl) {
2985         return ARKUI_ERROR_CODE_POST_CLONED_COMPONENT_STATUS_ABNORMAL;
2986     }
2987     int32_t res = fullImpl->getNodeModifiers()->getCommonModifier()->postTouchEvent(node->uiNodeHandle, touchEvent);
2988     return res;
2989 }
2990 
2991 #ifdef __cplusplus
2992 };
2993 #endif
2994