Skip to main content

ohos_arkui_input_binding/ui_input_data/
axis.rs

1#[cfg(feature = "api-22")]
2use ohos_arkui_input_sys::OH_ArkUI_AxisEvent_HasAxis;
3#[cfg(feature = "api-15")]
4use ohos_arkui_input_sys::{
5    OH_ArkUI_AxisEvent_GetAxisAction, OH_ArkUI_FocusAxisEvent_GetAxisValue,
6    OH_ArkUI_FocusAxisEvent_SetStopPropagation, UI_FOCUS_AXIS_EVENT_ABS,
7};
8use ohos_arkui_input_sys::{
9    OH_ArkUI_AxisEvent_GetHorizontalAxisValue, OH_ArkUI_AxisEvent_GetPinchAxisScaleValue,
10    OH_ArkUI_AxisEvent_GetVerticalAxisValue,
11};
12#[cfg(feature = "api-17")]
13use ohos_arkui_input_sys::{
14    OH_ArkUI_AxisEvent_GetScrollStep, OH_ArkUI_AxisEvent_SetPropagation,
15    OH_ArkUI_HoverEvent_IsHovered,
16};
17
18#[cfg(feature = "api-15")]
19use crate::ui_input_data::check_status;
20#[cfg(any(feature = "api-15", feature = "api-17"))]
21use crate::ArkUIInputError;
22use crate::ArkUIInputEvent;
23#[cfg(feature = "api-15")]
24use crate::{UIAxisEventAction, UIFocusAxisEventAbs};
25
26impl ArkUIInputEvent {
27    pub fn axis_vertical_value(&self) -> f64 {
28        unsafe { OH_ArkUI_AxisEvent_GetVerticalAxisValue(self.raw()) }
29    }
30
31    pub fn axis_horizontal_value(&self) -> f64 {
32        unsafe { OH_ArkUI_AxisEvent_GetHorizontalAxisValue(self.raw()) }
33    }
34
35    pub fn axis_pinch_scale_value(&self) -> f64 {
36        unsafe { OH_ArkUI_AxisEvent_GetPinchAxisScaleValue(self.raw()) }
37    }
38
39    #[cfg(feature = "api-15")]
40    pub fn axis_action(&self) -> UIAxisEventAction {
41        UIAxisEventAction::from(unsafe { OH_ArkUI_AxisEvent_GetAxisAction(self.raw()) } as u32)
42    }
43
44    #[cfg(feature = "api-22")]
45    pub fn axis_has(&self, axis: i32) -> bool {
46        unsafe { OH_ArkUI_AxisEvent_HasAxis(self.raw(), axis) != 0 }
47    }
48
49    #[cfg(feature = "api-15")]
50    pub fn focus_axis_value(&self, axis: UIFocusAxisEventAbs) -> f64 {
51        let axis: UI_FOCUS_AXIS_EVENT_ABS = axis.into();
52        unsafe { OH_ArkUI_FocusAxisEvent_GetAxisValue(self.raw(), axis as i32) }
53    }
54
55    #[cfg(feature = "api-15")]
56    pub fn focus_axis_set_stop_propagation(
57        &self,
58        stop_propagation: bool,
59    ) -> Result<(), ArkUIInputError> {
60        check_status(unsafe {
61            OH_ArkUI_FocusAxisEvent_SetStopPropagation(self.raw(), stop_propagation)
62        })
63    }
64
65    #[cfg(feature = "api-17")]
66    pub fn hover_is_hovered(&self) -> bool {
67        unsafe { OH_ArkUI_HoverEvent_IsHovered(self.raw()) }
68    }
69
70    #[cfg(feature = "api-17")]
71    pub fn axis_set_propagation(&self, propagation: bool) -> Result<(), ArkUIInputError> {
72        check_status(unsafe { OH_ArkUI_AxisEvent_SetPropagation(self.raw(), propagation) })
73    }
74
75    #[cfg(feature = "api-17")]
76    pub fn axis_scroll_step(&self) -> i32 {
77        unsafe { OH_ArkUI_AxisEvent_GetScrollStep(self.raw()) }
78    }
79}