#[cfg(feature = "av")]
use crate::av;
use crate::{ar, arc, define_cls, define_obj_type, define_opts, ns, objc};
define_opts!(
#[doc(alias = "ARFrameSemantics")]
pub FrameSemantics(usize)
);
impl FrameSemantics {
pub const NONE: Self = Self(0);
pub const PERSON_SEGMENTATION: Self = Self(1 << 0);
pub const PERSON_SEGMENTATION_WITH_DEPTH: Self = Self((1 << 1) | (1 << 0));
pub const BODY_DETECTION: Self = Self(1 << 2);
pub const SCENE_DEPTH: Self = Self(1 << 3);
pub const SMOOTHED_SCENE_DEPTH: Self = Self(1 << 4);
}
#[doc(alias = "ARWorldAlignment")]
#[derive(Debug, PartialEq, Eq, Copy, Clone)]
#[repr(isize)]
pub enum WorldAlignment {
Gravity,
GravityAndHeading,
Camera,
}
#[doc(alias = "AREnvironmentTexturing")]
#[derive(Debug, PartialEq, Eq, Copy, Clone)]
#[repr(isize)]
pub enum EnvironmentTexturing {
None,
Manual,
Automatic,
}
define_opts!(
#[doc(alias = "ARSceneReconstruction")]
pub SceneReconstruction(usize)
);
impl SceneReconstruction {
pub const NONE: Self = Self(0);
pub const MESH: Self = Self(1 << 0);
pub const MESH_WITH_CLASSIFICATION: Self = Self((1 << 1) | (1 << 0));
}
define_obj_type!(
#[doc(alias = "ARConfiguration")]
pub Cfg(ns::Id)
);
impl Cfg {
define_cls!(AR_CONFIGURATION);
#[objc::msg_send(isSupported)]
pub fn is_supported() -> bool;
#[objc::msg_send(supportedVideoFormats)]
#[objc::available(ios = 12.0)]
pub unsafe fn supported_video_formats_throws() -> arc::R<ns::Array<ar::VideoFormat>>;
#[objc::msg_send(videoFormat)]
#[objc::available(ios = 12.0)]
pub fn video_format(&self) -> arc::R<ar::VideoFormat>;
#[objc::msg_send(setVideoFormat:)]
#[objc::available(ios = 12.0)]
pub fn set_video_format(&mut self, val: &ar::VideoFormat);
#[objc::msg_send(worldAlignment)]
pub fn world_alignment(&self) -> WorldAlignment;
#[objc::msg_send(setWorldAlignment:)]
pub fn set_world_alignment(&mut self, val: WorldAlignment);
#[objc::msg_send(isLightEstimationEnabled)]
pub fn is_light_estimation_enabled(&self) -> bool;
#[objc::msg_send(setLightEstimationEnabled:)]
pub fn set_light_estimation_enabled(&mut self, val: bool);
#[objc::msg_send(providesAudioData)]
pub fn provides_audio_data(&self) -> bool;
#[objc::msg_send(setProvidesAudioData:)]
pub fn set_provides_audio_data(&mut self, val: bool);
#[objc::msg_send(frameSemantics)]
#[objc::available(ios = 13.0)]
pub fn frame_semantics(&self) -> FrameSemantics;
#[objc::msg_send(setFrameSemantics:)]
#[objc::available(ios = 13.0)]
pub fn set_frame_semantics(&mut self, val: FrameSemantics);
#[objc::msg_send(supportsFrameSemantics:)]
#[objc::available(ios = 13.0)]
pub fn supports_frame_semantics(frame_semantics: FrameSemantics) -> bool;
#[cfg(feature = "av")]
#[objc::msg_send(configurableCaptureDeviceForPrimaryCamera)]
#[objc::available(ios = 16.0)]
pub fn configurable_capture_device_for_primary_camera() -> Option<arc::R<av::CaptureDevice>>;
#[objc::msg_send(recommendedVideoFormatFor4KResolution)]
#[objc::available(ios = 16.0)]
pub fn recommended_video_format_for_4k_res() -> Option<arc::R<ar::VideoFormat>>;
#[objc::msg_send(recommendedVideoFormatForHighResolutionFrameCapturing)]
#[objc::available(ios = 16.0)]
pub fn recommended_video_format_for_high_res_frame_capturing() -> Option<arc::R<ar::VideoFormat>>;
#[objc::msg_send(videoHDRAllowed)]
#[objc::available(ios = 16.0)]
pub fn video_hdr_allowed(&self) -> bool;
#[objc::msg_send(setVideoHDRAllowed:)]
#[objc::available(ios = 16.0)]
pub fn set_video_hdr_allowed(&mut self, val: bool);
}
define_obj_type!(
#[doc(alias = "ARWorldTrackingConfiguration")]
pub WorldTrackingCfg(Cfg),
AR_WORLD_TRACKING_CONFIGURATION
);
impl WorldTrackingCfg {
#[objc::msg_send(isSupported)]
pub fn is_supported() -> bool;
#[objc::msg_send(supportedVideoFormats)]
#[objc::available(ios = 12.0)]
pub fn supported_video_formats() -> arc::R<ns::Array<ar::VideoFormat>>;
#[objc::msg_send(supportsFrameSemantics:)]
#[objc::available(ios = 13.0)]
pub fn supports_frame_semantics(frame_semantics: FrameSemantics) -> bool;
#[objc::msg_send(supportsUserFaceTracking)]
#[objc::available(ios = 13.0)]
pub fn supports_user_face_tracking() -> bool;
#[objc::msg_send(planeDetection)]
pub fn plane_detection(&self) -> ar::PlaneDetection;
#[objc::msg_send(setPlaneDetection:)]
pub fn set_plane_detection(&mut self, val: ar::PlaneDetection);
#[objc::msg_send(environmentTexturing)]
#[objc::available(ios = 12.0)]
pub fn environment_texturing(&self) -> EnvironmentTexturing;
#[objc::msg_send(setEnvironmentTexturing:)]
#[objc::available(ios = 12.0)]
pub fn set_environment_texturing(&mut self, val: EnvironmentTexturing);
#[objc::msg_send(wantsHDREnvironmentTextures)]
#[objc::available(ios = 13.0)]
pub fn wants_hdr_environment_textures(&self) -> bool;
#[objc::msg_send(setWantsHDREnvironmentTextures:)]
#[objc::available(ios = 13.0)]
pub fn set_wants_hdr_environment_textures(&mut self, val: bool);
#[objc::msg_send(automaticImageScaleEstimationEnabled)]
#[objc::available(ios = 13.0)]
pub fn automatic_image_scale_estimation_enabled(&self) -> bool;
#[objc::msg_send(setAutomaticImageScaleEstimationEnabled:)]
#[objc::available(ios = 13.0)]
pub fn set_automatic_image_scale_estimation_enabled(&mut self, val: bool);
#[objc::msg_send(maximumNumberOfTrackedImages)]
#[objc::available(ios = 12.0)]
pub fn maximum_number_of_tracked_images(&self) -> ns::Integer;
#[objc::msg_send(setMaximumNumberOfTrackedImages:)]
#[objc::available(ios = 12.0)]
pub fn set_maximum_number_of_tracked_images(&mut self, val: ns::Integer);
#[objc::msg_send(isCollaborationEnabled)]
#[objc::available(ios = 13.0)]
pub fn collaboration_enabled(&self) -> bool;
#[objc::msg_send(setCollaborationEnabled:)]
#[objc::available(ios = 13.0)]
pub fn set_collaboration_enabled(&mut self, val: bool);
#[objc::msg_send(appClipCodeTrackingEnabled)]
#[objc::available(ios = 14.3)]
pub fn app_clip_code_tracking_enabled(&self) -> bool;
#[objc::msg_send(setAppClipCodeTrackingEnabled:)]
#[objc::available(ios = 14.3)]
pub fn set_app_clip_code_tracking_enabled(&mut self, val: bool);
#[objc::msg_send(sceneReconstruction)]
#[objc::available(ios = 14.0)]
pub fn scene_reconstruction(&self) -> SceneReconstruction;
#[objc::msg_send(setSceneReconstruction:)]
#[objc::available(ios = 14.0)]
pub fn set_scene_reconstruction(&mut self, val: SceneReconstruction);
}
unsafe extern "C" {
static AR_CONFIGURATION: &'static objc::Class<Cfg>;
static AR_WORLD_TRACKING_CONFIGURATION: &'static objc::Class<WorldTrackingCfg>;
}