objc2_quartz_core/generated/
CAMetalDisplayLink.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#[cfg(feature = "objc2-core-foundation")]
7use objc2_core_foundation::*;
8use objc2_foundation::*;
9
10use crate::*;
11
12extern_class!(
13    /// [Apple's documentation](https://developer.apple.com/documentation/quartzcore/cametaldisplaylinkupdate?language=objc)
14    #[unsafe(super(NSObject))]
15    #[derive(Debug, PartialEq, Eq, Hash)]
16    pub struct CAMetalDisplayLinkUpdate;
17);
18
19extern_conformance!(
20    unsafe impl NSObjectProtocol for CAMetalDisplayLinkUpdate {}
21);
22
23impl CAMetalDisplayLinkUpdate {
24    extern_methods!(
25        #[cfg(all(feature = "CAMetalLayer", feature = "objc2-metal"))]
26        #[unsafe(method(drawable))]
27        #[unsafe(method_family = none)]
28        pub fn drawable(&self) -> Retained<ProtocolObject<dyn CAMetalDrawable>>;
29
30        #[cfg(feature = "objc2-core-foundation")]
31        #[unsafe(method(targetTimestamp))]
32        #[unsafe(method_family = none)]
33        pub fn targetTimestamp(&self) -> CFTimeInterval;
34
35        #[cfg(feature = "objc2-core-foundation")]
36        #[unsafe(method(targetPresentationTimestamp))]
37        #[unsafe(method_family = none)]
38        pub fn targetPresentationTimestamp(&self) -> CFTimeInterval;
39    );
40}
41
42/// Methods declared on superclass `NSObject`.
43impl CAMetalDisplayLinkUpdate {
44    extern_methods!(
45        #[unsafe(method(init))]
46        #[unsafe(method_family = init)]
47        pub fn init(this: Allocated<Self>) -> Retained<Self>;
48
49        #[unsafe(method(new))]
50        #[unsafe(method_family = new)]
51        pub fn new() -> Retained<Self>;
52    );
53}
54
55impl DefaultRetained for CAMetalDisplayLinkUpdate {
56    #[inline]
57    fn default_retained() -> Retained<Self> {
58        Self::new()
59    }
60}
61
62extern_protocol!(
63    /// [Apple's documentation](https://developer.apple.com/documentation/quartzcore/cametaldisplaylinkdelegate?language=objc)
64    pub unsafe trait CAMetalDisplayLinkDelegate {
65        #[unsafe(method(metalDisplayLink:needsUpdate:))]
66        #[unsafe(method_family = none)]
67        fn metalDisplayLink_needsUpdate(
68            &self,
69            link: &CAMetalDisplayLink,
70            update: &CAMetalDisplayLinkUpdate,
71        );
72    }
73);
74
75extern_class!(
76    /// [Apple's documentation](https://developer.apple.com/documentation/quartzcore/cametaldisplaylink?language=objc)
77    #[unsafe(super(NSObject))]
78    #[derive(Debug, PartialEq, Eq, Hash)]
79    pub struct CAMetalDisplayLink;
80);
81
82extern_conformance!(
83    unsafe impl NSObjectProtocol for CAMetalDisplayLink {}
84);
85
86impl CAMetalDisplayLink {
87    extern_methods!(
88        #[cfg(all(feature = "CALayer", feature = "CAMetalLayer"))]
89        #[unsafe(method(initWithMetalLayer:))]
90        #[unsafe(method_family = init)]
91        pub fn initWithMetalLayer(this: Allocated<Self>, layer: &CAMetalLayer) -> Retained<Self>;
92
93        /// # Safety
94        ///
95        /// `runloop` possibly has additional threading requirements.
96        #[unsafe(method(addToRunLoop:forMode:))]
97        #[unsafe(method_family = none)]
98        pub unsafe fn addToRunLoop_forMode(&self, runloop: &NSRunLoop, mode: &NSRunLoopMode);
99
100        /// # Safety
101        ///
102        /// `runloop` possibly has additional threading requirements.
103        #[unsafe(method(removeFromRunLoop:forMode:))]
104        #[unsafe(method_family = none)]
105        pub unsafe fn removeFromRunLoop_forMode(&self, runloop: &NSRunLoop, mode: &NSRunLoopMode);
106
107        #[unsafe(method(invalidate))]
108        #[unsafe(method_family = none)]
109        pub fn invalidate(&self);
110
111        #[unsafe(method(delegate))]
112        #[unsafe(method_family = none)]
113        pub fn delegate(&self) -> Option<Retained<ProtocolObject<dyn CAMetalDisplayLinkDelegate>>>;
114
115        /// Setter for [`delegate`][Self::delegate].
116        ///
117        /// This is a [weak property][objc2::topics::weak_property].
118        #[unsafe(method(setDelegate:))]
119        #[unsafe(method_family = none)]
120        pub fn setDelegate(
121            &self,
122            delegate: Option<&ProtocolObject<dyn CAMetalDisplayLinkDelegate>>,
123        );
124
125        #[unsafe(method(preferredFrameLatency))]
126        #[unsafe(method_family = none)]
127        pub fn preferredFrameLatency(&self) -> c_float;
128
129        /// Setter for [`preferredFrameLatency`][Self::preferredFrameLatency].
130        #[unsafe(method(setPreferredFrameLatency:))]
131        #[unsafe(method_family = none)]
132        pub fn setPreferredFrameLatency(&self, preferred_frame_latency: c_float);
133
134        #[cfg(feature = "CAFrameRateRange")]
135        #[unsafe(method(preferredFrameRateRange))]
136        #[unsafe(method_family = none)]
137        pub fn preferredFrameRateRange(&self) -> CAFrameRateRange;
138
139        #[cfg(feature = "CAFrameRateRange")]
140        /// Setter for [`preferredFrameRateRange`][Self::preferredFrameRateRange].
141        #[unsafe(method(setPreferredFrameRateRange:))]
142        #[unsafe(method_family = none)]
143        pub fn setPreferredFrameRateRange(&self, preferred_frame_rate_range: CAFrameRateRange);
144
145        #[unsafe(method(isPaused))]
146        #[unsafe(method_family = none)]
147        pub fn isPaused(&self) -> bool;
148
149        /// Setter for [`isPaused`][Self::isPaused].
150        #[unsafe(method(setPaused:))]
151        #[unsafe(method_family = none)]
152        pub fn setPaused(&self, paused: bool);
153    );
154}
155
156/// Methods declared on superclass `NSObject`.
157impl CAMetalDisplayLink {
158    extern_methods!(
159        #[unsafe(method(init))]
160        #[unsafe(method_family = init)]
161        pub fn init(this: Allocated<Self>) -> Retained<Self>;
162
163        #[unsafe(method(new))]
164        #[unsafe(method_family = new)]
165        pub fn new() -> Retained<Self>;
166    );
167}
168
169impl DefaultRetained for CAMetalDisplayLink {
170    #[inline]
171    fn default_retained() -> Retained<Self> {
172        Self::new()
173    }
174}