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/**
17 * @addtogroup ArkUI_EventModule
18 * @{
19 *
20 * @brief Declares the UI input event capabilities provided by ArkUI on the native side.
21 *
22 * @since 12
23 */
24
25/**
26 * @file ui_input_event.h
27 *
28 * @brief Provides ArkUI event definitions on the native side.
29 *
30 * @library libace_ndk.z.so
31 * @syscap SystemCapability.ArkUI.ArkUI.Full
32 * @since 12
33 */
34
35#ifndef _ARKUI_UI_INPUT_EVENT_H_
36#define _ARKUI_UI_INPUT_EVENT_H_
37
38#include <cstdint>
39
40#ifdef __cplusplus
41extern "C" {
42#endif
43
44/**
45 * @brief Defines the UI input event.
46 *
47 * @since 12
48 */
49typedef struct ArkUI_UIInputEvent ArkUI_UIInputEvent;
50
51/**
52 * @brief Enumerates the UI input event types.
53 *
54 * @since 12
55 */
56typedef enum {
57    ARKUI_UIINPUTEVENT_TYPE_UNKNOWN = 0,
58    ARKUI_UIINPUTEVENT_TYPE_TOUCH = 1,
59    ARKUI_UIINPUTEVENT_TYPE_AXIS = 2,
60    ARKUI_UIINPUTEVENT_TYPE_MOUSE = 3,
61} ArkUI_UIInputEvent_Type;
62
63/**
64 * @brief Defines the action code of the input event.
65 *
66 * @since 12
67 */
68enum {
69    /** Cancellation of touch. */
70    UI_TOUCH_EVENT_ACTION_CANCEL = 0,
71    /** Pressing of a touch point. */
72    UI_TOUCH_EVENT_ACTION_DOWN = 1,
73    /** Moving of a touch point. */
74    UI_TOUCH_EVENT_ACTION_MOVE = 2,
75    /** Lifting of a touch point. */
76    UI_TOUCH_EVENT_ACTION_UP = 3,
77};
78
79/**
80 * @brief Defines the tool type of the touch event.
81 *
82 * @since 12
83 */
84enum {
85    /** Unknown tool type. */
86    UI_INPUT_EVENT_TOOL_TYPE_UNKNOWN = 0,
87
88    /** Finger. */
89    UI_INPUT_EVENT_TOOL_TYPE_FINGER = 1,
90
91    /** Pen. */
92    UI_INPUT_EVENT_TOOL_TYPE_PEN = 2,
93
94    /** Mouse. */
95    UI_INPUT_EVENT_TOOL_TYPE_MOUSE = 3,
96
97    /** TouchPad. */
98    UI_INPUT_EVENT_TOOL_TYPE_TOUCHPAD = 4,
99
100    /** JoyStick. */
101    UI_INPUT_EVENT_TOOL_TYPE_JOYSTICK = 5,
102};
103
104/**
105 * @brief Defines the source type of the touch event.
106 *
107 * @since 12
108 */
109enum {
110    /** Unknown source type. */
111    UI_INPUT_EVENT_SOURCE_TYPE_UNKNOWN = 0,
112    /** Mouse. */
113    UI_INPUT_EVENTT_SOURCE_TYPE_MOUSE = 1,
114    /** Touchscreen. */
115    UI_INPUT_EVENTT_SOURCE_TYPE_TOUCH_SCREEN = 2,
116};
117
118/**
119 * @brief Enumerates the hit test modes.
120 *
121 * @since 12
122 */
123typedef enum {
124    /** Both the node and its child node respond to the hit test of a touch event, but its sibling node is blocked from
125     *  the hit test.
126     */
127    HTM_DEFAULT = 0,
128
129    /** The node responds to the hit test of a touch event, but its child node and sibling node are blocked from the hit
130     *  test.
131     */
132    HTM_BLOCK,
133
134    /** Both the node and its child node respond to the hit test of a touch event, and its sibling node is also
135     *  considered during the hit test.
136     */
137    HTM_TRANSPARENT,
138
139    /** The node does not respond to the hit test of a touch event, but its child node and sibling node are considered
140     *  during the hit test.
141     */
142    HTM_NONE,
143} HitTestMode;
144
145/**
146 * @brief 定义鼠标事件的Action Code。
147 *
148 * @since 12
149 */
150enum {
151    /** 无效行为 */
152    UI_MOUSE_EVENT_ACTION_UNKNOWN = 0,
153    /** 鼠标按键按下。 */
154    UI_MOUSE_EVENT_ACTION_PRESS = 1,
155    /** 鼠标按键松开。 */
156    UI_MOUSE_EVENT_ACTION_RELEASE = 2,
157    /** 鼠标移动。 */
158    UI_MOUSE_EVENT_ACTION_MOVE = 3,
159};
160
161/**
162 * @brief 定义鼠标事件的按键类型。
163 *
164 * @since 12
165 */
166enum {
167    /** 无按键。 */
168    UI_MOUSE_EVENT_BUTTON_NONE = 0,
169    /** 鼠标左键。 */
170    UI_MOUSE_EVENT_BUTTON_LEFT = 1,
171    /** 鼠标右键。 */
172    UI_MOUSE_EVENT_BUTTON_RIGHT = 2,
173    /** 鼠标中键。 */
174    UI_MOUSE_EVENT_BUTTON_MIDDLE = 3,
175    /** 鼠标左侧后退键。 */
176    UI_MOUSE_EVENT_BUTTON_BACK = 4,
177    /** 鼠标左侧前进键。 */
178    UI_MOUSE_EVENT_BUTTON_FORWARD = 5,
179};
180
181/**
182 * @brief Defines an enum for modifier keys.
183 *
184 * @since 12
185 */
186typedef enum {
187    /** Ctrl. */
188    ARKUI_MODIFIER_KEY_CTRL = 1 << 0,
189    /** Shift. */
190    ARKUI_MODIFIER_KEY_SHIFT = 1 << 1,
191    /** Alt. */
192    ARKUI_MODIFIER_KEY_ALT = 1 << 2,
193    /** Fn. */
194    ARKUI_MODIFIER_KEY_FN = 1 << 3,
195} ArkUI_ModifierKeyName;
196
197/**
198 * @brief Obtains the type of this UI input event.
199 *
200 * @param event Indicates the pointer to the current UI input event.
201 * @return Returns the type of the current UI input event; returns <b>0</b> if any parameter error occurs.
202 * @since 12
203 */
204int32_t OH_ArkUI_UIInputEvent_GetType(const ArkUI_UIInputEvent* event);
205
206/**
207 * @brief Obtains the action type of this UI input event.
208 *
209 * @param event Indicates the pointer to the current UI input event.
210 * @return Returns the action type of the current UI input event; returns <b>0</b> if any parameter error occurs.
211 * @since 12
212 */
213int32_t OH_ArkUI_UIInputEvent_GetAction(const ArkUI_UIInputEvent* event);
214
215/**
216 * @brief Obtains the source type of this UI input event.
217 *
218 * @param event Indicates the pointer to the current UI input event.
219 * @return Returns the source type of the current UI input event.
220 * @since 12
221 */
222int32_t OH_ArkUI_UIInputEvent_GetSourceType(const ArkUI_UIInputEvent* event);
223
224/**
225 * @brief Obtains the tool type of this UI input event.
226 *
227 * @param event Indicates the pointer to the current UI input event.
228 * @return Returns the tool type of the current UI input event.
229 * @since 12
230 */
231int32_t OH_ArkUI_UIInputEvent_GetToolType(const ArkUI_UIInputEvent* event);
232
233/**
234 * @brief Obtains the time when this UI input event occurs.
235 *
236 * @param event Indicates the pointer to the current UI input event.
237 * @return Returns the time when the UI input event occurs; returns <b>0</b> if any parameter error occurs.
238 * @since 12
239 */
240int64_t OH_ArkUI_UIInputEvent_GetEventTime(const ArkUI_UIInputEvent* event);
241
242/**
243 * @brief Obtains the number of touch points from a directional input event (such as a touch event, mouse event,
244 * or axis event).
245 *
246 * @param event Indicates the pointer to the current UI input event.
247 * @return Returns the number of touch points for the directional input event.
248 * @since 12
249 */
250uint32_t OH_ArkUI_PointerEvent_GetPointerCount(const ArkUI_UIInputEvent* event);
251
252/**
253 * @brief Obtains the ID of a touch point from a directional input event (such as a touch event, mouse event,
254 * or axis event).
255 *
256 * @param event Indicates the pointer to the current UI input event.
257 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
258 * @return Returns the ID of the corresponding touch point.
259 * @since 12
260 */
261int32_t OH_ArkUI_PointerEvent_GetPointerId(const ArkUI_UIInputEvent* event, uint32_t pointerIndex);
262
263/**
264 * @brief Obtains the X coordinate relative to the upper left corner of the current component from a directional
265 * input event (such as a touch event, mouse event, or axis event).
266 *
267 * @param event Indicates the pointer to the directional input event.
268 * @return Returns the X coordinate relative to the upper left corner of the current component;
269 * returns <b>0</b> if any parameter error occurs.
270 * @since 12
271 */
272float OH_ArkUI_PointerEvent_GetX(const ArkUI_UIInputEvent* event);
273
274/**
275 * @brief Obtains the X coordinate of a specific touch point relative to the upper left corner of the current component
276 * from a directional input event (such as a touch event, mouse event, or axis event).
277 *
278 * @param event Indicates the pointer to the current UI input event.
279 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
280 * @return Returns the X coordinate relative to the upper left corner of the current component;
281 * returns <b>0.0f</b> if any parameter error occurs.
282 * @since 12
283 */
284float OH_ArkUI_PointerEvent_GetXByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex);
285
286/**
287 * @brief Obtains the Y coordinate relative to the upper left corner of the current component from a directional
288 * input event (such as a touch event, mouse event, or axis event).
289 *
290 * @param event Indicates the pointer to the UI input event.
291 * @return Returns the Y coordinate relative to the upper left corner of the current component;
292 * returns <b>0</b> if any parameter error occurs.
293 * @since 12
294 */
295float OH_ArkUI_PointerEvent_GetY(const ArkUI_UIInputEvent* event);
296
297/**
298 * @brief Obtains the Y coordinate of a specific touch point relative to the upper left corner of the current component
299 * from a directional input event (such as a touch event, mouse event, or axis event).
300 *
301 * @param event Indicates the pointer to the current UI input event.
302 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
303 * @return Returns the Y coordinate relative to the upper left corner of the current component;
304 * returns <b>0.0f</b> if any parameter error occurs.
305 * @since 12
306 */
307float OH_ArkUI_PointerEvent_GetYByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex);
308
309/**
310 * @brief Obtains the X coordinate relative to the upper left corner of the current application window from a
311 * directional input event (such as a touch event, mouse event, or axis event).
312 *
313 * @param event Indicates the pointer to the UI input event.
314 * @return Returns the X coordinate relative to the upper left corner of the current application window;
315 * returns <b>0</b> if any parameter error occurs.
316 * @since 12
317 */
318float OH_ArkUI_PointerEvent_GetWindowX(const ArkUI_UIInputEvent* event);
319
320/**
321 * @brief Obtains the X coordinate of a specific touch point relative to the upper left corner of the current
322 * application window from a directional input event (such as a touch event, mouse event, or axis event).
323 *
324 * @param event Indicates the pointer to the current UI input event.
325 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
326 * @return Returns the X coordinate relative to the upper left corner of the current application window;
327 * returns <b>0.0f</b> if any parameter error occurs.
328 * @since 12
329 */
330float OH_ArkUI_PointerEvent_GetWindowXByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex);
331
332/**
333 * @brief Obtains the Y coordinate relative to the upper left corner of the current application window from a
334 * directional input event (such as a touch event, mouse event, or axis event).
335 *
336 * @param event Indicates the pointer to the UI input event.
337 * @return Returns the Y coordinate relative to the upper left corner of the current application window;
338 * returns <b>0</b> if any parameter error occurs.
339 * @since 12
340 */
341float OH_ArkUI_PointerEvent_GetWindowY(const ArkUI_UIInputEvent* event);
342
343/**
344 * @brief Obtains the Y coordinate of a specific touch point relative to the upper left corner of the current
345 * application window from a directional input event (such as a touch event, mouse event, or axis event).
346 *
347 * @param event Indicates the pointer to the current UI input event.
348 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
349 * @return Returns the Y coordinate relative to the upper left corner of the current application window;
350 * returns <b>0.0f</b> if any parameter error occurs.
351 * @since 12
352 */
353float OH_ArkUI_PointerEvent_GetWindowYByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex);
354
355/**
356 * @brief Obtains the X coordinate relative to the upper left corner of the current screen from a directional input
357 * event (such as a touch event, mouse event, or axis event).
358 *
359 * @param event Indicates the pointer to the UI input event.
360 * @return Returns the X coordinate relative to the upper left corner of the current screen;
361 * returns <b>0</b> if any parameter error occurs.
362 * @since 12
363 */
364float OH_ArkUI_PointerEvent_GetDisplayX(const ArkUI_UIInputEvent* event);
365
366/**
367 * @brief Obtains the X coordinate of a specific touch point relative to the upper left corner of the current screen
368 * from a directional input event (such as a touch event, mouse event, or axis event).
369 *
370 * @param event Indicates the pointer to the current UI input event.
371 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
372 * @return Returns the X coordinate relative to the upper left corner of the current screen;
373 * returns <b>0.0f</b> if any parameter error occurs.
374 * @since 12
375 */
376float OH_ArkUI_PointerEvent_GetDisplayXByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex);
377
378/**
379 * @brief Obtains the Y coordinate relative to the upper left corner of the current screen from a directional input
380 * event (such as a touch event, mouse event, or axis event).
381 *
382 * @param event Indicates the pointer to the UI input event.
383 * @return Returns the Y coordinate relative to the upper left corner of the current screen;
384 * returns <b>0</b> if any parameter error occurs.
385 * @since 12
386 */
387float OH_ArkUI_PointerEvent_GetDisplayY(const ArkUI_UIInputEvent* event);
388
389/**
390 * @brief Obtains the Y coordinate of a specific touch point relative to the upper left corner of the current screen
391 * from a directional input event (such as a touch event, mouse event, or axis event).
392 *
393 * @param event Indicates the pointer to the current UI input event.
394 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
395 * @return Returns the Y coordinate relative to the upper left corner of the current screen;
396 * returns <b>0.0f</b> if any parameter error occurs.
397 * @since 12
398 */
399float OH_ArkUI_PointerEvent_GetDisplayYByIndex(const ArkUI_UIInputEvent* event, uint32_t pointerIndex);
400
401/**
402 * @brief Obtains the pressure applied to the touchscreen from a directional input event (for example, a touch event).
403 *
404 * @param event Indicates the pointer to the current UI input event.
405 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
406 * @return Returns the pressure applied to the touchscreen; returns <b>0.0f</b> if any parameter error occurs.
407 * @since 12
408 */
409float OH_ArkUI_PointerEvent_GetPressure(const ArkUI_UIInputEvent* event, uint32_t pointerIndex);
410
411/**
412 * @brief Obtains the angle relative to the YZ plane from a directional input event (for example, a touch event).
413 * The value range is [-90, 90]. A positive value indicates a rightward tilt.
414 *
415 * @param event Indicates the pointer to the current UI input event.
416 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
417 * @return Returns the angle relative to the YZ plane.
418 * @since 12
419 */
420float OH_ArkUI_PointerEvent_GetTiltX(const ArkUI_UIInputEvent* event, uint32_t pointerIndex);
421
422/**
423 * @brief Obtains the angle relative to the XZ plane from a directional input event (for example, a touch event).
424 * The value range is [-90, 90]. A positive value indicates a downward tilt.
425 *
426 * @param event Indicates the pointer to the current UI input event.
427 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
428 * @return Returns the angle relative to the XZ plane.
429 * @since 12
430 */
431float OH_ArkUI_PointerEvent_GetTiltY(const ArkUI_UIInputEvent* event, uint32_t pointerIndex);
432
433/**
434 * @brief Obtains the width of the touch area from a directional input event (for example, a touch event).
435 *
436 * @param event Indicates the pointer to the current UI input event.
437 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
438 * @return Returns the width of the touch area.
439 * @since 12
440 */
441float OH_ArkUI_PointerEvent_GetTouchAreaWidth(const ArkUI_UIInputEvent* event, uint32_t pointerIndex);
442
443/**
444 * @brief Obtains the height of the touch area from a directional input event (for example, a touch event).
445 *
446 * @param event Indicates the pointer to the current UI input event.
447 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
448 * @return Returns the height of the touch area.
449 * @since 12
450 */
451float OH_ArkUI_PointerEvent_GetTouchAreaHeight(const ArkUI_UIInputEvent* event, uint32_t pointerIndex);
452
453/**
454 * @brief Obtains the number of historical events from a directional input event (such as a touch event, mouse event,
455 * or axis event).
456 *
457 * @param event Indicates the pointer to the current UI input event.
458 * @return Returns the number of historical events.
459 * @since 12
460 */
461uint32_t OH_ArkUI_PointerEvent_GetHistorySize(const ArkUI_UIInputEvent* event);
462
463/**
464 * @brief Obtains the occurrence time of a historical event from a directional input event (such as a touch event,
465 * mouse event, or axis event).
466 *
467 * @param event Indicates the pointer to the current UI input event.
468 * @param historyIndex Indicates the index of the target historical event.
469 * @return Returns the time when the UI input event occurs; returns <b>0</b> if any parameter error occurs.
470 * @since 12
471 */
472int64_t OH_ArkUI_PointerEvent_GetHistoryEventTime(const ArkUI_UIInputEvent* event, uint32_t historyIndex);
473
474/**
475 * @brief Obtains the number of touch points in a specific historical event from a directional input event (such as
476 * a touch event, mouse event, or axis event).
477 *
478 * @param event Indicates the pointer to the current UI input event.
479 * @param historyIndex Indicates the index of the target historical event.
480 * @return Returns the number of touch points in the specified historical event
481 * @since 12
482 */
483uint32_t OH_ArkUI_PointerEvent_GetHistoryPointerCount(const ArkUI_UIInputEvent* event, uint32_t historyIndex);
484
485/**
486 * @brief Obtains the ID of a touch point in a specific historical event from a directional input event (such as
487 * a touch event, mouse event, or axis event).
488 *
489 * @param event Indicates the pointer to the current UI input event.
490 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
491 * @param historyIndex Indicates the index of the target historical event.
492 * @return Returns the ID of the corresponding touch point in the specified historical event.
493 * @since 12
494 */
495int32_t OH_ArkUI_PointerEvent_GetHistoryPointerId(
496    const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex);
497
498/**
499 * @brief Obtains the X coordinate of a specific touch point in a historical event relative to the upper left corner
500 * of the current component from a directional input event (such as a touch event, mouse event, or axis event).
501 *
502 * @param event Indicates the pointer to the current UI input event.
503 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
504 * @param historyIndex Indicates the index of the target historical event.
505 * @return Returns the X coordinate relative to the upper left corner of the current component;
506 * returns <b>0.0f</b> if any parameter error occurs.
507 * @since 12
508 */
509float OH_ArkUI_PointerEvent_GetHistoryX(const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex);
510
511/**
512 * @brief Obtains the Y coordinate of a specific touch point in a historical event relative to the upper left corner
513 * of the current component from a directional input event (such as a touch event, mouse event, or axis event).
514 *
515 * @param event Indicates the pointer to the current UI input event.
516 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
517 * @param historyIndex Indicates the index of the target historical event.
518 * @return Returns the Y coordinate relative to the upper left corner of the current component;
519 * returns <b>0.0f</b> if any parameter error occurs.
520 * @since 12
521 */
522float OH_ArkUI_PointerEvent_GetHistoryY(const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex);
523
524/**
525 * @brief Obtains the X coordinate of a specific touch point in a historical event relative to the upper left corner
526 * of the current application window from a directional input event (such as a touch event, mouse event, or axis event).
527 *
528 * @param event Indicates the pointer to the current UI input event.
529 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
530 * @param historyIndex Indicates the index of the target historical event.
531 * @return Returns the X coordinate relative to the upper left corner of the current application window;
532 * returns <b>0.0f</b> if any parameter error occurs.
533 * @since 12
534 */
535float OH_ArkUI_PointerEvent_GetHistoryWindowX(
536    const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex);
537
538/**
539 * @brief Obtains the Y coordinate of a specific touch point in a historical event relative to the upper left corner
540 * of the current application window from a directional input event (such as a touch event, mouse event, or axis event).
541 *
542 * @param event Indicates the pointer to the current UI input event.
543 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
544 * @param historyIndex Indicates the index of the target historical event.
545 * @return Returns the Y coordinate relative to the upper left corner of the current application window;
546 * returns <b>0.0f</b> if any parameter error occurs.
547 * @since 12
548 */
549float OH_ArkUI_PointerEvent_GetHistoryWindowY(
550    const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex);
551
552/**
553 * @brief Obtains the X coordinate of a specific touch point in a historical event relative to the upper left corner
554 * of the current screen from a directional input event (such as a touch event, mouse event, or axis event).
555 *
556 * @param event Indicates the pointer to the current UI input event.
557 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
558 * @param historyIndex Indicates the index of the target historical event.
559 * @return Returns the X coordinate relative to the upper left corner of the current screen;
560 * returns <b>0.0f</b> if any parameter error occurs.
561 * @since 12
562 */
563float OH_ArkUI_PointerEvent_GetHistoryDisplayX(
564    const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex);
565
566/**
567 * @brief Obtains the Y coordinate of a specific touch point in a historical event relative to the upper left corner
568 * of the current screen from a directional input event (such as a touch event, mouse event, or axis event).
569 *
570 * @param event Indicates the pointer to the current UI input event.
571 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
572 * @param historyIndex Indicates the index of the target historical event.
573 * @return Returns the Y coordinate relative to the upper left corner of the current screen;
574 * returns <b>0.0f</b> if any parameter error occurs.
575 * @since 12
576 */
577float OH_ArkUI_PointerEvent_GetHistoryDisplayY(
578    const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex);
579
580/**
581 * @brief Obtains the pressure applied to the touchscreen in a specific historical event from a directional input event
582 * (for example, a touch event)..
583 *
584 * @param event Indicates the pointer to the current UI input event.
585 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
586 * @param historyIndex Indicates the index of the target historical event.
587 * @return Returns the pressure applied to the touchscreen; returns <b>0.0f</b> if any parameter error occurs.
588 * @since 12
589 */
590float OH_ArkUI_PointerEvent_GetHistoryPressure(
591    const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex);
592
593/**
594 * @brief Obtains the angle relative to the YZ plane in a specific historical event from a directional input event
595 * (for example, a touch event). The value range is [-90, 90]. A positive value indicates a rightward tilt.
596 *
597 * @param event Indicates the pointer to the current UI input event.
598 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
599 * @param historyIndex Indicates the index of the target historical event.
600 * @return Returns the angle relative to the YZ plane.
601 * @since 12
602 */
603float OH_ArkUI_PointerEvent_GetHistoryTiltX(
604    const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex);
605
606/**
607 * @brief Obtains the angle relative to the XZ plane in a specific historical event from a directional input event
608 * (for example, a touch event). The value range is [-90, 90]. A positive value indicates a downward tilt.
609 *
610 * @param event Indicates the pointer to the current UI input event.
611 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
612 * @param historyIndex Indicates the index of the target historical event.
613 * @return Returns the angle relative to the XZ plane.
614 * @since 12
615 */
616float OH_ArkUI_PointerEvent_GetHistoryTiltY(
617    const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex);
618
619/**
620 * @brief Obtains the width of the touch area in a specific historical event from a directional input event
621 * (for example, a touch event).
622 *
623 * @param event Indicates the pointer to the current UI input event.
624 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
625 * @param historyIndex Indicates the index of the target historical event.
626 * @return Returns the width of the touch area.
627 * @since 12
628 */
629float OH_ArkUI_PointerEvent_GetHistoryTouchAreaWidth(
630    const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex);
631
632/**
633 * @brief Obtains the height of the touch area in a specific historical event from a directional input event
634 * (for example, a touch event).
635 *
636 * @param event Indicates the pointer to the current UI input event.
637 * @param pointerIndex Indicates the index of the target touch point in the multi-touch data list.
638 * @param historyIndex Indicates the index of the target historical event.
639 * @return Returns the height of the touch area.
640 * @since 12
641 */
642float OH_ArkUI_PointerEvent_GetHistoryTouchAreaHeight(
643    const ArkUI_UIInputEvent* event, uint32_t pointerIndex, uint32_t historyIndex);
644
645/**
646 * @brief Obtains the value of the vertical scroll axis for this axis event.
647 *
648 * @param event Indicates the pointer to the UI input event.
649 * @return Returns the value of the vertical scroll axis of the current axis event;
650 * returns <b>0</b> if any parameter error occurs.
651 * @since 12
652 */
653double OH_ArkUI_AxisEvent_GetVerticalAxisValue(const ArkUI_UIInputEvent* event);
654
655/**
656 * @brief Obtains the value of the horizontal scroll axis for this axis event.
657 *
658 * @param event Indicates the pointer to the UI input event.
659 * @return Returns the value of the horizontal scroll axis of the current axis event;
660 * returns <b>0</b> if any parameter error occurs.
661 * @since 12
662 */
663double OH_ArkUI_AxisEvent_GetHorizontalAxisValue(const ArkUI_UIInputEvent* event);
664
665/**
666 * @brief Obtains the scale value of the pinch axis for this axis event.
667 *
668 * @param event Indicates the pointer to the UI input event.
669 * @return Returns the scale value of the pinch axis of the current axis event;
670 * returns <b>0</b> if any parameter error occurs.
671 * @since 12
672 */
673double OH_ArkUI_AxisEvent_GetPinchAxisScaleValue(const ArkUI_UIInputEvent* event);
674
675/**
676 * @brief Sets how the component behaves during hit testing.
677 *
678 * @param event Indicates the pointer to the current UI input event.
679 * @param mode Indicates how the component behaves during hit testing. The parameter type is {@link HitTestMode}.
680 * @return Returns the status code of the execution.
681 * @since 12
682 */
683int32_t OH_ArkUI_PointerEvent_SetInterceptHitTestMode(const ArkUI_UIInputEvent* event, HitTestMode mode);
684
685/**
686 * @brief 获取鼠标事件的按键类型的值。
687 *
688 * @param event 表示指向当前UI输入事件的指针。
689 * @return 返回鼠标按键类型,1为左键,2为右键,3为中键,4为后退键,5为前进键。
690 * @since 12
691 */
692int32_t OH_ArkUI_MouseEvent_GetMouseButton(const ArkUI_UIInputEvent* event);
693
694/**
695 * @brief 获取鼠标事件的鼠标动作类型的值。
696 *
697 * @param event 表示指向当前UI输入事件的指针。
698 * @return 返回鼠标动作类型,1表示按键按下,2表示按键松开,3表示鼠标移动。
699 * @since 12
700 */
701int32_t OH_ArkUI_MouseEvent_GetMouseAction(const ArkUI_UIInputEvent* event);
702
703/**
704 * @brief Sets whether to prevent event bubbling.
705 *
706 * @param event Indicates the pointer to the current UI input event.
707 * @param stopPropagation Indicates whether the event is prevented from bubbling.
708 * @return Returns the status code of the execution. If 0 is returned, the setting is successful.
709 *         If 401 is returned, the execution fails.
710 *         The possible cause of the failure is that the event parameter is abnormal, such as a null pointer.
711 * @since 12
712 */
713int32_t OH_ArkUI_PointerEvent_SetStopPropagation(const ArkUI_UIInputEvent* event, bool stopPropagation);
714
715#ifdef __cplusplus
716};
717#endif
718
719#endif // _ARKUI_UI_INPUT_EVENT_H_
720/** @} */
721