use core::cell::UnsafeCell;
use core::ffi::*;
use core::marker::{PhantomData, PhantomPinned};
use core::ptr::NonNull;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use objc2_core_foundation::*;
use crate::*;
#[doc(alias = "CGShadingRef")]
#[repr(C)]
pub struct CGShading {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
cf_type!(
unsafe impl CGShading {}
);
#[cfg(feature = "objc2")]
cf_objc2_type!(
unsafe impl RefEncode<"CGShading"> for CGShading {}
);
unsafe impl ConcreteType for CGShading {
#[doc(alias = "CGShadingGetTypeID")]
#[inline]
fn type_id() -> CFTypeID {
extern "C-unwind" {
fn CGShadingGetTypeID() -> CFTypeID;
}
unsafe { CGShadingGetTypeID() }
}
}
impl CGShading {
#[doc(alias = "CGShadingCreateAxial")]
#[cfg(all(feature = "CGColorSpace", feature = "CGFunction"))]
#[inline]
pub fn new_axial(
space: Option<&CGColorSpace>,
start: CGPoint,
end: CGPoint,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<CFRetained<CGShading>> {
extern "C-unwind" {
fn CGShadingCreateAxial(
space: Option<&CGColorSpace>,
start: CGPoint,
end: CGPoint,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<NonNull<CGShading>>;
}
let ret =
unsafe { CGShadingCreateAxial(space, start, end, function, extend_start, extend_end) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGShadingCreateAxialWithContentHeadroom")]
#[cfg(all(feature = "CGColorSpace", feature = "CGFunction"))]
#[inline]
pub fn new_axial_with_content_headroom(
headroom: c_float,
space: Option<&CGColorSpace>,
start: CGPoint,
end: CGPoint,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<CFRetained<CGShading>> {
extern "C-unwind" {
fn CGShadingCreateAxialWithContentHeadroom(
headroom: c_float,
space: Option<&CGColorSpace>,
start: CGPoint,
end: CGPoint,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<NonNull<CGShading>>;
}
let ret = unsafe {
CGShadingCreateAxialWithContentHeadroom(
headroom,
space,
start,
end,
function,
extend_start,
extend_end,
)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGShadingCreateRadial")]
#[cfg(all(feature = "CGColorSpace", feature = "CGFunction"))]
#[inline]
pub fn new_radial(
space: Option<&CGColorSpace>,
start: CGPoint,
start_radius: CGFloat,
end: CGPoint,
end_radius: CGFloat,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<CFRetained<CGShading>> {
extern "C-unwind" {
fn CGShadingCreateRadial(
space: Option<&CGColorSpace>,
start: CGPoint,
start_radius: CGFloat,
end: CGPoint,
end_radius: CGFloat,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<NonNull<CGShading>>;
}
let ret = unsafe {
CGShadingCreateRadial(
space,
start,
start_radius,
end,
end_radius,
function,
extend_start,
extend_end,
)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGShadingCreateRadialWithContentHeadroom")]
#[cfg(all(feature = "CGColorSpace", feature = "CGFunction"))]
#[inline]
pub fn new_radial_with_content_headroom(
headroom: c_float,
space: Option<&CGColorSpace>,
start: CGPoint,
start_radius: CGFloat,
end: CGPoint,
end_radius: CGFloat,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<CFRetained<CGShading>> {
extern "C-unwind" {
fn CGShadingCreateRadialWithContentHeadroom(
headroom: c_float,
space: Option<&CGColorSpace>,
start: CGPoint,
start_radius: CGFloat,
end: CGPoint,
end_radius: CGFloat,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<NonNull<CGShading>>;
}
let ret = unsafe {
CGShadingCreateRadialWithContentHeadroom(
headroom,
space,
start,
start_radius,
end,
end_radius,
function,
extend_start,
extend_end,
)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CGShadingGetContentHeadroom")]
#[inline]
pub fn content_headroom(shading: Option<&CGShading>) -> c_float {
extern "C-unwind" {
fn CGShadingGetContentHeadroom(shading: Option<&CGShading>) -> c_float;
}
unsafe { CGShadingGetContentHeadroom(shading) }
}
}
#[cfg(all(feature = "CGColorSpace", feature = "CGFunction"))]
#[deprecated = "renamed to `CGShading::new_axial`"]
#[inline]
pub extern "C-unwind" fn CGShadingCreateAxial(
space: Option<&CGColorSpace>,
start: CGPoint,
end: CGPoint,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<CFRetained<CGShading>> {
extern "C-unwind" {
fn CGShadingCreateAxial(
space: Option<&CGColorSpace>,
start: CGPoint,
end: CGPoint,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<NonNull<CGShading>>;
}
let ret =
unsafe { CGShadingCreateAxial(space, start, end, function, extend_start, extend_end) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[cfg(all(feature = "CGColorSpace", feature = "CGFunction"))]
#[deprecated = "renamed to `CGShading::new_axial_with_content_headroom`"]
#[inline]
pub extern "C-unwind" fn CGShadingCreateAxialWithContentHeadroom(
headroom: c_float,
space: Option<&CGColorSpace>,
start: CGPoint,
end: CGPoint,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<CFRetained<CGShading>> {
extern "C-unwind" {
fn CGShadingCreateAxialWithContentHeadroom(
headroom: c_float,
space: Option<&CGColorSpace>,
start: CGPoint,
end: CGPoint,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<NonNull<CGShading>>;
}
let ret = unsafe {
CGShadingCreateAxialWithContentHeadroom(
headroom,
space,
start,
end,
function,
extend_start,
extend_end,
)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[cfg(all(feature = "CGColorSpace", feature = "CGFunction"))]
#[deprecated = "renamed to `CGShading::new_radial`"]
#[inline]
pub extern "C-unwind" fn CGShadingCreateRadial(
space: Option<&CGColorSpace>,
start: CGPoint,
start_radius: CGFloat,
end: CGPoint,
end_radius: CGFloat,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<CFRetained<CGShading>> {
extern "C-unwind" {
fn CGShadingCreateRadial(
space: Option<&CGColorSpace>,
start: CGPoint,
start_radius: CGFloat,
end: CGPoint,
end_radius: CGFloat,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<NonNull<CGShading>>;
}
let ret = unsafe {
CGShadingCreateRadial(
space,
start,
start_radius,
end,
end_radius,
function,
extend_start,
extend_end,
)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[cfg(all(feature = "CGColorSpace", feature = "CGFunction"))]
#[deprecated = "renamed to `CGShading::new_radial_with_content_headroom`"]
#[inline]
pub extern "C-unwind" fn CGShadingCreateRadialWithContentHeadroom(
headroom: c_float,
space: Option<&CGColorSpace>,
start: CGPoint,
start_radius: CGFloat,
end: CGPoint,
end_radius: CGFloat,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<CFRetained<CGShading>> {
extern "C-unwind" {
fn CGShadingCreateRadialWithContentHeadroom(
headroom: c_float,
space: Option<&CGColorSpace>,
start: CGPoint,
start_radius: CGFloat,
end: CGPoint,
end_radius: CGFloat,
function: Option<&CGFunction>,
extend_start: bool,
extend_end: bool,
) -> Option<NonNull<CGShading>>;
}
let ret = unsafe {
CGShadingCreateRadialWithContentHeadroom(
headroom,
space,
start,
start_radius,
end,
end_radius,
function,
extend_start,
extend_end,
)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `CGShading::content_headroom`"]
#[inline]
pub extern "C-unwind" fn CGShadingGetContentHeadroom(shading: Option<&CGShading>) -> c_float {
extern "C-unwind" {
fn CGShadingGetContentHeadroom(shading: Option<&CGShading>) -> c_float;
}
unsafe { CGShadingGetContentHeadroom(shading) }
}