screencapturekit/stream/configuration/
captured_elements.rs1use super::internal::SCStreamConfiguration;
7#[cfg(feature = "macos_14_0")]
8use crate::error::{SCError, SCResult};
9
10impl SCStreamConfiguration {
11 pub fn set_shows_cursor(&mut self, shows_cursor: bool) -> &mut Self {
23 unsafe {
24 crate::ffi::sc_stream_configuration_set_shows_cursor(self.as_ptr(), shows_cursor);
25 }
26 self
27 }
28
29 #[must_use]
31 pub fn with_shows_cursor(mut self, shows_cursor: bool) -> Self {
32 self.set_shows_cursor(shows_cursor);
33 self
34 }
35
36 pub fn shows_cursor(&self) -> bool {
38 unsafe { crate::ffi::sc_stream_configuration_get_shows_cursor(self.as_ptr()) }
39 }
40
41 #[cfg(feature = "macos_15_0")]
60 #[allow(clippy::missing_errors_doc)]
61 pub fn set_shows_mouse_clicks(&mut self, shows_mouse_clicks: bool) -> SCResult<&mut Self> {
62 let applied = unsafe {
63 crate::ffi::sc_stream_configuration_set_shows_mouse_clicks(
64 self.as_ptr(),
65 shows_mouse_clicks,
66 )
67 };
68 applied.then_some(self).ok_or_else(|| {
69 SCError::feature_not_available("SCStreamConfiguration.showMouseClicks", "15.0")
70 })
71 }
72
73 #[cfg(feature = "macos_15_0")]
75 #[allow(clippy::missing_errors_doc)]
76 pub fn with_shows_mouse_clicks(mut self, shows_mouse_clicks: bool) -> SCResult<Self> {
77 self.set_shows_mouse_clicks(shows_mouse_clicks)?;
78 Ok(self)
79 }
80
81 #[cfg(feature = "macos_15_0")]
83 pub fn shows_mouse_clicks(&self) -> bool {
84 unsafe { crate::ffi::sc_stream_configuration_get_shows_mouse_clicks(self.as_ptr()) }
85 }
86
87 #[cfg(feature = "macos_14_0")]
108 #[allow(clippy::missing_errors_doc)]
109 pub fn set_captures_shadows_only(
110 &mut self,
111 captures_shadows_only: bool,
112 ) -> SCResult<&mut Self> {
113 let applied = unsafe {
114 crate::ffi::sc_stream_configuration_set_captures_shadows_only(
115 self.as_ptr(),
116 captures_shadows_only,
117 )
118 };
119 applied.then_some(self).ok_or_else(|| {
120 SCError::feature_not_available("SCStreamConfiguration.capturesShadowsOnly", "14.0")
121 })
122 }
123
124 #[cfg(feature = "macos_14_0")]
126 #[allow(clippy::missing_errors_doc)]
127 pub fn with_captures_shadows_only(mut self, captures_shadows_only: bool) -> SCResult<Self> {
128 self.set_captures_shadows_only(captures_shadows_only)?;
129 Ok(self)
130 }
131
132 #[cfg(feature = "macos_14_0")]
134 pub fn captures_shadows_only(&self) -> bool {
135 unsafe { crate::ffi::sc_stream_configuration_get_captures_shadows_only(self.as_ptr()) }
136 }
137
138 #[cfg(feature = "macos_14_0")]
146 #[allow(clippy::missing_errors_doc)]
147 pub fn set_ignores_shadows_display(&mut self, ignores_shadows: bool) -> SCResult<&mut Self> {
148 let applied = unsafe {
149 crate::ffi::sc_stream_configuration_set_ignores_shadows_display(
150 self.as_ptr(),
151 ignores_shadows,
152 )
153 };
154 applied.then_some(self).ok_or_else(|| {
155 SCError::feature_not_available("SCStreamConfiguration.ignoreShadowsDisplay", "14.0")
156 })
157 }
158
159 #[cfg(feature = "macos_14_0")]
161 #[allow(clippy::missing_errors_doc)]
162 pub fn with_ignores_shadows_display(mut self, ignores_shadows: bool) -> SCResult<Self> {
163 self.set_ignores_shadows_display(ignores_shadows)?;
164 Ok(self)
165 }
166
167 #[cfg(feature = "macos_14_0")]
169 pub fn ignores_shadows_display(&self) -> bool {
170 unsafe { crate::ffi::sc_stream_configuration_get_ignores_shadows_display(self.as_ptr()) }
171 }
172
173 #[cfg(feature = "macos_14_0")]
181 #[allow(clippy::missing_errors_doc)]
182 pub fn set_ignore_global_clip_display(&mut self, ignore: bool) -> SCResult<&mut Self> {
183 let applied = unsafe {
184 crate::ffi::sc_stream_configuration_set_ignore_global_clip_display(
185 self.as_ptr(),
186 ignore,
187 )
188 };
189 applied.then_some(self).ok_or_else(|| {
190 SCError::feature_not_available("SCStreamConfiguration.ignoreGlobalClipDisplay", "14.0")
191 })
192 }
193
194 #[cfg(feature = "macos_14_0")]
196 #[allow(clippy::missing_errors_doc)]
197 pub fn with_ignore_global_clip_display(mut self, ignore: bool) -> SCResult<Self> {
198 self.set_ignore_global_clip_display(ignore)?;
199 Ok(self)
200 }
201
202 #[cfg(feature = "macos_14_0")]
204 pub fn ignore_global_clip_display(&self) -> bool {
205 unsafe { crate::ffi::sc_stream_configuration_get_ignore_global_clip_display(self.as_ptr()) }
206 }
207
208 #[cfg(feature = "macos_14_0")]
216 #[allow(clippy::missing_errors_doc)]
217 pub fn set_ignore_global_clip_single_window(&mut self, ignore: bool) -> SCResult<&mut Self> {
218 let applied = unsafe {
219 crate::ffi::sc_stream_configuration_set_ignore_global_clip_single_window(
220 self.as_ptr(),
221 ignore,
222 )
223 };
224 applied.then_some(self).ok_or_else(|| {
225 SCError::feature_not_available(
226 "SCStreamConfiguration.ignoreGlobalClipSingleWindow",
227 "14.0",
228 )
229 })
230 }
231
232 #[cfg(feature = "macos_14_0")]
234 #[allow(clippy::missing_errors_doc)]
235 pub fn with_ignore_global_clip_single_window(mut self, ignore: bool) -> SCResult<Self> {
236 self.set_ignore_global_clip_single_window(ignore)?;
237 Ok(self)
238 }
239
240 #[cfg(feature = "macos_14_0")]
242 pub fn ignore_global_clip_single_window(&self) -> bool {
243 unsafe {
244 crate::ffi::sc_stream_configuration_get_ignore_global_clip_single_window(self.as_ptr())
245 }
246 }
247}