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 "base/utils/type_definition.h"
19 #include "core/event/touch_event.h"
20 #include "core/event/axis_event.h"
21 #include "core/interfaces/arkoala/arkoala_api.h"
22 #include "interfaces/native/node/event_converter.h"
23 #include "base/error/error_code.h"
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
isCurrentCTouchEventParamValid(const ArkUITouchEvent * touchEvent,uint32_t pointerIndex)28 bool isCurrentCTouchEventParamValid(const ArkUITouchEvent* touchEvent, uint32_t pointerIndex)
29 {
30 if (!touchEvent) {
31 return false;
32 }
33 if ((pointerIndex < 0 || pointerIndex >= touchEvent->touchPointSize) ||
34 !(touchEvent->touchPointes)) {
35 return false;
36 }
37 return true;
38 }
39
isHistoryCTouchEventParamValid(const ArkUITouchEvent * touchEvent,uint32_t historyIndex,uint32_t pointerIndex)40 bool isHistoryCTouchEventParamValid(const ArkUITouchEvent* touchEvent, uint32_t historyIndex, uint32_t pointerIndex)
41 {
42 if (!touchEvent) {
43 return false;
44 }
45 if ((historyIndex < 0 || historyIndex >= touchEvent->historySize) ||
46 !touchEvent->historyEvents) {
47 return false;
48 }
49 if ((pointerIndex < 0 || pointerIndex >= touchEvent->historyEvents[historyIndex].touchPointSize) ||
50 !(touchEvent->historyEvents[historyIndex].touchPointes)) {
51 return false;
52 }
53 return true;
54 }
55
OH_ArkUI_UIInputEvent_GetType(const ArkUI_UIInputEvent * event)56 int32_t OH_ArkUI_UIInputEvent_GetType(const ArkUI_UIInputEvent* event)
57 {
58 if (!event) {
59 return 0;
60 }
61 return event->inputType;
62 }
63
OH_ArkUI_UIInputEvent_GetAction(const ArkUI_UIInputEvent * event)64 int32_t OH_ArkUI_UIInputEvent_GetAction(const ArkUI_UIInputEvent* event)
65 {
66 if (!event) {
67 return -1;
68 }
69 switch (event->eventTypeId) {
70 case C_TOUCH_EVENT_ID: {
71 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
72 if (!touchEvent) {
73 return -1;
74 }
75 return OHOS::Ace::NodeModel::ConvertToCTouchActionType(touchEvent->action);
76 }
77 case C_MOUSE_EVENT_ID: {
78 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
79 if (!mouseEvent) {
80 return -1;
81 }
82 return OHOS::Ace::NodeModel::ConvertToCMouseActionType(mouseEvent->action);
83 }
84 default:
85 break;
86 }
87 return -1;
88 }
89
OH_ArkUI_UIInputEvent_GetSourceType(const ArkUI_UIInputEvent * event)90 int32_t OH_ArkUI_UIInputEvent_GetSourceType(const ArkUI_UIInputEvent* event)
91 {
92 if (!event) {
93 return static_cast<int32_t>(UI_INPUT_EVENT_SOURCE_TYPE_UNKNOWN);
94 }
95 switch (event->eventTypeId) {
96 case C_TOUCH_EVENT_ID: {
97 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
98 if (!touchEvent) {
99 return static_cast<int32_t>(UI_INPUT_EVENT_SOURCE_TYPE_UNKNOWN);
100 }
101 return touchEvent->sourceType;
102 }
103 case C_MOUSE_EVENT_ID: {
104 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
105 if (!mouseEvent) {
106 return static_cast<int32_t>(UI_INPUT_EVENT_SOURCE_TYPE_UNKNOWN);
107 }
108 return mouseEvent->sourceType;
109 }
110 case C_AXIS_EVENT_ID: {
111 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
112 if (!axisEvent) {
113 return static_cast<int32_t>(UI_INPUT_EVENT_SOURCE_TYPE_UNKNOWN);
114 }
115 return axisEvent->sourceType;
116 }
117 default:
118 break;
119 }
120 return static_cast<int32_t>(UI_INPUT_EVENT_SOURCE_TYPE_UNKNOWN);
121 }
122
OH_ArkUI_UIInputEvent_GetToolType(const ArkUI_UIInputEvent * event)123 int32_t OH_ArkUI_UIInputEvent_GetToolType(const ArkUI_UIInputEvent* event)
124 {
125 if (!event) {
126 return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
127 }
128 switch (event->eventTypeId) {
129 case C_TOUCH_EVENT_ID: {
130 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
131 if (!touchEvent) {
132 return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
133 }
134 return OHOS::Ace::NodeModel::ConvertToCInputEventToolType(touchEvent->actionTouchPoint.toolType);
135 }
136 case C_MOUSE_EVENT_ID: {
137 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
138 if (!mouseEvent) {
139 return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
140 }
141 return OHOS::Ace::NodeModel::ConvertToCInputEventToolType(mouseEvent->actionTouchPoint.toolType);
142 }
143 case C_AXIS_EVENT_ID: {
144 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
145 if (!axisEvent) {
146 return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
147 }
148 return OHOS::Ace::NodeModel::ConvertToCInputEventToolType(axisEvent->actionTouchPoint.toolType);
149 }
150 default:
151 break;
152 }
153 return static_cast<int32_t>(UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN);
154 }
155
HandleCTouchEvent(ArkUI_UIInputEvent * event)156 int64_t HandleCTouchEvent(ArkUI_UIInputEvent* event)
157 {
158 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
159 if (!touchEvent) {
160 return 0;
161 }
162 return touchEvent->timeStamp;
163 }
164
HandleTouchEvent(ArkUI_UIInputEvent * event)165 int64_t HandleTouchEvent(ArkUI_UIInputEvent* event)
166 {
167 const auto* uiEvent = reinterpret_cast<const OHOS::Ace::UIInputEvent*>(event->inputEvent);
168 if (!uiEvent) {
169 LOGE("The parameter of OH_ArkUI_UIInputEvent_GetEventTime is invalid");
170 return 0;
171 }
172 return uiEvent->time.time_since_epoch().count();
173 }
174
HandleAxisEvent(ArkUI_UIInputEvent * event)175 int64_t HandleAxisEvent(ArkUI_UIInputEvent* event)
176 {
177 const auto* uiEvent = reinterpret_cast<const OHOS::Ace::UIInputEvent*>(event->inputEvent);
178 if (!uiEvent) {
179 LOGE("The parameter of OH_ArkUI_UIInputEvent_GetEventTime is invalid");
180 return 0;
181 }
182 return uiEvent->time.time_since_epoch().count();
183 }
184
HandleCMouseEvent(ArkUI_UIInputEvent * event)185 int64_t HandleCMouseEvent(ArkUI_UIInputEvent* event)
186 {
187 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
188 if (!mouseEvent) {
189 return 0;
190 }
191 return mouseEvent->timeStamp;
192 }
193
HandleCAxisEvent(ArkUI_UIInputEvent * event)194 int64_t HandleCAxisEvent(ArkUI_UIInputEvent* event)
195 {
196 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
197 if (!axisEvent) {
198 return 0;
199 }
200 return axisEvent->timeStamp;
201 }
202
HandleCKeyEvent(ArkUI_UIInputEvent * event)203 int64_t HandleCKeyEvent(ArkUI_UIInputEvent* event)
204 {
205 const auto* keyEvent = reinterpret_cast<ArkUIKeyEvent*>(event->inputEvent);
206 if (!keyEvent) {
207 return 0;
208 }
209 return keyEvent->timestamp;
210 }
211
OH_ArkUI_UIInputEvent_GetEventTime(const ArkUI_UIInputEvent * event)212 int64_t OH_ArkUI_UIInputEvent_GetEventTime(const ArkUI_UIInputEvent* event)
213 {
214 if (!event) {
215 return 0;
216 }
217 std::map<ArkUIEventTypeId, std::function<int64_t(ArkUI_UIInputEvent*)>> eventHandlers = {
218 {C_TOUCH_EVENT_ID, HandleCTouchEvent},
219 {TOUCH_EVENT_ID, HandleTouchEvent},
220 {AXIS_EVENT_ID, HandleAxisEvent},
221 {C_MOUSE_EVENT_ID, HandleCMouseEvent},
222 {C_AXIS_EVENT_ID, HandleCAxisEvent},
223 {C_KEY_EVENT_ID, HandleCKeyEvent}
224 };
225 auto it = eventHandlers.find(event->eventTypeId);
226 if (it != eventHandlers.end()) {
227 ArkUI_UIInputEvent* inputEvent = const_cast<ArkUI_UIInputEvent*>(event);
228 return it->second(inputEvent);
229 }
230 return 0;
231 }
232
OH_ArkUI_UIInputEvent_GetDeviceId(const ArkUI_UIInputEvent * event)233 int32_t OH_ArkUI_UIInputEvent_GetDeviceId(const ArkUI_UIInputEvent *event)
234 {
235 if (!event) {
236 return -1;
237 }
238 const auto* keyEvent = reinterpret_cast<ArkUIKeyEvent*>(event->inputEvent);
239 if (!keyEvent) {
240 return -1;
241 }
242 auto result = static_cast<int32_t>(keyEvent->deviceId);
243 return result;
244 }
245
OH_ArkUI_UIInputEvent_GetPressedKeys(const ArkUI_UIInputEvent * event,int32_t * pressedKeyCodes,int32_t * length)246 int32_t OH_ArkUI_UIInputEvent_GetPressedKeys(
247 const ArkUI_UIInputEvent* event, int32_t* pressedKeyCodes, int32_t* length)
248 {
249 if (!event || !pressedKeyCodes || !length) {
250 return ARKUI_ERROR_CODE_PARAM_INVALID;
251 }
252 const auto* keyEvent = reinterpret_cast<ArkUIKeyEvent*>(event->inputEvent);
253 if (!keyEvent) {
254 return ARKUI_ERROR_CODE_PARAM_INVALID;
255 }
256 auto inputLength = *length;
257 *length = keyEvent->keyCodesLength;
258 if (keyEvent->keyCodesLength > inputLength) {
259 return ARKUI_ERROR_CODE_BUFFER_SIZE_NOT_ENOUGH;
260 }
261 for (int i = 0; i < keyEvent->keyCodesLength; i++) {
262 pressedKeyCodes[i] = keyEvent->pressedKeyCodes[i];
263 }
264 return ARKUI_ERROR_CODE_NO_ERROR;
265 }
266
OH_ArkUI_PointerEvent_GetPointerCount(const ArkUI_UIInputEvent * event)267 uint32_t OH_ArkUI_PointerEvent_GetPointerCount(const ArkUI_UIInputEvent* event)
268 {
269 if (!event) {
270 return 0;
271 }
272 switch (event->eventTypeId) {
273 case C_TOUCH_EVENT_ID: {
274 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
275 if (!touchEvent) {
276 return 0;
277 }
278 return touchEvent->touchPointSize;
279 }
280 case C_MOUSE_EVENT_ID: {
281 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
282 if (!mouseEvent) {
283 return 0;
284 }
285 return 1;
286 }
287 case C_AXIS_EVENT_ID: {
288 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
289 if (!axisEvent) {
290 return 0;
291 }
292 return 1;
293 }
294 default:
295 break;
296 }
297 return 0;
298 }
299
OH_ArkUI_PointerEvent_GetPointerId(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)300 int32_t OH_ArkUI_PointerEvent_GetPointerId(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
301 {
302 if (!event) {
303 return 0;
304 }
305 switch (event->eventTypeId) {
306 case C_TOUCH_EVENT_ID: {
307 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
308 if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
309 return 0;
310 }
311 return touchEvent->touchPointes[pointerIndex].id;
312 }
313 case C_MOUSE_EVENT_ID: {
314 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
315 if (!mouseEvent || pointerIndex != 0) {
316 return 0;
317 }
318 return mouseEvent->actionTouchPoint.id;
319 }
320 case C_AXIS_EVENT_ID: {
321 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
322 if (!axisEvent || pointerIndex != 0) {
323 return 0;
324 }
325 return axisEvent->actionTouchPoint.id;
326 }
327 default:
328 break;
329 }
330 return 0;
331 }
332
OH_ArkUI_PointerEvent_GetX(const ArkUI_UIInputEvent * event)333 float OH_ArkUI_PointerEvent_GetX(const ArkUI_UIInputEvent* event)
334 {
335 if (!event) {
336 return 0.0f;
337 }
338 switch (event->eventTypeId) {
339 case C_TOUCH_EVENT_ID: {
340 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
341 if (!touchEvent) {
342 return 0.0f;
343 }
344 return touchEvent->actionTouchPoint.nodeX;
345 }
346 case TOUCH_EVENT_ID: {
347 const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
348 if (touchEvent) {
349 return touchEvent->localX;
350 }
351 break;
352 }
353 case AXIS_EVENT_ID: {
354 const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
355 if (axisEvent) {
356 return axisEvent->localX;
357 }
358 break;
359 }
360 case C_MOUSE_EVENT_ID: {
361 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
362 if (!mouseEvent) {
363 return 0.0f;
364 }
365 return mouseEvent->actionTouchPoint.nodeX;
366 }
367 case C_AXIS_EVENT_ID: {
368 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
369 if (!axisEvent) {
370 return 0.0f;
371 }
372 return axisEvent->actionTouchPoint.nodeX;
373 }
374 default:
375 break;
376 }
377 return 0.0f;
378 }
379
OH_ArkUI_PointerEvent_GetXByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)380 float OH_ArkUI_PointerEvent_GetXByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
381 {
382 if (!event) {
383 return 0.0f;
384 }
385 switch (event->eventTypeId) {
386 case C_TOUCH_EVENT_ID: {
387 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
388 if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
389 return 0.0f;
390 }
391 return touchEvent->touchPointes[pointerIndex].nodeX;
392 }
393 case C_MOUSE_EVENT_ID: {
394 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
395 if (!mouseEvent || pointerIndex != 0) {
396 return 0.0f;
397 }
398 return mouseEvent->actionTouchPoint.nodeX;
399 }
400 case C_AXIS_EVENT_ID: {
401 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
402 if (!axisEvent || pointerIndex != 0) {
403 return 0.0f;
404 }
405 return axisEvent->actionTouchPoint.nodeX;
406 }
407 default:
408 break;
409 }
410 return 0.0f;
411 }
412
OH_ArkUI_PointerEvent_GetY(const ArkUI_UIInputEvent * event)413 float OH_ArkUI_PointerEvent_GetY(const ArkUI_UIInputEvent* event)
414 {
415 if (!event) {
416 return 0.0f;
417 }
418 switch (event->eventTypeId) {
419 case C_TOUCH_EVENT_ID: {
420 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
421 if (!touchEvent) {
422 return 0.0f;
423 }
424 return touchEvent->actionTouchPoint.nodeY;
425 }
426 case TOUCH_EVENT_ID: {
427 const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
428 if (touchEvent) {
429 return touchEvent->localY;
430 }
431 break;
432 }
433 case AXIS_EVENT_ID: {
434 const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
435 if (axisEvent) {
436 return axisEvent->localY;
437 }
438 break;
439 }
440 case C_MOUSE_EVENT_ID: {
441 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
442 if (!mouseEvent) {
443 return 0.0f;
444 }
445 return mouseEvent->actionTouchPoint.nodeY;
446 }
447 case C_AXIS_EVENT_ID: {
448 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
449 if (!axisEvent) {
450 return 0.0f;
451 }
452 return axisEvent->actionTouchPoint.nodeY;
453 }
454 default:
455 break;
456 }
457 LOGE("The parameter of OH_ArkUI_PointerEvent_GetY is invalid");
458 return 0.0f;
459 }
460
OH_ArkUI_PointerEvent_GetYByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)461 float OH_ArkUI_PointerEvent_GetYByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
462 {
463 if (!event) {
464 return 0.0f;
465 }
466 switch (event->eventTypeId) {
467 case C_TOUCH_EVENT_ID: {
468 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
469 if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
470 return 0.0f;
471 }
472 return touchEvent->touchPointes[pointerIndex].nodeY;
473 }
474 case C_MOUSE_EVENT_ID: {
475 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
476 if (!mouseEvent || pointerIndex != 0) {
477 return 0.0f;
478 }
479 return mouseEvent->actionTouchPoint.nodeY;
480 }
481 case C_AXIS_EVENT_ID: {
482 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
483 if (!axisEvent || pointerIndex != 0) {
484 return 0.0f;
485 }
486 return axisEvent->actionTouchPoint.nodeY;
487 }
488 default:
489 break;
490 }
491 return 0.0f;
492 }
493
OH_ArkUI_PointerEvent_GetWindowX(const ArkUI_UIInputEvent * event)494 float OH_ArkUI_PointerEvent_GetWindowX(const ArkUI_UIInputEvent* event)
495 {
496 if (!event) {
497 return 0.0f;
498 }
499 switch (event->eventTypeId) {
500 case C_TOUCH_EVENT_ID: {
501 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
502 if (!touchEvent) {
503 return 0.0f;
504 }
505 return touchEvent->actionTouchPoint.windowX;
506 }
507 case TOUCH_EVENT_ID: {
508 const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
509 if (touchEvent) {
510 return touchEvent->x;
511 }
512 break;
513 }
514 case AXIS_EVENT_ID: {
515 const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
516 if (axisEvent) {
517 return axisEvent->x;
518 }
519 break;
520 }
521 case C_MOUSE_EVENT_ID: {
522 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
523 if (!mouseEvent) {
524 return 0.0f;
525 }
526 return mouseEvent->actionTouchPoint.windowX;
527 }
528 case C_AXIS_EVENT_ID: {
529 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
530 if (!axisEvent) {
531 return 0.0f;
532 }
533 return axisEvent->actionTouchPoint.windowX;
534 }
535 default:
536 break;
537 }
538 LOGE("The parameter of OH_ArkUI_PointerEvent_GetWindowX is invalid");
539 return 0.0f;
540 }
541
OH_ArkUI_PointerEvent_GetWindowXByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)542 float OH_ArkUI_PointerEvent_GetWindowXByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
543 {
544 if (!event) {
545 return 0.0f;
546 }
547 switch (event->eventTypeId) {
548 case C_TOUCH_EVENT_ID: {
549 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
550 if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
551 return 0.0f;
552 }
553 return touchEvent->touchPointes[pointerIndex].windowX;
554 }
555 case C_MOUSE_EVENT_ID: {
556 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
557 if (!mouseEvent || pointerIndex != 0) {
558 return 0.0f;
559 }
560 return mouseEvent->actionTouchPoint.windowX;
561 }
562 case C_AXIS_EVENT_ID: {
563 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
564 if (!axisEvent || pointerIndex != 0) {
565 return 0.0f;
566 }
567 return axisEvent->actionTouchPoint.windowX;
568 }
569 default:
570 break;
571 }
572 return 0.0f;
573 }
574
OH_ArkUI_PointerEvent_GetWindowY(const ArkUI_UIInputEvent * event)575 float OH_ArkUI_PointerEvent_GetWindowY(const ArkUI_UIInputEvent* event)
576 {
577 if (!event) {
578 return 0.0f;
579 }
580 switch (event->eventTypeId) {
581 case C_TOUCH_EVENT_ID: {
582 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
583 if (!touchEvent) {
584 return 0.0f;
585 }
586 return touchEvent->actionTouchPoint.windowY;
587 }
588 case TOUCH_EVENT_ID: {
589 const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
590 if (touchEvent) {
591 return touchEvent->y;
592 }
593 break;
594 }
595 case AXIS_EVENT_ID: {
596 const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
597 if (axisEvent) {
598 return axisEvent->y;
599 }
600 break;
601 }
602 case C_MOUSE_EVENT_ID: {
603 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
604 if (!mouseEvent) {
605 return 0.0f;
606 }
607 return mouseEvent->actionTouchPoint.windowY;
608 }
609 case C_AXIS_EVENT_ID: {
610 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
611 if (!axisEvent) {
612 return 0.0f;
613 }
614 return axisEvent->actionTouchPoint.windowY;
615 }
616 default:
617 break;
618 }
619 LOGE("The parameter of OH_ArkUI_PointerEvent_GetWindowY is invalid");
620 return 0.0f;
621 }
622
OH_ArkUI_PointerEvent_GetWindowYByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)623 float OH_ArkUI_PointerEvent_GetWindowYByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
624 {
625 if (!event) {
626 return 0.0f;
627 }
628 switch (event->eventTypeId) {
629 case C_TOUCH_EVENT_ID: {
630 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
631 if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
632 return 0.0f;
633 }
634 return touchEvent->touchPointes[pointerIndex].windowY;
635 }
636 case C_MOUSE_EVENT_ID: {
637 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
638 if (!mouseEvent || pointerIndex != 0) {
639 return 0.0f;
640 }
641 return mouseEvent->actionTouchPoint.windowY;
642 }
643 case C_AXIS_EVENT_ID: {
644 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
645 if (!axisEvent || pointerIndex != 0) {
646 return 0.0f;
647 }
648 return axisEvent->actionTouchPoint.windowY;
649 }
650 default:
651 break;
652 }
653 return 0.0f;
654 }
655
OH_ArkUI_PointerEvent_GetDisplayX(const ArkUI_UIInputEvent * event)656 float OH_ArkUI_PointerEvent_GetDisplayX(const ArkUI_UIInputEvent* event)
657 {
658 if (!event) {
659 return 0.0f;
660 }
661 switch (event->eventTypeId) {
662 case C_TOUCH_EVENT_ID: {
663 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
664 if (!touchEvent) {
665 return 0.0f;
666 }
667 return touchEvent->actionTouchPoint.screenX;
668 }
669 case TOUCH_EVENT_ID: {
670 const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
671 if (touchEvent) {
672 return touchEvent->screenX;
673 }
674 break;
675 }
676 case AXIS_EVENT_ID: {
677 const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
678 if (axisEvent) {
679 return axisEvent->screenX;
680 }
681 break;
682 }
683 case C_MOUSE_EVENT_ID: {
684 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
685 if (!mouseEvent) {
686 return 0.0f;
687 }
688 return mouseEvent->actionTouchPoint.screenX;
689 }
690 case C_AXIS_EVENT_ID: {
691 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
692 if (!axisEvent) {
693 return 0.0f;
694 }
695 return axisEvent->actionTouchPoint.screenX;
696 }
697 default:
698 break;
699 }
700 LOGE("The parameter of OH_ArkUI_PointerEvent_GetDisplayX is invalid");
701 return 0.0f;
702 }
703
OH_ArkUI_PointerEvent_GetDisplayXByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)704 float OH_ArkUI_PointerEvent_GetDisplayXByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
705 {
706 if (!event) {
707 return 0.0f;
708 }
709 switch (event->eventTypeId) {
710 case C_TOUCH_EVENT_ID: {
711 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
712 if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
713 return 0.0f;
714 }
715 return touchEvent->touchPointes[pointerIndex].screenX;
716 }
717 case C_MOUSE_EVENT_ID: {
718 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
719 if (!mouseEvent || pointerIndex != 0) {
720 return 0.0f;
721 }
722 return mouseEvent->actionTouchPoint.screenX;
723 }
724 case C_AXIS_EVENT_ID: {
725 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
726 if (!axisEvent || pointerIndex != 0) {
727 return 0.0f;
728 }
729 return axisEvent->actionTouchPoint.screenX;
730 }
731 default:
732 break;
733 }
734 return 0.0f;
735 }
736
OH_ArkUI_PointerEvent_GetDisplayY(const ArkUI_UIInputEvent * event)737 float OH_ArkUI_PointerEvent_GetDisplayY(const ArkUI_UIInputEvent* event)
738 {
739 if (!event) {
740 return 0.0f;
741 }
742 switch (event->eventTypeId) {
743 case C_TOUCH_EVENT_ID: {
744 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
745 if (!touchEvent) {
746 return 0.0f;
747 }
748 return touchEvent->actionTouchPoint.screenY;
749 }
750 case TOUCH_EVENT_ID: {
751 const auto* touchEvent = reinterpret_cast<const OHOS::Ace::TouchEvent*>(event->inputEvent);
752 if (touchEvent) {
753 return touchEvent->screenY;
754 }
755 break;
756 }
757 case AXIS_EVENT_ID: {
758 const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
759 if (axisEvent) {
760 return axisEvent->screenY;
761 }
762 break;
763 }
764 case C_MOUSE_EVENT_ID: {
765 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
766 if (!mouseEvent) {
767 return 0.0f;
768 }
769 return mouseEvent->actionTouchPoint.screenY;
770 }
771 case C_AXIS_EVENT_ID: {
772 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
773 if (!axisEvent) {
774 return 0.0f;
775 }
776 return axisEvent->actionTouchPoint.screenY;
777 }
778 default:
779 break;
780 }
781 LOGE("The parameter of OH_ArkUI_PointerEvent_GetDisplayY is invalid");
782 return 0.0f;
783 }
784
OH_ArkUI_PointerEvent_GetDisplayYByIndex(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)785 float OH_ArkUI_PointerEvent_GetDisplayYByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
786 {
787 if (!event) {
788 return 0.0f;
789 }
790 switch (event->eventTypeId) {
791 case C_TOUCH_EVENT_ID: {
792 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
793 if (!isCurrentCTouchEventParamValid(touchEvent, pointerIndex)) {
794 return 0.0f;
795 }
796 return touchEvent->touchPointes[pointerIndex].screenY;
797 }
798 case C_MOUSE_EVENT_ID: {
799 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
800 if (!mouseEvent || pointerIndex != 0) {
801 return 0.0f;
802 }
803 return mouseEvent->actionTouchPoint.screenY;
804 }
805 case C_AXIS_EVENT_ID: {
806 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
807 if (!axisEvent || pointerIndex != 0) {
808 return 0.0f;
809 }
810 return axisEvent->actionTouchPoint.screenY;
811 }
812 default:
813 break;
814 }
815 return 0.0f;
816 }
817
OH_ArkUI_PointerEvent_GetPressure(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)818 float OH_ArkUI_PointerEvent_GetPressure(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
819 {
820 if (!event) {
821 return 0.0f;
822 }
823 switch (event->eventTypeId) {
824 case C_TOUCH_EVENT_ID: {
825 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
826 if (!touchEvent || touchEvent->touchPointSize <= 0) {
827 return 0.0f;
828 }
829 return touchEvent->touchPointes[touchEvent->touchPointSize-1].pressure;
830 }
831 default:
832 break;
833 }
834 return 0.0f;
835 }
836
OH_ArkUI_PointerEvent_GetTiltX(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)837 float OH_ArkUI_PointerEvent_GetTiltX(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
838 {
839 if (!event) {
840 return 0.0f;
841 }
842 switch (event->eventTypeId) {
843 case C_TOUCH_EVENT_ID: {
844 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
845 if (!touchEvent || touchEvent->touchPointSize <= 0) {
846 return 0.0f;
847 }
848 return touchEvent->touchPointes[touchEvent->touchPointSize-1].tiltX;
849 }
850 default:
851 break;
852 }
853 return 0.0f;
854 }
855
OH_ArkUI_PointerEvent_GetTiltY(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)856 float OH_ArkUI_PointerEvent_GetTiltY(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
857 {
858 if (!event) {
859 return 0.0f;
860 }
861 switch (event->eventTypeId) {
862 case C_TOUCH_EVENT_ID: {
863 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
864 if (!touchEvent || touchEvent->touchPointSize <= 0) {
865 return 0.0f;
866 }
867 return touchEvent->touchPointes[touchEvent->touchPointSize-1].tiltY;
868 }
869 default:
870 break;
871 }
872 return 0.0f;
873 }
874
OH_ArkUI_PointerEvent_GetTouchAreaWidth(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)875 float OH_ArkUI_PointerEvent_GetTouchAreaWidth(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
876 {
877 if (!event) {
878 return 0.0f;
879 }
880 switch (event->eventTypeId) {
881 case C_TOUCH_EVENT_ID: {
882 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
883 if (!touchEvent || touchEvent->touchPointSize <= 0) {
884 return 0.0f;
885 }
886 return touchEvent->touchPointes[touchEvent->touchPointSize-1].contactAreaWidth;
887 }
888 default:
889 break;
890 }
891 return 0.0f;
892 }
893
OH_ArkUI_PointerEvent_GetTouchAreaHeight(const ArkUI_UIInputEvent * event,uint32_t pointerIndex)894 float OH_ArkUI_PointerEvent_GetTouchAreaHeight(const ArkUI_UIInputEvent* event, uint32_t pointerIndex)
895 {
896 if (!event) {
897 return 0.0f;
898 }
899 switch (event->eventTypeId) {
900 case C_TOUCH_EVENT_ID: {
901 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
902 if (!touchEvent || touchEvent->touchPointSize <= 0) {
903 return 0.0f;
904 }
905 return touchEvent->touchPointes[touchEvent->touchPointSize-1].contactAreaHeight;
906 }
907 default:
908 break;
909 }
910 return 0.0f;
911 }
912
OH_ArkUI_PointerEvent_GetHistorySize(const ArkUI_UIInputEvent * event)913 uint32_t OH_ArkUI_PointerEvent_GetHistorySize(const ArkUI_UIInputEvent* event)
914 {
915 if (!event) {
916 return 0;
917 }
918 switch (event->eventTypeId) {
919 case C_TOUCH_EVENT_ID: {
920 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
921 if (!touchEvent || !touchEvent->historyEvents) {
922 return 0;
923 }
924 return touchEvent->historySize;
925 }
926 default:
927 break;
928 }
929 return 0;
930 }
931
OH_ArkUI_PointerEvent_GetHistoryEventTime(const ArkUI_UIInputEvent * event,uint32_t historyIndex)932 int64_t OH_ArkUI_PointerEvent_GetHistoryEventTime(const ArkUI_UIInputEvent* event, uint32_t historyIndex)
933 {
934 if (!event) {
935 return 0;
936 }
937 switch (event->eventTypeId) {
938 case C_TOUCH_EVENT_ID: {
939 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
940 if (!touchEvent || !touchEvent->historyEvents || touchEvent->historySize <= historyIndex ||
941 historyIndex < 0) {
942 return 0;
943 }
944 return touchEvent->historyEvents[historyIndex].timeStamp;
945 }
946 default:
947 break;
948 }
949 return 0;
950 }
951
OH_ArkUI_PointerEvent_GetHistoryPointerCount(const ArkUI_UIInputEvent * event,uint32_t historyIndex)952 uint32_t OH_ArkUI_PointerEvent_GetHistoryPointerCount(const ArkUI_UIInputEvent* event, uint32_t historyIndex)
953 {
954 if (!event) {
955 return 0;
956 }
957 switch (event->eventTypeId) {
958 case C_TOUCH_EVENT_ID: {
959 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
960 if (!touchEvent || !touchEvent->historyEvents || touchEvent->historySize <= historyIndex ||
961 historyIndex < 0) {
962 return 0;
963 }
964 return touchEvent->historyEvents[historyIndex].touchPointSize;
965 }
966 default:
967 break;
968 }
969 return 0;
970 }
971
OH_ArkUI_PointerEvent_GetHistoryPointerId(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)972 int32_t OH_ArkUI_PointerEvent_GetHistoryPointerId(
973 const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
974 {
975 if (!event) {
976 return 0;
977 }
978 switch (event->eventTypeId) {
979 case C_TOUCH_EVENT_ID: {
980 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
981 if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
982 return 0;
983 }
984 return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].id;
985 }
986 default:
987 break;
988 }
989 return 0;
990 }
991
OH_ArkUI_PointerEvent_GetHistoryX(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)992 float OH_ArkUI_PointerEvent_GetHistoryX(const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
993 {
994 if (!event) {
995 return 0.0f;
996 }
997 switch (event->eventTypeId) {
998 case C_TOUCH_EVENT_ID: {
999 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1000 if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1001 return 0.0f;
1002 }
1003 return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].nodeX;
1004 }
1005 default:
1006 break;
1007 }
1008 return 0.0f;
1009 }
1010
OH_ArkUI_PointerEvent_GetHistoryY(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1011 float OH_ArkUI_PointerEvent_GetHistoryY(const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1012 {
1013 if (!event) {
1014 return 0.0f;
1015 }
1016 switch (event->eventTypeId) {
1017 case C_TOUCH_EVENT_ID: {
1018 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1019 if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1020 return 0.0f;
1021 }
1022 return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].nodeY;
1023 }
1024 default:
1025 break;
1026 }
1027 return 0.0f;
1028 }
1029
OH_ArkUI_PointerEvent_GetHistoryWindowX(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1030 float OH_ArkUI_PointerEvent_GetHistoryWindowX(
1031 const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1032 {
1033 if (!event) {
1034 return 0.0f;
1035 }
1036 switch (event->eventTypeId) {
1037 case C_TOUCH_EVENT_ID: {
1038 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1039 if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1040 return 0.0f;
1041 }
1042 return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].windowX;
1043 }
1044 default:
1045 break;
1046 }
1047 return 0.0f;
1048 }
1049
OH_ArkUI_PointerEvent_GetHistoryWindowY(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1050 float OH_ArkUI_PointerEvent_GetHistoryWindowY(
1051 const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1052 {
1053 if (!event) {
1054 return 0.0f;
1055 }
1056 switch (event->eventTypeId) {
1057 case C_TOUCH_EVENT_ID: {
1058 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1059 if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1060 return 0.0f;
1061 }
1062 return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].windowY;
1063 }
1064 default:
1065 break;
1066 }
1067 return 0.0f;
1068 }
1069
OH_ArkUI_PointerEvent_GetHistoryDisplayX(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1070 float OH_ArkUI_PointerEvent_GetHistoryDisplayX(
1071 const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1072 {
1073 if (!event) {
1074 return 0.0f;
1075 }
1076 switch (event->eventTypeId) {
1077 case C_TOUCH_EVENT_ID: {
1078 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1079 if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1080 return 0.0f;
1081 }
1082 return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].screenX;
1083 }
1084 default:
1085 break;
1086 }
1087 return 0.0f;
1088 }
1089
OH_ArkUI_PointerEvent_GetHistoryDisplayY(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1090 float OH_ArkUI_PointerEvent_GetHistoryDisplayY(
1091 const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1092 {
1093 if (!event) {
1094 return 0.0f;
1095 }
1096 switch (event->eventTypeId) {
1097 case C_TOUCH_EVENT_ID: {
1098 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1099 if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1100 return 0.0f;
1101 }
1102 return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].screenY;
1103 }
1104 default:
1105 break;
1106 }
1107 return 0.0f;
1108 }
1109
OH_ArkUI_PointerEvent_GetHistoryPressure(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1110 float OH_ArkUI_PointerEvent_GetHistoryPressure(
1111 const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1112 {
1113 if (!event) {
1114 return 0.0f;
1115 }
1116 switch (event->eventTypeId) {
1117 case C_TOUCH_EVENT_ID: {
1118 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1119 if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1120 return 0.0f;
1121 }
1122 return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].pressure;
1123 }
1124 default:
1125 break;
1126 }
1127 return 0.0f;
1128 }
1129
OH_ArkUI_PointerEvent_GetHistoryTiltX(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1130 float OH_ArkUI_PointerEvent_GetHistoryTiltX(
1131 const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1132 {
1133 if (!event) {
1134 return 0.0f;
1135 }
1136 switch (event->eventTypeId) {
1137 case C_TOUCH_EVENT_ID: {
1138 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1139 if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1140 return 0.0f;
1141 }
1142 return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].tiltX;
1143 }
1144 default:
1145 break;
1146 }
1147 return 0.0f;
1148 }
1149
OH_ArkUI_PointerEvent_GetHistoryTiltY(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1150 float OH_ArkUI_PointerEvent_GetHistoryTiltY(
1151 const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1152 {
1153 if (!event) {
1154 return 0.0f;
1155 }
1156 switch (event->eventTypeId) {
1157 case C_TOUCH_EVENT_ID: {
1158 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1159 if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1160 return 0.0f;
1161 }
1162 return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].tiltY;
1163 }
1164 default:
1165 break;
1166 }
1167 return 0.0f;
1168 }
1169
OH_ArkUI_PointerEvent_GetHistoryTouchAreaWidth(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1170 float OH_ArkUI_PointerEvent_GetHistoryTouchAreaWidth(
1171 const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1172 {
1173 if (!event) {
1174 return 0.0f;
1175 }
1176 switch (event->eventTypeId) {
1177 case C_TOUCH_EVENT_ID: {
1178 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1179 if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1180 return 0.0f;
1181 }
1182 return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].contactAreaWidth;
1183 }
1184 default:
1185 break;
1186 }
1187 return 0.0f;
1188 }
1189
OH_ArkUI_PointerEvent_GetHistoryTouchAreaHeight(const ArkUI_UIInputEvent * event,uint32_t pointerIndex,uint32_t historyIndex)1190 float OH_ArkUI_PointerEvent_GetHistoryTouchAreaHeight(
1191 const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex)
1192 {
1193 if (!event) {
1194 return 0.0f;
1195 }
1196 switch (event->eventTypeId) {
1197 case C_TOUCH_EVENT_ID: {
1198 const auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1199 if (!isHistoryCTouchEventParamValid(touchEvent, historyIndex, pointerIndex)) {
1200 return 0.0f;
1201 }
1202 return touchEvent->historyEvents[historyIndex].touchPointes[pointerIndex].contactAreaHeight;
1203 }
1204 default:
1205 break;
1206 }
1207 return 0.0f;
1208 }
1209
OH_ArkUI_AxisEvent_GetVerticalAxisValue(const ArkUI_UIInputEvent * event)1210 double OH_ArkUI_AxisEvent_GetVerticalAxisValue(const ArkUI_UIInputEvent* event)
1211 {
1212 if (!event) {
1213 return 0.0;
1214 }
1215 switch (event->eventTypeId) {
1216 case AXIS_EVENT_ID: {
1217 const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
1218 if (axisEvent) {
1219 return axisEvent->verticalAxis;
1220 }
1221 break;
1222 }
1223 case C_AXIS_EVENT_ID: {
1224 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
1225 if (!axisEvent) {
1226 return 0.0;
1227 }
1228 return axisEvent->verticalAxis;
1229 }
1230 default:
1231 break;
1232 }
1233 return 0.0;
1234 }
1235
OH_ArkUI_AxisEvent_GetHorizontalAxisValue(const ArkUI_UIInputEvent * event)1236 double OH_ArkUI_AxisEvent_GetHorizontalAxisValue(const ArkUI_UIInputEvent* event)
1237 {
1238 if (!event) {
1239 return 0.0;
1240 }
1241 switch (event->eventTypeId) {
1242 case AXIS_EVENT_ID: {
1243 const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
1244 if (axisEvent) {
1245 return axisEvent->horizontalAxis;
1246 }
1247 break;
1248 }
1249 case C_AXIS_EVENT_ID: {
1250 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
1251 if (!axisEvent) {
1252 return 0.0;
1253 }
1254 return axisEvent->horizontalAxis;
1255 }
1256 default:
1257 break;
1258 }
1259 return 0.0;
1260 }
1261
OH_ArkUI_AxisEvent_GetPinchAxisScaleValue(const ArkUI_UIInputEvent * event)1262 double OH_ArkUI_AxisEvent_GetPinchAxisScaleValue(const ArkUI_UIInputEvent* event)
1263 {
1264 if (!event) {
1265 return 0.0;
1266 }
1267 switch (event->eventTypeId) {
1268 case AXIS_EVENT_ID: {
1269 const auto* axisEvent = reinterpret_cast<const OHOS::Ace::AxisEvent*>(event->inputEvent);
1270 if (axisEvent) {
1271 return axisEvent->pinchAxisScale;
1272 }
1273 break;
1274 }
1275 case C_AXIS_EVENT_ID: {
1276 const auto* axisEvent = reinterpret_cast<ArkUIAxisEvent*>(event->inputEvent);
1277 if (!axisEvent) {
1278 return 0.0;
1279 }
1280 return axisEvent->pinchAxisScale;
1281 }
1282 default:
1283 break;
1284 }
1285 return 0.0;
1286 }
1287
OH_ArkUI_PointerEvent_SetInterceptHitTestMode(const ArkUI_UIInputEvent * event,HitTestMode mode)1288 int32_t OH_ArkUI_PointerEvent_SetInterceptHitTestMode(const ArkUI_UIInputEvent* event, HitTestMode mode)
1289 {
1290 if (!event) {
1291 return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
1292 }
1293 switch (event->eventTypeId) {
1294 case C_TOUCH_EVENT_ID: {
1295 auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1296 touchEvent->interceptResult = static_cast<int32_t>(mode);
1297 break;
1298 }
1299 case C_MOUSE_EVENT_ID: {
1300 auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1301 if (!mouseEvent) {
1302 return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
1303 }
1304 return mouseEvent->interceptResult = static_cast<int32_t>(mode);
1305 }
1306 default:
1307 return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
1308 }
1309 return OHOS::Ace::ERROR_CODE_NO_ERROR;
1310 }
1311
OH_ArkUI_PointerEvent_SetStopPropagation(const ArkUI_UIInputEvent * event,bool stopPropagation)1312 int32_t OH_ArkUI_PointerEvent_SetStopPropagation(const ArkUI_UIInputEvent* event, bool stopPropagation)
1313 {
1314 if (!event) {
1315 return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
1316 }
1317 switch (event->eventTypeId) {
1318 case C_TOUCH_EVENT_ID: {
1319 auto* touchEvent = reinterpret_cast<ArkUITouchEvent*>(event->inputEvent);
1320 touchEvent->stopPropagation = stopPropagation;
1321 break;
1322 }
1323 default:
1324 return OHOS::Ace::ERROR_CODE_PARAM_INVALID;
1325 }
1326 return OHOS::Ace::ERROR_CODE_NO_ERROR;
1327 }
1328
OH_ArkUI_MouseEvent_GetMouseButton(const ArkUI_UIInputEvent * event)1329 int32_t OH_ArkUI_MouseEvent_GetMouseButton(const ArkUI_UIInputEvent* event)
1330 {
1331 if (!event) {
1332 return -1;
1333 }
1334 switch (event->eventTypeId) {
1335 case C_MOUSE_EVENT_ID: {
1336 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1337 if (!mouseEvent) {
1338 return -1;
1339 }
1340 return OHOS::Ace::NodeModel::ConvertToCMouseEventButtonType(mouseEvent->button);
1341 }
1342 default:
1343 break;
1344 }
1345 return -1;
1346 }
1347
OH_ArkUI_MouseEvent_GetMouseAction(const ArkUI_UIInputEvent * event)1348 int32_t OH_ArkUI_MouseEvent_GetMouseAction(const ArkUI_UIInputEvent* event)
1349 {
1350 if (!event) {
1351 return -1;
1352 }
1353 switch (event->eventTypeId) {
1354 case C_MOUSE_EVENT_ID: {
1355 const auto* mouseEvent = reinterpret_cast<ArkUIMouseEvent*>(event->inputEvent);
1356 if (!mouseEvent) {
1357 return -1;
1358 }
1359 return OHOS::Ace::NodeModel::ConvertToCMouseActionType(mouseEvent->action);
1360 }
1361 default:
1362 break;
1363 }
1364 return -1;
1365 }
1366
1367 #ifdef __cplusplus
1368 };
1369 #endif
1370