objc2_game_controller/generated/
GCControllerDirectionPad.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6
7use crate::*;
8
9/// Set this block if you want to be notified when the value on this axis changes.
10///
11///
12/// Parameter `dpad`: the direction pad collection whose axis have been modified.
13///
14/// Parameter `xValue`: the value the x axis was set to at the time the valueChangedHandler fired.
15///
16/// Parameter `yValue`: the value the y axis was set to at the time the valueChangedHandler fired.
17///
18/// See also [Apple's documentation](https://developer.apple.com/documentation/gamecontroller/gccontrollerdirectionpadvaluechangedhandler?language=objc)
19#[cfg(all(feature = "GCControllerElement", feature = "block2"))]
20pub type GCControllerDirectionPadValueChangedHandler =
21    *mut block2::Block<dyn Fn(NonNull<GCControllerDirectionPad>, c_float, c_float)>;
22
23extern_class!(
24    /// A direction pad is a common grouping of 2 axis inputs where the input can also be interpreted as 2 sets of mutually exclusive button pairs.
25    /// Only one button in each pair, {up, down} and {left, right}, can be pressed at any one time.
26    ///
27    /// See also [Apple's documentation](https://developer.apple.com/documentation/gamecontroller/gccontrollerdirectionpad?language=objc)
28    #[unsafe(super(GCControllerElement, NSObject))]
29    #[derive(Debug, PartialEq, Eq, Hash)]
30    #[cfg(feature = "GCControllerElement")]
31    pub struct GCControllerDirectionPad;
32);
33
34#[cfg(feature = "GCControllerElement")]
35unsafe impl NSObjectProtocol for GCControllerDirectionPad {}
36
37#[cfg(feature = "GCControllerElement")]
38impl GCControllerDirectionPad {
39    extern_methods!(
40        #[cfg(feature = "block2")]
41        #[unsafe(method(valueChangedHandler))]
42        #[unsafe(method_family = none)]
43        pub unsafe fn valueChangedHandler(&self) -> GCControllerDirectionPadValueChangedHandler;
44
45        #[cfg(feature = "block2")]
46        /// Setter for [`valueChangedHandler`][Self::valueChangedHandler].
47        #[unsafe(method(setValueChangedHandler:))]
48        #[unsafe(method_family = none)]
49        pub unsafe fn setValueChangedHandler(
50            &self,
51            value_changed_handler: GCControllerDirectionPadValueChangedHandler,
52        );
53
54        #[cfg(feature = "GCControllerAxisInput")]
55        #[unsafe(method(xAxis))]
56        #[unsafe(method_family = none)]
57        pub unsafe fn xAxis(&self) -> Retained<GCControllerAxisInput>;
58
59        #[cfg(feature = "GCControllerAxisInput")]
60        #[unsafe(method(yAxis))]
61        #[unsafe(method_family = none)]
62        pub unsafe fn yAxis(&self) -> Retained<GCControllerAxisInput>;
63
64        #[cfg(feature = "GCControllerButtonInput")]
65        #[unsafe(method(up))]
66        #[unsafe(method_family = none)]
67        pub unsafe fn up(&self) -> Retained<GCControllerButtonInput>;
68
69        #[cfg(feature = "GCControllerButtonInput")]
70        #[unsafe(method(down))]
71        #[unsafe(method_family = none)]
72        pub unsafe fn down(&self) -> Retained<GCControllerButtonInput>;
73
74        #[cfg(feature = "GCControllerButtonInput")]
75        #[unsafe(method(left))]
76        #[unsafe(method_family = none)]
77        pub unsafe fn left(&self) -> Retained<GCControllerButtonInput>;
78
79        #[cfg(feature = "GCControllerButtonInput")]
80        #[unsafe(method(right))]
81        #[unsafe(method_family = none)]
82        pub unsafe fn right(&self) -> Retained<GCControllerButtonInput>;
83
84        /// Sets the normalized value for the direction pad's axis inputs. Will update the states of the direction pad's button inputs as well.
85        ///
86        ///
87        /// Parameter `xAxis`: the value to set the xAxis of the touchpad to.
88        ///
89        /// Parameter `yAxis`: the value to set the yAxis of the touchpad to.
90        ///
91        /// Note: If the controller's snapshot flag is set to NO, this method has no effect.
92        ///
93        /// See: value
94        ///
95        /// See: pressed
96        #[unsafe(method(setValueForXAxis:yAxis:))]
97        #[unsafe(method_family = none)]
98        pub unsafe fn setValueForXAxis_yAxis(&self, x_axis: c_float, y_axis: c_float);
99    );
100}
101
102/// Methods declared on superclass `NSObject`.
103#[cfg(feature = "GCControllerElement")]
104impl GCControllerDirectionPad {
105    extern_methods!(
106        #[unsafe(method(init))]
107        #[unsafe(method_family = init)]
108        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
109
110        #[unsafe(method(new))]
111        #[unsafe(method_family = new)]
112        pub unsafe fn new() -> Retained<Self>;
113    );
114}