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