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::DynBlock<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")]
35extern_conformance!(
36    unsafe impl NSObjectProtocol for GCControllerDirectionPad {}
37);
38
39#[cfg(feature = "GCControllerElement")]
40impl GCControllerDirectionPad {
41    extern_methods!(
42        #[cfg(feature = "block2")]
43        /// # Safety
44        ///
45        /// The returned block's argument 1 must be a valid pointer.
46        #[unsafe(method(valueChangedHandler))]
47        #[unsafe(method_family = none)]
48        pub unsafe fn valueChangedHandler(&self) -> GCControllerDirectionPadValueChangedHandler;
49
50        #[cfg(feature = "block2")]
51        /// Setter for [`valueChangedHandler`][Self::valueChangedHandler].
52        ///
53        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
54        ///
55        /// # Safety
56        ///
57        /// `value_changed_handler` must be a valid pointer or null.
58        #[unsafe(method(setValueChangedHandler:))]
59        #[unsafe(method_family = none)]
60        pub unsafe fn setValueChangedHandler(
61            &self,
62            value_changed_handler: GCControllerDirectionPadValueChangedHandler,
63        );
64
65        #[cfg(feature = "GCControllerAxisInput")]
66        #[unsafe(method(xAxis))]
67        #[unsafe(method_family = none)]
68        pub unsafe fn xAxis(&self) -> Retained<GCControllerAxisInput>;
69
70        #[cfg(feature = "GCControllerAxisInput")]
71        #[unsafe(method(yAxis))]
72        #[unsafe(method_family = none)]
73        pub unsafe fn yAxis(&self) -> Retained<GCControllerAxisInput>;
74
75        #[cfg(feature = "GCControllerButtonInput")]
76        #[unsafe(method(up))]
77        #[unsafe(method_family = none)]
78        pub unsafe fn up(&self) -> Retained<GCControllerButtonInput>;
79
80        #[cfg(feature = "GCControllerButtonInput")]
81        #[unsafe(method(down))]
82        #[unsafe(method_family = none)]
83        pub unsafe fn down(&self) -> Retained<GCControllerButtonInput>;
84
85        #[cfg(feature = "GCControllerButtonInput")]
86        #[unsafe(method(left))]
87        #[unsafe(method_family = none)]
88        pub unsafe fn left(&self) -> Retained<GCControllerButtonInput>;
89
90        #[cfg(feature = "GCControllerButtonInput")]
91        #[unsafe(method(right))]
92        #[unsafe(method_family = none)]
93        pub unsafe fn right(&self) -> Retained<GCControllerButtonInput>;
94
95        /// Sets the normalized value for the direction pad's axis inputs. Will update the states of the direction pad's button inputs as well.
96        ///
97        ///
98        /// Parameter `xAxis`: the value to set the xAxis of the touchpad to.
99        ///
100        /// Parameter `yAxis`: the value to set the yAxis of the touchpad to.
101        ///
102        /// Note: If the controller's snapshot flag is set to NO, this method has no effect.
103        ///
104        /// See: value
105        ///
106        /// See: pressed
107        #[unsafe(method(setValueForXAxis:yAxis:))]
108        #[unsafe(method_family = none)]
109        pub unsafe fn setValueForXAxis_yAxis(&self, x_axis: c_float, y_axis: c_float);
110    );
111}
112
113/// Methods declared on superclass `NSObject`.
114#[cfg(feature = "GCControllerElement")]
115impl GCControllerDirectionPad {
116    extern_methods!(
117        #[unsafe(method(init))]
118        #[unsafe(method_family = init)]
119        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
120
121        #[unsafe(method(new))]
122        #[unsafe(method_family = new)]
123        pub unsafe fn new() -> Retained<Self>;
124    );
125}