objc2_compositor_services/generated/tracking_area.rs
1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::cell::UnsafeCell;
4use core::marker::{PhantomData, PhantomPinned};
5use objc2::__framework_prelude::*;
6
7use crate::*;
8
9/// [Apple's documentation](https://developer.apple.com/documentation/compositorservices/cp_tracking_area?language=objc)
10#[repr(C)]
11#[derive(Debug)]
12pub struct cp_tracking_area {
13 inner: [u8; 0],
14 _p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
15}
16
17unsafe impl RefEncode for cp_tracking_area {
18 const ENCODING_REF: Encoding = Encoding::Pointer(&Encoding::Struct("cp_tracking_area", &[]));
19}
20
21/// An opaque type that describes a region of a view that
22/// interacts with the gaze/cursor.
23///
24/// See also [Apple's documentation](https://developer.apple.com/documentation/compositorservices/cp_tracking_area_t?language=objc)
25pub type cp_tracking_area_t = *mut cp_tracking_area;
26
27/// [Apple's documentation](https://developer.apple.com/documentation/compositorservices/cp_hover_effect?language=objc)
28#[repr(C)]
29#[derive(Debug)]
30pub struct cp_hover_effect {
31 inner: [u8; 0],
32 _p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
33}
34
35unsafe impl RefEncode for cp_hover_effect {
36 const ENCODING_REF: Encoding = Encoding::Pointer(&Encoding::Struct("cp_hover_effect", &[]));
37}
38
39/// An opaque type that describes a hover effect of the tracking area.
40///
41/// See also [Apple's documentation](https://developer.apple.com/documentation/compositorservices/cp_hover_effect_t?language=objc)
42pub type cp_hover_effect_t = *mut cp_hover_effect;
43
44/// A value used when rendering a tracking area.
45///
46/// When rendering to ``cp_drawable_get_tracking_areas_texture``
47/// use this value to write the pixel value.
48/// Upper bound limit is based on pixel format set by
49/// ``cp_layer_renderer_configuration_get_tracking_areas_format``
50/// Can change per-frame for the same rendered mesh/object.
51/// A value of 0 is reserved to represent the absence of a tracking area.
52///
53/// See also [Apple's documentation](https://developer.apple.com/documentation/compositorservices/cp_tracking_area_render_value?language=objc)
54// NS_TYPED_EXTENSIBLE_ENUM
55pub type cp_tracking_area_render_value = u16;
56
57/// Value to be used in the tracking area texture, to indicate that there
58/// is no tracking area at a given pixel.
59///
60/// See also [Apple's documentation](https://developer.apple.com/documentation/compositorservices/cp_tracking_area_render_value_invalid?language=objc)
61pub static cp_tracking_area_render_value_invalid: cp_tracking_area_render_value = 0;
62
63/// An identifier for the tracking area.
64///
65/// All tracking areas should have a unique value in a frame.
66/// This value should be constant for the same rendered mesh/object
67/// across frames to ensure tracking areas are identifiable between
68/// frames.
69/// There is no reserved values so all values are considered valid
70/// but should be unique.
71///
72/// See also [Apple's documentation](https://developer.apple.com/documentation/compositorservices/cp_tracking_area_identifier?language=objc)
73// NS_TYPED_EXTENSIBLE_ENUM
74pub type cp_tracking_area_identifier = u64;
75
76/// Identifier reserved as invalid.
77///
78/// Should not be used as identifier for ``cp_drawable_add_tracking_area``.
79///
80/// See also [Apple's documentation](https://developer.apple.com/documentation/compositorservices/cp_tracking_area_identifier_invalid?language=objc)
81pub static cp_tracking_area_identifier_invalid: cp_tracking_area_identifier = 0;
82
83impl cp_tracking_area {
84 /// Returns the render value for the tracking area.
85 ///
86 /// - Parameters:
87 /// - tracking_area: The tracking area for a frame.
88 /// - Returns: The render value for the tracking area for this frame.
89 /// This value is what should be used in this frames render pass to identify the
90 /// tracking area of given identifier.
91 ///
92 /// Use the returned value in the render pass of ``cp_drawable_get_tracking_areas_texture``
93 /// for the pixel value of the tracking area identifier.
94 ///
95 /// # Safety
96 ///
97 /// `tracking_area` must be a valid pointer.
98 #[doc(alias = "cp_tracking_area_get_render_value")]
99 #[inline]
100 pub unsafe fn render_value(tracking_area: cp_tracking_area_t) -> cp_tracking_area_render_value {
101 extern "C-unwind" {
102 fn cp_tracking_area_get_render_value(
103 tracking_area: cp_tracking_area_t,
104 ) -> cp_tracking_area_render_value;
105 }
106 unsafe { cp_tracking_area_get_render_value(tracking_area) }
107 }
108
109 /// Returns the identifier for the tracking area.
110 ///
111 /// - Parameters:
112 /// - tracking_area: The tracking area for a frame.
113 /// - Returns: The identifier for the tracking area.
114 /// This should be a unique value for this tracking area and consistent
115 /// for the rendered mesh/object across frames.
116 ///
117 /// # Safety
118 ///
119 /// `tracking_area` must be a valid pointer.
120 #[doc(alias = "cp_tracking_area_get_identifier")]
121 #[inline]
122 pub unsafe fn identifier(tracking_area: cp_tracking_area_t) -> cp_tracking_area_identifier {
123 extern "C-unwind" {
124 fn cp_tracking_area_get_identifier(
125 tracking_area: cp_tracking_area_t,
126 ) -> cp_tracking_area_identifier;
127 }
128 unsafe { cp_tracking_area_get_identifier(tracking_area) }
129 }
130
131 /// Returns the hover effect opaque object for the tracking area for this frame.
132 ///
133 /// - Parameters:
134 /// - tracking_area: The tracking area for a frame.
135 /// - Returns: The hover effect for the tracking area.
136 ///
137 /// The hover effect contains information used to render the hover
138 /// effect using the tracking area textures and gaze once application
139 /// render pass has completed.
140 /// Can only create 1 hover effect per-tracking area, to destroy and
141 /// disable the hover effect see ``cp_hover_effect_destroy``
142 ///
143 /// # Safety
144 ///
145 /// `tracking_area` must be a valid pointer.
146 #[doc(alias = "cp_tracking_area_add_automatic_hover_effect")]
147 #[inline]
148 pub unsafe fn add_automatic_hover_effect(
149 tracking_area: cp_tracking_area_t,
150 ) -> cp_hover_effect_t {
151 extern "C-unwind" {
152 fn cp_tracking_area_add_automatic_hover_effect(
153 tracking_area: cp_tracking_area_t,
154 ) -> cp_hover_effect_t;
155 }
156 unsafe { cp_tracking_area_add_automatic_hover_effect(tracking_area) }
157 }
158}
159
160extern "C-unwind" {
161 #[deprecated = "renamed to `cp_tracking_area::render_value`"]
162 pub fn cp_tracking_area_get_render_value(
163 tracking_area: cp_tracking_area_t,
164 ) -> cp_tracking_area_render_value;
165}
166
167extern "C-unwind" {
168 #[deprecated = "renamed to `cp_tracking_area::identifier`"]
169 pub fn cp_tracking_area_get_identifier(
170 tracking_area: cp_tracking_area_t,
171 ) -> cp_tracking_area_identifier;
172}
173
174extern "C-unwind" {
175 #[deprecated = "renamed to `cp_tracking_area::add_automatic_hover_effect`"]
176 pub fn cp_tracking_area_add_automatic_hover_effect(
177 tracking_area: cp_tracking_area_t,
178 ) -> cp_hover_effect_t;
179}