objc2_ar_kit/generated/
ARPlaneAnchor.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5#[cfg(feature = "objc2")]
6use objc2::__framework_prelude::*;
7#[cfg(feature = "objc2-foundation")]
8use objc2_foundation::*;
9
10use crate::*;
11
12/// A value describing the alignment of a plane anchor.
13///
14/// See also [Apple's documentation](https://developer.apple.com/documentation/arkit/arplaneanchoralignment?language=objc)
15// NS_ENUM
16#[cfg(feature = "objc2")]
17#[repr(transparent)]
18#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
19pub struct ARPlaneAnchorAlignment(pub NSInteger);
20#[cfg(feature = "objc2")]
21impl ARPlaneAnchorAlignment {
22    /// A plane that is horizontal with respect to gravity.
23    #[doc(alias = "ARPlaneAnchorAlignmentHorizontal")]
24    pub const Horizontal: Self = Self(0);
25    /// A plane that is vertical with respect to gravity.
26    #[doc(alias = "ARPlaneAnchorAlignmentVertical")]
27    pub const Vertical: Self = Self(1);
28}
29
30#[cfg(feature = "objc2")]
31unsafe impl Encode for ARPlaneAnchorAlignment {
32    const ENCODING: Encoding = NSInteger::ENCODING;
33}
34
35#[cfg(feature = "objc2")]
36unsafe impl RefEncode for ARPlaneAnchorAlignment {
37    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
38}
39
40/// A value describing the classification status of a plane anchor.
41///
42/// See also [Apple's documentation](https://developer.apple.com/documentation/arkit/arplaneclassificationstatus?language=objc)
43// NS_ENUM
44#[cfg(feature = "objc2")]
45#[repr(transparent)]
46#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
47pub struct ARPlaneClassificationStatus(pub NSInteger);
48#[cfg(feature = "objc2")]
49impl ARPlaneClassificationStatus {
50    /// Plane classification is currently unavailable.
51    #[doc(alias = "ARPlaneClassificationStatusNotAvailable")]
52    pub const NotAvailable: Self = Self(0);
53    /// ARKit has not yet determined the classification of this plane.
54    #[doc(alias = "ARPlaneClassificationStatusUndetermined")]
55    pub const Undetermined: Self = Self(1);
56    /// ARKit is confident the plane is not any of the known classes.
57    #[doc(alias = "ARPlaneClassificationStatusUnknown")]
58    pub const Unknown: Self = Self(2);
59    /// ARKit has a classification for the plane it is confident in.
60    #[doc(alias = "ARPlaneClassificationStatusKnown")]
61    pub const Known: Self = Self(3);
62}
63
64#[cfg(feature = "objc2")]
65unsafe impl Encode for ARPlaneClassificationStatus {
66    const ENCODING: Encoding = NSInteger::ENCODING;
67}
68
69#[cfg(feature = "objc2")]
70unsafe impl RefEncode for ARPlaneClassificationStatus {
71    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
72}
73
74/// A value describing the classification of a plane anchor.
75///
76/// See also [Apple's documentation](https://developer.apple.com/documentation/arkit/arplaneclassification?language=objc)
77// NS_ENUM
78#[cfg(feature = "objc2")]
79#[repr(transparent)]
80#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
81pub struct ARPlaneClassification(pub NSInteger);
82#[cfg(feature = "objc2")]
83impl ARPlaneClassification {
84    /// The classification is not any of the known classes.
85    #[doc(alias = "ARPlaneClassificationNone")]
86    pub const None: Self = Self(0);
87    /// The classification is not any of the known classes.
88    #[doc(alias = "ARPlaneClassificationWall")]
89    pub const Wall: Self = Self(1);
90    /// The classification is not any of the known classes.
91    #[doc(alias = "ARPlaneClassificationFloor")]
92    pub const Floor: Self = Self(2);
93    /// The classification is not any of the known classes.
94    #[doc(alias = "ARPlaneClassificationCeiling")]
95    pub const Ceiling: Self = Self(3);
96    /// The classification is not any of the known classes.
97    #[doc(alias = "ARPlaneClassificationTable")]
98    pub const Table: Self = Self(4);
99    /// The classification is not any of the known classes.
100    #[doc(alias = "ARPlaneClassificationSeat")]
101    pub const Seat: Self = Self(5);
102    /// The classification is not any of the known classes.
103    #[doc(alias = "ARPlaneClassificationWindow")]
104    pub const Window: Self = Self(6);
105    /// The classification is not any of the known classes.
106    #[doc(alias = "ARPlaneClassificationDoor")]
107    pub const Door: Self = Self(7);
108}
109
110#[cfg(feature = "objc2")]
111unsafe impl Encode for ARPlaneClassification {
112    const ENCODING: Encoding = NSInteger::ENCODING;
113}
114
115#[cfg(feature = "objc2")]
116unsafe impl RefEncode for ARPlaneClassification {
117    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
118}
119
120#[cfg(feature = "objc2")]
121extern_class!(
122    /// Represents the extents of a plane.
123    ///
124    /// See also [Apple's documentation](https://developer.apple.com/documentation/arkit/arplaneextent?language=objc)
125    #[unsafe(super(NSObject))]
126    #[derive(Debug, PartialEq, Eq, Hash)]
127    #[cfg(feature = "objc2")]
128    pub struct ARPlaneExtent;
129);
130
131#[cfg(feature = "objc2")]
132unsafe impl Send for ARPlaneExtent {}
133
134#[cfg(feature = "objc2")]
135unsafe impl Sync for ARPlaneExtent {}
136
137#[cfg(all(feature = "objc2", feature = "objc2-foundation"))]
138unsafe impl NSCoding for ARPlaneExtent {}
139
140#[cfg(feature = "objc2")]
141unsafe impl NSObjectProtocol for ARPlaneExtent {}
142
143#[cfg(all(feature = "objc2", feature = "objc2-foundation"))]
144unsafe impl NSSecureCoding for ARPlaneExtent {}
145
146#[cfg(feature = "objc2")]
147impl ARPlaneExtent {
148    extern_methods!(
149        /// The rotation angle in radians of the extents around the y-axis in the anchor’s coordinate space.
150        #[unsafe(method(rotationOnYAxis))]
151        #[unsafe(method_family = none)]
152        pub unsafe fn rotationOnYAxis(&self) -> c_float;
153
154        /// The width of the plane. Corresponds to the length of the plane along the x-axis prior to applying .rotationOnYAxis.
155        #[unsafe(method(width))]
156        #[unsafe(method_family = none)]
157        pub unsafe fn width(&self) -> c_float;
158
159        /// The height the plane. Corresponds to the length of the plane along the z-axis prior to applying .rotationOnYAxis.
160        #[unsafe(method(height))]
161        #[unsafe(method_family = none)]
162        pub unsafe fn height(&self) -> c_float;
163    );
164}
165
166/// Methods declared on superclass `NSObject`.
167#[cfg(feature = "objc2")]
168impl ARPlaneExtent {
169    extern_methods!(
170        #[unsafe(method(init))]
171        #[unsafe(method_family = init)]
172        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
173
174        #[unsafe(method(new))]
175        #[unsafe(method_family = new)]
176        pub unsafe fn new() -> Retained<Self>;
177    );
178}
179
180#[cfg(feature = "objc2")]
181extern_class!(
182    /// An anchor representing a planar surface in the world.
183    ///
184    /// Planes are defined in the X and Z direction, where Y is the surface’s normal.
185    ///
186    /// See also [Apple's documentation](https://developer.apple.com/documentation/arkit/arplaneanchor?language=objc)
187    #[unsafe(super(ARAnchor, NSObject))]
188    #[derive(Debug, PartialEq, Eq, Hash)]
189    #[cfg(all(feature = "ARAnchor", feature = "objc2"))]
190    pub struct ARPlaneAnchor;
191);
192
193#[cfg(all(feature = "ARAnchor", feature = "objc2"))]
194unsafe impl Send for ARPlaneAnchor {}
195
196#[cfg(all(feature = "ARAnchor", feature = "objc2"))]
197unsafe impl Sync for ARPlaneAnchor {}
198
199#[cfg(all(feature = "ARAnchor", feature = "objc2", feature = "objc2-foundation"))]
200unsafe impl ARAnchorCopying for ARPlaneAnchor {}
201
202#[cfg(all(feature = "ARAnchor", feature = "objc2", feature = "objc2-foundation"))]
203unsafe impl NSCoding for ARPlaneAnchor {}
204
205#[cfg(all(feature = "ARAnchor", feature = "objc2", feature = "objc2-foundation"))]
206unsafe impl NSCopying for ARPlaneAnchor {}
207
208#[cfg(all(feature = "ARAnchor", feature = "objc2", feature = "objc2-foundation"))]
209unsafe impl CopyingHelper for ARPlaneAnchor {
210    type Result = Self;
211}
212
213#[cfg(all(feature = "ARAnchor", feature = "objc2"))]
214unsafe impl NSObjectProtocol for ARPlaneAnchor {}
215
216#[cfg(all(feature = "ARAnchor", feature = "objc2", feature = "objc2-foundation"))]
217unsafe impl NSSecureCoding for ARPlaneAnchor {}
218
219#[cfg(all(feature = "ARAnchor", feature = "objc2"))]
220impl ARPlaneAnchor {
221    extern_methods!(
222        /// Determines whether plane classification is supported on this device.
223        #[unsafe(method(isClassificationSupported))]
224        #[unsafe(method_family = none)]
225        pub unsafe fn isClassificationSupported() -> bool;
226
227        /// The alignment of the plane.
228        #[unsafe(method(alignment))]
229        #[unsafe(method_family = none)]
230        pub unsafe fn alignment(&self) -> ARPlaneAnchorAlignment;
231
232        /// The extent of the plane in the anchor’s coordinate space.
233        #[unsafe(method(planeExtent))]
234        #[unsafe(method_family = none)]
235        pub unsafe fn planeExtent(&self) -> Retained<ARPlaneExtent>;
236
237        #[cfg(feature = "ARPlaneGeometry")]
238        /// Geometry of the plane in the anchor's coordinate space.
239        #[unsafe(method(geometry))]
240        #[unsafe(method_family = none)]
241        pub unsafe fn geometry(&self) -> Retained<ARPlaneGeometry>;
242
243        /// Classification status of the plane.
244        #[unsafe(method(classificationStatus))]
245        #[unsafe(method_family = none)]
246        pub unsafe fn classificationStatus(&self) -> ARPlaneClassificationStatus;
247
248        /// Classification of the plane.
249        #[unsafe(method(classification))]
250        #[unsafe(method_family = none)]
251        pub unsafe fn classification(&self) -> ARPlaneClassification;
252    );
253}
254
255/// Methods declared on superclass `ARAnchor`.
256#[cfg(all(feature = "ARAnchor", feature = "objc2"))]
257impl ARPlaneAnchor {
258    extern_methods!(
259        /// Unavailable
260        #[unsafe(method(init))]
261        #[unsafe(method_family = init)]
262        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
263
264        #[unsafe(method(new))]
265        #[unsafe(method_family = new)]
266        pub unsafe fn new() -> Retained<Self>;
267    );
268}