objc2_scene_kit/generated/
SCNCamera.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
12/// [Apple's documentation](https://developer.apple.com/documentation/scenekit/scncameraprojectiondirection?language=objc)
13// NS_ENUM
14#[repr(transparent)]
15#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
16pub struct SCNCameraProjectionDirection(pub NSInteger);
17impl SCNCameraProjectionDirection {
18    #[doc(alias = "SCNCameraProjectionDirectionVertical")]
19    pub const Vertical: Self = Self(0);
20    #[doc(alias = "SCNCameraProjectionDirectionHorizontal")]
21    pub const Horizontal: Self = Self(1);
22}
23
24unsafe impl Encode for SCNCameraProjectionDirection {
25    const ENCODING: Encoding = NSInteger::ENCODING;
26}
27
28unsafe impl RefEncode for SCNCameraProjectionDirection {
29    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
30}
31
32extern_class!(
33    /// SCNCamera represents a camera that can be attached to a SCNNode.
34    ///
35    /// A node with a camera can be used as a point of view to visualize a 3D scene.
36    ///
37    /// See also [Apple's documentation](https://developer.apple.com/documentation/scenekit/scncamera?language=objc)
38    #[unsafe(super(NSObject))]
39    #[derive(Debug, PartialEq, Eq, Hash)]
40    pub struct SCNCamera;
41);
42
43extern_conformance!(
44    unsafe impl NSCoding for SCNCamera {}
45);
46
47extern_conformance!(
48    unsafe impl NSCopying for SCNCamera {}
49);
50
51unsafe impl CopyingHelper for SCNCamera {
52    type Result = Self;
53}
54
55extern_conformance!(
56    unsafe impl NSObjectProtocol for SCNCamera {}
57);
58
59extern_conformance!(
60    unsafe impl NSSecureCoding for SCNCamera {}
61);
62
63#[cfg(feature = "SCNAnimation")]
64extern_conformance!(
65    unsafe impl SCNAnimatable for SCNCamera {}
66);
67
68#[cfg(feature = "SCNTechnique")]
69extern_conformance!(
70    unsafe impl SCNTechniqueSupport for SCNCamera {}
71);
72
73impl SCNCamera {
74    extern_methods!(
75        /// Creates and returns a camera instance.
76        #[unsafe(method(camera))]
77        #[unsafe(method_family = none)]
78        pub unsafe fn camera() -> Retained<Self>;
79
80        /// Determines the name of the receiver.
81        #[unsafe(method(name))]
82        #[unsafe(method_family = none)]
83        pub unsafe fn name(&self) -> Option<Retained<NSString>>;
84
85        /// Setter for [`name`][Self::name].
86        ///
87        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
88        #[unsafe(method(setName:))]
89        #[unsafe(method_family = none)]
90        pub unsafe fn setName(&self, name: Option<&NSString>);
91
92        #[cfg(feature = "objc2-core-foundation")]
93        /// Determines the receiver's field of view (in degree). Defaults to 60°. Animatable.
94        ///
95        /// The fieldOfView is automatically updated when the sensorHeight or focalLength are set. Setting the fieldOfView will update the focalLength according to the new fieldOfView and the current sensorHeight.
96        #[unsafe(method(fieldOfView))]
97        #[unsafe(method_family = none)]
98        pub unsafe fn fieldOfView(&self) -> CGFloat;
99
100        #[cfg(feature = "objc2-core-foundation")]
101        /// Setter for [`fieldOfView`][Self::fieldOfView].
102        #[unsafe(method(setFieldOfView:))]
103        #[unsafe(method_family = none)]
104        pub unsafe fn setFieldOfView(&self, field_of_view: CGFloat);
105
106        /// Determines whether the fieldOfView (or orthographicScale) is vertical or horizontal. Defaults to vertical.
107        #[unsafe(method(projectionDirection))]
108        #[unsafe(method_family = none)]
109        pub unsafe fn projectionDirection(&self) -> SCNCameraProjectionDirection;
110
111        /// Setter for [`projectionDirection`][Self::projectionDirection].
112        #[unsafe(method(setProjectionDirection:))]
113        #[unsafe(method_family = none)]
114        pub unsafe fn setProjectionDirection(
115            &self,
116            projection_direction: SCNCameraProjectionDirection,
117        );
118
119        #[cfg(feature = "objc2-core-foundation")]
120        /// Determines the receiver's focal length in millimeter. Defaults to 50mm. Animatable.
121        ///
122        /// The focalLength is automatically updated when the sensorHeight or fieldOfView are set. Setting the focalLength will update the fieldOfView according to the new focalLength and the current sensorHeight.
123        #[unsafe(method(focalLength))]
124        #[unsafe(method_family = none)]
125        pub unsafe fn focalLength(&self) -> CGFloat;
126
127        #[cfg(feature = "objc2-core-foundation")]
128        /// Setter for [`focalLength`][Self::focalLength].
129        #[unsafe(method(setFocalLength:))]
130        #[unsafe(method_family = none)]
131        pub unsafe fn setFocalLength(&self, focal_length: CGFloat);
132
133        #[cfg(feature = "objc2-core-foundation")]
134        /// Determines the vertical size of the sensor in millimeter. Defaults to 24mm. Animatable.
135        ///
136        /// Setting the sensorHeight will automatically update the fieldOfView according to the new sensorHeight and the current focalLength.
137        #[unsafe(method(sensorHeight))]
138        #[unsafe(method_family = none)]
139        pub unsafe fn sensorHeight(&self) -> CGFloat;
140
141        #[cfg(feature = "objc2-core-foundation")]
142        /// Setter for [`sensorHeight`][Self::sensorHeight].
143        #[unsafe(method(setSensorHeight:))]
144        #[unsafe(method_family = none)]
145        pub unsafe fn setSensorHeight(&self, sensor_height: CGFloat);
146
147        /// Determines the receiver's near value. Animatable.
148        ///
149        /// The near value determines the minimal distance between the camera and a visible surface. If a surface is closer to the camera than this minimal distance, then the surface is clipped. The near value must be different than zero. Defaults to 1.
150        #[unsafe(method(zNear))]
151        #[unsafe(method_family = none)]
152        pub unsafe fn zNear(&self) -> c_double;
153
154        /// Setter for [`zNear`][Self::zNear].
155        #[unsafe(method(setZNear:))]
156        #[unsafe(method_family = none)]
157        pub unsafe fn setZNear(&self, z_near: c_double);
158
159        /// Determines the receiver's far value. Animatable.
160        ///
161        /// The far value determines the maximal distance between the camera and a visible surface. If a surface is further from the camera than this maximal distance, then the surface is clipped. Defaults to 100.
162        #[unsafe(method(zFar))]
163        #[unsafe(method_family = none)]
164        pub unsafe fn zFar(&self) -> c_double;
165
166        /// Setter for [`zFar`][Self::zFar].
167        #[unsafe(method(setZFar:))]
168        #[unsafe(method_family = none)]
169        pub unsafe fn setZFar(&self, z_far: c_double);
170
171        /// Determines whether the receiver automatically adjusts the zFar value. Defaults to NO.
172        ///
173        /// When set to YES, the near and far planes are automatically set to fit the bounding box of the entire scene at render time.
174        #[unsafe(method(automaticallyAdjustsZRange))]
175        #[unsafe(method_family = none)]
176        pub unsafe fn automaticallyAdjustsZRange(&self) -> bool;
177
178        /// Setter for [`automaticallyAdjustsZRange`][Self::automaticallyAdjustsZRange].
179        #[unsafe(method(setAutomaticallyAdjustsZRange:))]
180        #[unsafe(method_family = none)]
181        pub unsafe fn setAutomaticallyAdjustsZRange(&self, automatically_adjusts_z_range: bool);
182
183        /// Determines whether the receiver uses an orthographic projection or not. Defaults to NO.
184        #[unsafe(method(usesOrthographicProjection))]
185        #[unsafe(method_family = none)]
186        pub unsafe fn usesOrthographicProjection(&self) -> bool;
187
188        /// Setter for [`usesOrthographicProjection`][Self::usesOrthographicProjection].
189        #[unsafe(method(setUsesOrthographicProjection:))]
190        #[unsafe(method_family = none)]
191        pub unsafe fn setUsesOrthographicProjection(&self, uses_orthographic_projection: bool);
192
193        /// Determines the receiver's orthographic scale value. Animatable. Defaults to 1.
194        ///
195        /// This setting determines the size of the camera's visible area. This is only enabled when usesOrthographicProjection is set to YES.
196        #[unsafe(method(orthographicScale))]
197        #[unsafe(method_family = none)]
198        pub unsafe fn orthographicScale(&self) -> c_double;
199
200        /// Setter for [`orthographicScale`][Self::orthographicScale].
201        #[unsafe(method(setOrthographicScale:))]
202        #[unsafe(method_family = none)]
203        pub unsafe fn setOrthographicScale(&self, orthographic_scale: c_double);
204
205        #[cfg(all(feature = "SceneKitTypes", feature = "objc2-quartz-core"))]
206        #[cfg(not(target_os = "watchos"))]
207        /// Determines the projection transform used by the camera to project the world onscreen.
208        #[unsafe(method(projectionTransform))]
209        #[unsafe(method_family = none)]
210        pub unsafe fn projectionTransform(&self) -> SCNMatrix4;
211
212        #[cfg(all(feature = "SceneKitTypes", feature = "objc2-quartz-core"))]
213        #[cfg(not(target_os = "watchos"))]
214        /// Setter for [`projectionTransform`][Self::projectionTransform].
215        #[unsafe(method(setProjectionTransform:))]
216        #[unsafe(method_family = none)]
217        pub unsafe fn setProjectionTransform(&self, projection_transform: SCNMatrix4);
218
219        #[cfg(all(
220            feature = "SceneKitTypes",
221            feature = "objc2-core-foundation",
222            feature = "objc2-quartz-core"
223        ))]
224        #[cfg(not(target_os = "watchos"))]
225        #[unsafe(method(projectionTransformWithViewportSize:))]
226        #[unsafe(method_family = none)]
227        pub unsafe fn projectionTransformWithViewportSize(
228            &self,
229            viewport_size: CGSize,
230        ) -> SCNMatrix4;
231
232        /// Determines if the receiver has depth of field. Defaults to NO.
233        #[unsafe(method(wantsDepthOfField))]
234        #[unsafe(method_family = none)]
235        pub unsafe fn wantsDepthOfField(&self) -> bool;
236
237        /// Setter for [`wantsDepthOfField`][Self::wantsDepthOfField].
238        #[unsafe(method(setWantsDepthOfField:))]
239        #[unsafe(method_family = none)]
240        pub unsafe fn setWantsDepthOfField(&self, wants_depth_of_field: bool);
241
242        #[cfg(feature = "objc2-core-foundation")]
243        /// Determines the receiver's focus distance. Animatable.
244        ///
245        /// Defaults to 2.5
246        #[unsafe(method(focusDistance))]
247        #[unsafe(method_family = none)]
248        pub unsafe fn focusDistance(&self) -> CGFloat;
249
250        #[cfg(feature = "objc2-core-foundation")]
251        /// Setter for [`focusDistance`][Self::focusDistance].
252        #[unsafe(method(setFocusDistance:))]
253        #[unsafe(method_family = none)]
254        pub unsafe fn setFocusDistance(&self, focus_distance: CGFloat);
255
256        /// Determines the receiver's sample count for depth of field effect.
257        ///
258        /// Defaults to 25.
259        #[unsafe(method(focalBlurSampleCount))]
260        #[unsafe(method_family = none)]
261        pub unsafe fn focalBlurSampleCount(&self) -> NSInteger;
262
263        /// Setter for [`focalBlurSampleCount`][Self::focalBlurSampleCount].
264        #[unsafe(method(setFocalBlurSampleCount:))]
265        #[unsafe(method_family = none)]
266        pub unsafe fn setFocalBlurSampleCount(&self, focal_blur_sample_count: NSInteger);
267
268        #[cfg(feature = "objc2-core-foundation")]
269        /// Determines the receiver's fstop. Animatable.
270        ///
271        /// Defaults to 5.6.
272        #[unsafe(method(fStop))]
273        #[unsafe(method_family = none)]
274        pub unsafe fn fStop(&self) -> CGFloat;
275
276        #[cfg(feature = "objc2-core-foundation")]
277        /// Setter for [`fStop`][Self::fStop].
278        #[unsafe(method(setFStop:))]
279        #[unsafe(method_family = none)]
280        pub unsafe fn setFStop(&self, f_stop: CGFloat);
281
282        /// Determines the receiver's blade count of the aperture.
283        ///
284        /// Defaults to 6.
285        #[unsafe(method(apertureBladeCount))]
286        #[unsafe(method_family = none)]
287        pub unsafe fn apertureBladeCount(&self) -> NSInteger;
288
289        /// Setter for [`apertureBladeCount`][Self::apertureBladeCount].
290        #[unsafe(method(setApertureBladeCount:))]
291        #[unsafe(method_family = none)]
292        pub unsafe fn setApertureBladeCount(&self, aperture_blade_count: NSInteger);
293
294        #[cfg(feature = "objc2-core-foundation")]
295        /// Determines the intensity of the motion blur. Animatable. Defaults to 0.
296        ///
297        /// An intensity of zero means no motion blur. The intensity should not exceeed 1.
298        #[unsafe(method(motionBlurIntensity))]
299        #[unsafe(method_family = none)]
300        pub unsafe fn motionBlurIntensity(&self) -> CGFloat;
301
302        #[cfg(feature = "objc2-core-foundation")]
303        /// Setter for [`motionBlurIntensity`][Self::motionBlurIntensity].
304        #[unsafe(method(setMotionBlurIntensity:))]
305        #[unsafe(method_family = none)]
306        pub unsafe fn setMotionBlurIntensity(&self, motion_blur_intensity: CGFloat);
307
308        #[cfg(feature = "objc2-core-foundation")]
309        /// Determines the intensity of the screen space ambient occlusion. Animatable.
310        ///
311        /// defaults to 0.
312        #[unsafe(method(screenSpaceAmbientOcclusionIntensity))]
313        #[unsafe(method_family = none)]
314        pub unsafe fn screenSpaceAmbientOcclusionIntensity(&self) -> CGFloat;
315
316        #[cfg(feature = "objc2-core-foundation")]
317        /// Setter for [`screenSpaceAmbientOcclusionIntensity`][Self::screenSpaceAmbientOcclusionIntensity].
318        #[unsafe(method(setScreenSpaceAmbientOcclusionIntensity:))]
319        #[unsafe(method_family = none)]
320        pub unsafe fn setScreenSpaceAmbientOcclusionIntensity(
321            &self,
322            screen_space_ambient_occlusion_intensity: CGFloat,
323        );
324
325        #[cfg(feature = "objc2-core-foundation")]
326        /// Determines the screen space ambient occlusion radius in scene unit. Animatable.
327        ///
328        /// defaults to 5.
329        #[unsafe(method(screenSpaceAmbientOcclusionRadius))]
330        #[unsafe(method_family = none)]
331        pub unsafe fn screenSpaceAmbientOcclusionRadius(&self) -> CGFloat;
332
333        #[cfg(feature = "objc2-core-foundation")]
334        /// Setter for [`screenSpaceAmbientOcclusionRadius`][Self::screenSpaceAmbientOcclusionRadius].
335        #[unsafe(method(setScreenSpaceAmbientOcclusionRadius:))]
336        #[unsafe(method_family = none)]
337        pub unsafe fn setScreenSpaceAmbientOcclusionRadius(
338            &self,
339            screen_space_ambient_occlusion_radius: CGFloat,
340        );
341
342        #[cfg(feature = "objc2-core-foundation")]
343        /// Determines self occlusion bias in scene unit.
344        ///
345        /// defaults to 0.03.
346        #[unsafe(method(screenSpaceAmbientOcclusionBias))]
347        #[unsafe(method_family = none)]
348        pub unsafe fn screenSpaceAmbientOcclusionBias(&self) -> CGFloat;
349
350        #[cfg(feature = "objc2-core-foundation")]
351        /// Setter for [`screenSpaceAmbientOcclusionBias`][Self::screenSpaceAmbientOcclusionBias].
352        #[unsafe(method(setScreenSpaceAmbientOcclusionBias:))]
353        #[unsafe(method_family = none)]
354        pub unsafe fn setScreenSpaceAmbientOcclusionBias(
355            &self,
356            screen_space_ambient_occlusion_bias: CGFloat,
357        );
358
359        #[cfg(feature = "objc2-core-foundation")]
360        /// Determines the depth blur threshold in scene unit.
361        ///
362        /// defaults to 0.2.
363        #[unsafe(method(screenSpaceAmbientOcclusionDepthThreshold))]
364        #[unsafe(method_family = none)]
365        pub unsafe fn screenSpaceAmbientOcclusionDepthThreshold(&self) -> CGFloat;
366
367        #[cfg(feature = "objc2-core-foundation")]
368        /// Setter for [`screenSpaceAmbientOcclusionDepthThreshold`][Self::screenSpaceAmbientOcclusionDepthThreshold].
369        #[unsafe(method(setScreenSpaceAmbientOcclusionDepthThreshold:))]
370        #[unsafe(method_family = none)]
371        pub unsafe fn setScreenSpaceAmbientOcclusionDepthThreshold(
372            &self,
373            screen_space_ambient_occlusion_depth_threshold: CGFloat,
374        );
375
376        #[cfg(feature = "objc2-core-foundation")]
377        /// Determines the normal blur threshold.
378        ///
379        /// defaults to 0.3.
380        #[unsafe(method(screenSpaceAmbientOcclusionNormalThreshold))]
381        #[unsafe(method_family = none)]
382        pub unsafe fn screenSpaceAmbientOcclusionNormalThreshold(&self) -> CGFloat;
383
384        #[cfg(feature = "objc2-core-foundation")]
385        /// Setter for [`screenSpaceAmbientOcclusionNormalThreshold`][Self::screenSpaceAmbientOcclusionNormalThreshold].
386        #[unsafe(method(setScreenSpaceAmbientOcclusionNormalThreshold:))]
387        #[unsafe(method_family = none)]
388        pub unsafe fn setScreenSpaceAmbientOcclusionNormalThreshold(
389            &self,
390            screen_space_ambient_occlusion_normal_threshold: CGFloat,
391        );
392
393        /// Determines if the receiver has a high dynamic range. Defaults to NO.
394        #[unsafe(method(wantsHDR))]
395        #[unsafe(method_family = none)]
396        pub unsafe fn wantsHDR(&self) -> bool;
397
398        /// Setter for [`wantsHDR`][Self::wantsHDR].
399        #[unsafe(method(setWantsHDR:))]
400        #[unsafe(method_family = none)]
401        pub unsafe fn setWantsHDR(&self, wants_hdr: bool);
402
403        #[cfg(feature = "objc2-core-foundation")]
404        /// Determines the logarithmic exposure biasing, in EV. Defaults to 0.
405        #[unsafe(method(exposureOffset))]
406        #[unsafe(method_family = none)]
407        pub unsafe fn exposureOffset(&self) -> CGFloat;
408
409        #[cfg(feature = "objc2-core-foundation")]
410        /// Setter for [`exposureOffset`][Self::exposureOffset].
411        #[unsafe(method(setExposureOffset:))]
412        #[unsafe(method_family = none)]
413        pub unsafe fn setExposureOffset(&self, exposure_offset: CGFloat);
414
415        #[cfg(feature = "objc2-core-foundation")]
416        /// Determines the average gray level desired in the final image. Defaults to 0.18.
417        #[unsafe(method(averageGray))]
418        #[unsafe(method_family = none)]
419        pub unsafe fn averageGray(&self) -> CGFloat;
420
421        #[cfg(feature = "objc2-core-foundation")]
422        /// Setter for [`averageGray`][Self::averageGray].
423        #[unsafe(method(setAverageGray:))]
424        #[unsafe(method_family = none)]
425        pub unsafe fn setAverageGray(&self, average_gray: CGFloat);
426
427        #[cfg(feature = "objc2-core-foundation")]
428        /// Determines the smallest luminance level that will be mapped to white in the final image. Defaults to 1.
429        #[unsafe(method(whitePoint))]
430        #[unsafe(method_family = none)]
431        pub unsafe fn whitePoint(&self) -> CGFloat;
432
433        #[cfg(feature = "objc2-core-foundation")]
434        /// Setter for [`whitePoint`][Self::whitePoint].
435        #[unsafe(method(setWhitePoint:))]
436        #[unsafe(method_family = none)]
437        pub unsafe fn setWhitePoint(&self, white_point: CGFloat);
438
439        /// Determines if the receiver should simulate an eye and continuously adjust to luminance. Defaults to YES.
440        #[unsafe(method(wantsExposureAdaptation))]
441        #[unsafe(method_family = none)]
442        pub unsafe fn wantsExposureAdaptation(&self) -> bool;
443
444        /// Setter for [`wantsExposureAdaptation`][Self::wantsExposureAdaptation].
445        #[unsafe(method(setWantsExposureAdaptation:))]
446        #[unsafe(method_family = none)]
447        pub unsafe fn setWantsExposureAdaptation(&self, wants_exposure_adaptation: bool);
448
449        #[cfg(feature = "objc2-core-foundation")]
450        /// Determines the exposure adaptation speed when going from bright areas to dark areas. Defaults to 0.4.
451        #[unsafe(method(exposureAdaptationBrighteningSpeedFactor))]
452        #[unsafe(method_family = none)]
453        pub unsafe fn exposureAdaptationBrighteningSpeedFactor(&self) -> CGFloat;
454
455        #[cfg(feature = "objc2-core-foundation")]
456        /// Setter for [`exposureAdaptationBrighteningSpeedFactor`][Self::exposureAdaptationBrighteningSpeedFactor].
457        #[unsafe(method(setExposureAdaptationBrighteningSpeedFactor:))]
458        #[unsafe(method_family = none)]
459        pub unsafe fn setExposureAdaptationBrighteningSpeedFactor(
460            &self,
461            exposure_adaptation_brightening_speed_factor: CGFloat,
462        );
463
464        #[cfg(feature = "objc2-core-foundation")]
465        /// Determines the exposure adaptation speed when going from dark areas to bright areas. Defaults to 0.6.
466        #[unsafe(method(exposureAdaptationDarkeningSpeedFactor))]
467        #[unsafe(method_family = none)]
468        pub unsafe fn exposureAdaptationDarkeningSpeedFactor(&self) -> CGFloat;
469
470        #[cfg(feature = "objc2-core-foundation")]
471        /// Setter for [`exposureAdaptationDarkeningSpeedFactor`][Self::exposureAdaptationDarkeningSpeedFactor].
472        #[unsafe(method(setExposureAdaptationDarkeningSpeedFactor:))]
473        #[unsafe(method_family = none)]
474        pub unsafe fn setExposureAdaptationDarkeningSpeedFactor(
475            &self,
476            exposure_adaptation_darkening_speed_factor: CGFloat,
477        );
478
479        #[cfg(feature = "objc2-core-foundation")]
480        /// Determines the minimum exposure offset of the adaptation, in EV. Defaults to -15.
481        #[unsafe(method(minimumExposure))]
482        #[unsafe(method_family = none)]
483        pub unsafe fn minimumExposure(&self) -> CGFloat;
484
485        #[cfg(feature = "objc2-core-foundation")]
486        /// Setter for [`minimumExposure`][Self::minimumExposure].
487        #[unsafe(method(setMinimumExposure:))]
488        #[unsafe(method_family = none)]
489        pub unsafe fn setMinimumExposure(&self, minimum_exposure: CGFloat);
490
491        #[cfg(feature = "objc2-core-foundation")]
492        /// Determines the maximum exposure offset of the adaptation, in EV. Defaults to -15.
493        #[unsafe(method(maximumExposure))]
494        #[unsafe(method_family = none)]
495        pub unsafe fn maximumExposure(&self) -> CGFloat;
496
497        #[cfg(feature = "objc2-core-foundation")]
498        /// Setter for [`maximumExposure`][Self::maximumExposure].
499        #[unsafe(method(setMaximumExposure:))]
500        #[unsafe(method_family = none)]
501        pub unsafe fn setMaximumExposure(&self, maximum_exposure: CGFloat);
502
503        #[cfg(feature = "objc2-core-foundation")]
504        /// Determines the luminance threshold for the bloom effect. Animatable. Defaults to 1.
505        #[unsafe(method(bloomThreshold))]
506        #[unsafe(method_family = none)]
507        pub unsafe fn bloomThreshold(&self) -> CGFloat;
508
509        #[cfg(feature = "objc2-core-foundation")]
510        /// Setter for [`bloomThreshold`][Self::bloomThreshold].
511        #[unsafe(method(setBloomThreshold:))]
512        #[unsafe(method_family = none)]
513        pub unsafe fn setBloomThreshold(&self, bloom_threshold: CGFloat);
514
515        /// Determines the number of blur iterations. Defaults to 1.
516        #[unsafe(method(bloomIterationCount))]
517        #[unsafe(method_family = none)]
518        pub unsafe fn bloomIterationCount(&self) -> NSInteger;
519
520        /// Setter for [`bloomIterationCount`][Self::bloomIterationCount].
521        #[unsafe(method(setBloomIterationCount:))]
522        #[unsafe(method_family = none)]
523        pub unsafe fn setBloomIterationCount(&self, bloom_iteration_count: NSInteger);
524
525        #[cfg(feature = "objc2-core-foundation")]
526        /// Determines how the bloom iterations are spread. Defaults to 0.
527        #[unsafe(method(bloomIterationSpread))]
528        #[unsafe(method_family = none)]
529        pub unsafe fn bloomIterationSpread(&self) -> CGFloat;
530
531        #[cfg(feature = "objc2-core-foundation")]
532        /// Setter for [`bloomIterationSpread`][Self::bloomIterationSpread].
533        #[unsafe(method(setBloomIterationSpread:))]
534        #[unsafe(method_family = none)]
535        pub unsafe fn setBloomIterationSpread(&self, bloom_iteration_spread: CGFloat);
536
537        #[cfg(feature = "objc2-core-foundation")]
538        /// Determines the intensity of the bloom effect. Animatable. Defaults to 0 (no effect).
539        #[unsafe(method(bloomIntensity))]
540        #[unsafe(method_family = none)]
541        pub unsafe fn bloomIntensity(&self) -> CGFloat;
542
543        #[cfg(feature = "objc2-core-foundation")]
544        /// Setter for [`bloomIntensity`][Self::bloomIntensity].
545        #[unsafe(method(setBloomIntensity:))]
546        #[unsafe(method_family = none)]
547        pub unsafe fn setBloomIntensity(&self, bloom_intensity: CGFloat);
548
549        #[cfg(feature = "objc2-core-foundation")]
550        /// Determines the radius of the bloom effect in points. Animatable. Defaults to 4.
551        #[unsafe(method(bloomBlurRadius))]
552        #[unsafe(method_family = none)]
553        pub unsafe fn bloomBlurRadius(&self) -> CGFloat;
554
555        #[cfg(feature = "objc2-core-foundation")]
556        /// Setter for [`bloomBlurRadius`][Self::bloomBlurRadius].
557        #[unsafe(method(setBloomBlurRadius:))]
558        #[unsafe(method_family = none)]
559        pub unsafe fn setBloomBlurRadius(&self, bloom_blur_radius: CGFloat);
560
561        #[cfg(feature = "objc2-core-foundation")]
562        /// Controls the shape of the vignetting effect. Defaults to 0 (no effect).
563        #[unsafe(method(vignettingPower))]
564        #[unsafe(method_family = none)]
565        pub unsafe fn vignettingPower(&self) -> CGFloat;
566
567        #[cfg(feature = "objc2-core-foundation")]
568        /// Setter for [`vignettingPower`][Self::vignettingPower].
569        #[unsafe(method(setVignettingPower:))]
570        #[unsafe(method_family = none)]
571        pub unsafe fn setVignettingPower(&self, vignetting_power: CGFloat);
572
573        #[cfg(feature = "objc2-core-foundation")]
574        /// Controls the intensity of the vignetting effect. Defaults to 0 (no effect).
575        #[unsafe(method(vignettingIntensity))]
576        #[unsafe(method_family = none)]
577        pub unsafe fn vignettingIntensity(&self) -> CGFloat;
578
579        #[cfg(feature = "objc2-core-foundation")]
580        /// Setter for [`vignettingIntensity`][Self::vignettingIntensity].
581        #[unsafe(method(setVignettingIntensity:))]
582        #[unsafe(method_family = none)]
583        pub unsafe fn setVignettingIntensity(&self, vignetting_intensity: CGFloat);
584
585        #[cfg(feature = "objc2-core-foundation")]
586        /// Controls the strength of the color shift effect. Defaults to 0 (no effect).
587        #[unsafe(method(colorFringeStrength))]
588        #[unsafe(method_family = none)]
589        pub unsafe fn colorFringeStrength(&self) -> CGFloat;
590
591        #[cfg(feature = "objc2-core-foundation")]
592        /// Setter for [`colorFringeStrength`][Self::colorFringeStrength].
593        #[unsafe(method(setColorFringeStrength:))]
594        #[unsafe(method_family = none)]
595        pub unsafe fn setColorFringeStrength(&self, color_fringe_strength: CGFloat);
596
597        #[cfg(feature = "objc2-core-foundation")]
598        /// Controls the intensity of the color shift effect. Defaults to 1.
599        #[unsafe(method(colorFringeIntensity))]
600        #[unsafe(method_family = none)]
601        pub unsafe fn colorFringeIntensity(&self) -> CGFloat;
602
603        #[cfg(feature = "objc2-core-foundation")]
604        /// Setter for [`colorFringeIntensity`][Self::colorFringeIntensity].
605        #[unsafe(method(setColorFringeIntensity:))]
606        #[unsafe(method_family = none)]
607        pub unsafe fn setColorFringeIntensity(&self, color_fringe_intensity: CGFloat);
608
609        #[cfg(feature = "objc2-core-foundation")]
610        /// Controls the overall saturation of the scene. Defaults to 1 (no effect).
611        #[unsafe(method(saturation))]
612        #[unsafe(method_family = none)]
613        pub unsafe fn saturation(&self) -> CGFloat;
614
615        #[cfg(feature = "objc2-core-foundation")]
616        /// Setter for [`saturation`][Self::saturation].
617        #[unsafe(method(setSaturation:))]
618        #[unsafe(method_family = none)]
619        pub unsafe fn setSaturation(&self, saturation: CGFloat);
620
621        #[cfg(feature = "objc2-core-foundation")]
622        /// Controls the overall contrast of the scene. Defaults to 0 (no effect).
623        #[unsafe(method(contrast))]
624        #[unsafe(method_family = none)]
625        pub unsafe fn contrast(&self) -> CGFloat;
626
627        #[cfg(feature = "objc2-core-foundation")]
628        /// Setter for [`contrast`][Self::contrast].
629        #[unsafe(method(setContrast:))]
630        #[unsafe(method_family = none)]
631        pub unsafe fn setContrast(&self, contrast: CGFloat);
632
633        #[cfg(feature = "objc2-core-foundation")]
634        /// Controls the intensity of the grain. Defaults to 0 (no effect).
635        #[unsafe(method(grainIntensity))]
636        #[unsafe(method_family = none)]
637        pub unsafe fn grainIntensity(&self) -> CGFloat;
638
639        #[cfg(feature = "objc2-core-foundation")]
640        /// Setter for [`grainIntensity`][Self::grainIntensity].
641        #[unsafe(method(setGrainIntensity:))]
642        #[unsafe(method_family = none)]
643        pub unsafe fn setGrainIntensity(&self, grain_intensity: CGFloat);
644
645        #[cfg(feature = "objc2-core-foundation")]
646        /// Controls the scale of the grain. Defaults to 1.
647        #[unsafe(method(grainScale))]
648        #[unsafe(method_family = none)]
649        pub unsafe fn grainScale(&self) -> CGFloat;
650
651        #[cfg(feature = "objc2-core-foundation")]
652        /// Setter for [`grainScale`][Self::grainScale].
653        #[unsafe(method(setGrainScale:))]
654        #[unsafe(method_family = none)]
655        pub unsafe fn setGrainScale(&self, grain_scale: CGFloat);
656
657        /// Determines if the grain is colored or not. Defaults to NO.
658        #[unsafe(method(grainIsColored))]
659        #[unsafe(method_family = none)]
660        pub unsafe fn grainIsColored(&self) -> bool;
661
662        /// Setter for [`grainIsColored`][Self::grainIsColored].
663        #[unsafe(method(setGrainIsColored:))]
664        #[unsafe(method_family = none)]
665        pub unsafe fn setGrainIsColored(&self, grain_is_colored: bool);
666
667        #[cfg(feature = "objc2-core-foundation")]
668        /// Controls the overall white balance temperature of the scene. Defaults to 0 (no effect).
669        #[unsafe(method(whiteBalanceTemperature))]
670        #[unsafe(method_family = none)]
671        pub unsafe fn whiteBalanceTemperature(&self) -> CGFloat;
672
673        #[cfg(feature = "objc2-core-foundation")]
674        /// Setter for [`whiteBalanceTemperature`][Self::whiteBalanceTemperature].
675        #[unsafe(method(setWhiteBalanceTemperature:))]
676        #[unsafe(method_family = none)]
677        pub unsafe fn setWhiteBalanceTemperature(&self, white_balance_temperature: CGFloat);
678
679        #[cfg(feature = "objc2-core-foundation")]
680        /// Controls the overall white balance tint of the scene. Defaults to 0 (no effect).
681        #[unsafe(method(whiteBalanceTint))]
682        #[unsafe(method_family = none)]
683        pub unsafe fn whiteBalanceTint(&self) -> CGFloat;
684
685        #[cfg(feature = "objc2-core-foundation")]
686        /// Setter for [`whiteBalanceTint`][Self::whiteBalanceTint].
687        #[unsafe(method(setWhiteBalanceTint:))]
688        #[unsafe(method_family = none)]
689        pub unsafe fn setWhiteBalanceTint(&self, white_balance_tint: CGFloat);
690
691        #[cfg(feature = "SCNMaterialProperty")]
692        /// Specifies a lookup texture to apply color grading. The contents must a 2D image representing `n` slices of a unit color cube texture, arranged in an horizontal row of `n` images. For instance, a color cube of dimension 16x16x16 should be provided as an image of size 256x16.
693        #[unsafe(method(colorGrading))]
694        #[unsafe(method_family = none)]
695        pub unsafe fn colorGrading(&self) -> Retained<SCNMaterialProperty>;
696
697        /// Determines the node categories that are visible from the receiver. Defaults to all bits set.
698        #[unsafe(method(categoryBitMask))]
699        #[unsafe(method_family = none)]
700        pub unsafe fn categoryBitMask(&self) -> NSUInteger;
701
702        /// Setter for [`categoryBitMask`][Self::categoryBitMask].
703        #[unsafe(method(setCategoryBitMask:))]
704        #[unsafe(method_family = none)]
705        pub unsafe fn setCategoryBitMask(&self, category_bit_mask: NSUInteger);
706    );
707}
708
709/// Methods declared on superclass `NSObject`.
710impl SCNCamera {
711    extern_methods!(
712        #[unsafe(method(init))]
713        #[unsafe(method_family = init)]
714        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
715
716        #[unsafe(method(new))]
717        #[unsafe(method_family = new)]
718        pub unsafe fn new() -> Retained<Self>;
719    );
720}