use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
#[cfg(feature = "objc2-metal")]
use objc2_metal::*;
use crate::*;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct cp_layer_renderer_state(pub u32);
impl cp_layer_renderer_state {
#[doc(alias = "cp_layer_renderer_state_paused")]
pub const paused: Self = Self(1);
#[doc(alias = "cp_layer_renderer_state_running")]
pub const running: Self = Self(2);
#[doc(alias = "cp_layer_renderer_state_invalidated")]
pub const invalidated: Self = Self(3);
}
unsafe impl Encode for cp_layer_renderer_state {
const ENCODING: Encoding = u32::ENCODING;
}
unsafe impl RefEncode for cp_layer_renderer_state {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct CP_OBJECT_cp_layer_renderer;
);
extern_conformance!(
unsafe impl NSObjectProtocol for CP_OBJECT_cp_layer_renderer {}
);
impl CP_OBJECT_cp_layer_renderer {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}
pub type cp_layer_renderer_t = CP_OBJECT_cp_layer_renderer;
#[cfg(feature = "layer_renderer_configuration")]
#[inline]
pub unsafe extern "C-unwind" fn cp_layer_renderer_get_configuration(
layer_renderer: &cp_layer_renderer_t,
) -> Retained<cp_layer_renderer_configuration_t> {
extern "C-unwind" {
fn cp_layer_renderer_get_configuration(
layer_renderer: &cp_layer_renderer_t,
) -> *mut cp_layer_renderer_configuration_t;
}
let ret = unsafe { cp_layer_renderer_get_configuration(layer_renderer) };
unsafe { Retained::retain_autoreleased(ret) }
.expect("function was marked as returning non-null, but actually returned NULL")
}
#[cfg(feature = "layer_renderer_properties")]
#[inline]
pub unsafe extern "C-unwind" fn cp_layer_renderer_get_properties(
layer_renderer: &cp_layer_renderer_t,
) -> Retained<cp_layer_renderer_properties_t> {
extern "C-unwind" {
fn cp_layer_renderer_get_properties(
layer_renderer: &cp_layer_renderer_t,
) -> *mut cp_layer_renderer_properties_t;
}
let ret = unsafe { cp_layer_renderer_get_properties(layer_renderer) };
unsafe { Retained::retain_autoreleased(ret) }
.expect("function was marked as returning non-null, but actually returned NULL")
}
#[cfg(feature = "objc2-metal")]
#[inline]
pub unsafe extern "C-unwind" fn cp_layer_renderer_get_device(
layer_renderer: &cp_layer_renderer_t,
) -> Retained<ProtocolObject<dyn MTLDevice>> {
extern "C-unwind" {
fn cp_layer_renderer_get_device(
layer_renderer: &cp_layer_renderer_t,
) -> *mut ProtocolObject<dyn MTLDevice>;
}
let ret = unsafe { cp_layer_renderer_get_device(layer_renderer) };
unsafe { Retained::retain_autoreleased(ret) }
.expect("function was marked as returning non-null, but actually returned NULL")
}
#[cfg(feature = "objc2-metal")]
#[inline]
pub unsafe extern "C-unwind" fn cp_layer_renderer_get_mtl4_command_queue(
layer_renderer: &cp_layer_renderer_t,
) -> Retained<ProtocolObject<dyn MTL4CommandQueue>> {
extern "C-unwind" {
fn cp_layer_renderer_get_mtl4_command_queue(
layer_renderer: &cp_layer_renderer_t,
) -> *mut ProtocolObject<dyn MTL4CommandQueue>;
}
let ret = unsafe { cp_layer_renderer_get_mtl4_command_queue(layer_renderer) };
unsafe { Retained::retain_autoreleased(ret) }
.expect("function was marked as returning non-null, but actually returned NULL")
}
extern "C-unwind" {
pub fn cp_layer_renderer_get_state(
layer_renderer: &cp_layer_renderer_t,
) -> cp_layer_renderer_state;
}
extern "C-unwind" {
pub fn cp_layer_renderer_wait_until_running(layer_renderer: &cp_layer_renderer_t);
}
extern "C-unwind" {
#[cfg(feature = "frame")]
pub fn cp_layer_renderer_query_next_frame(layer_renderer: &cp_layer_renderer_t) -> cp_frame_t;
}
extern "C-unwind" {
pub fn cp_layer_renderer_get_minimum_frame_repeat_count(
layer_renderer: &cp_layer_renderer_t,
) -> c_int;
}
extern "C-unwind" {
pub fn cp_layer_renderer_set_minimum_frame_repeat_count(
layer_renderer: &cp_layer_renderer_t,
frame_repeat_count: c_int,
);
}
extern "C-unwind" {
#[cfg(feature = "cp_types")]
pub fn cp_layer_renderer_get_render_quality(
layer_renderer: &cp_layer_renderer_t,
) -> cp_render_quality_t;
}
extern "C-unwind" {
#[cfg(feature = "cp_types")]
pub fn cp_layer_renderer_set_render_quality(
layer_renderer: &cp_layer_renderer_t,
render_quality: cp_render_quality_t,
);
}