objc2_core_graphics/generated/
CGGradient.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::cell::UnsafeCell;
4use core::ffi::*;
5use core::marker::{PhantomData, PhantomPinned};
6use core::ptr::NonNull;
7#[cfg(feature = "objc2")]
8use objc2::__framework_prelude::*;
9use objc2_core_foundation::*;
10
11use crate::*;
12
13/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cggradient?language=objc)
14#[doc(alias = "CGGradientRef")]
15#[repr(C)]
16pub struct CGGradient {
17    inner: [u8; 0],
18    _p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
19}
20
21cf_type!(
22    unsafe impl CGGradient {}
23);
24#[cfg(feature = "objc2")]
25cf_objc2_type!(
26    unsafe impl RefEncode<"CGGradient"> for CGGradient {}
27);
28
29/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cggradientdrawingoptions?language=objc)
30// NS_OPTIONS
31#[repr(transparent)]
32#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
33pub struct CGGradientDrawingOptions(pub u32);
34bitflags::bitflags! {
35    impl CGGradientDrawingOptions: u32 {
36        #[doc(alias = "kCGGradientDrawsBeforeStartLocation")]
37        const DrawsBeforeStartLocation = 1<<0;
38        #[doc(alias = "kCGGradientDrawsAfterEndLocation")]
39        const DrawsAfterEndLocation = 1<<1;
40    }
41}
42
43#[cfg(feature = "objc2")]
44unsafe impl Encode for CGGradientDrawingOptions {
45    const ENCODING: Encoding = u32::ENCODING;
46}
47
48#[cfg(feature = "objc2")]
49unsafe impl RefEncode for CGGradientDrawingOptions {
50    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
51}
52
53unsafe impl ConcreteType for CGGradient {
54    #[doc(alias = "CGGradientGetTypeID")]
55    #[inline]
56    fn type_id() -> CFTypeID {
57        extern "C-unwind" {
58            fn CGGradientGetTypeID() -> CFTypeID;
59        }
60        unsafe { CGGradientGetTypeID() }
61    }
62}
63
64impl CGGradient {
65    /// # Safety
66    ///
67    /// - `components` must be a valid pointer or null.
68    /// - `locations` must be a valid pointer or null.
69    #[doc(alias = "CGGradientCreateWithColorComponents")]
70    #[cfg(feature = "CGColorSpace")]
71    #[inline]
72    pub unsafe fn with_color_components(
73        space: Option<&CGColorSpace>,
74        components: *const CGFloat,
75        locations: *const CGFloat,
76        count: usize,
77    ) -> Option<CFRetained<CGGradient>> {
78        extern "C-unwind" {
79            fn CGGradientCreateWithColorComponents(
80                space: Option<&CGColorSpace>,
81                components: *const CGFloat,
82                locations: *const CGFloat,
83                count: usize,
84            ) -> Option<NonNull<CGGradient>>;
85        }
86        let ret =
87            unsafe { CGGradientCreateWithColorComponents(space, components, locations, count) };
88        ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
89    }
90
91    /// # Safety
92    ///
93    /// - `components` must be a valid pointer or null.
94    /// - `locations` must be a valid pointer or null.
95    #[doc(alias = "CGGradientCreateWithContentHeadroom")]
96    #[cfg(feature = "CGColorSpace")]
97    #[inline]
98    pub unsafe fn with_content_headroom(
99        headroom: c_float,
100        space: Option<&CGColorSpace>,
101        components: *const CGFloat,
102        locations: *const CGFloat,
103        count: usize,
104    ) -> Option<CFRetained<CGGradient>> {
105        extern "C-unwind" {
106            fn CGGradientCreateWithContentHeadroom(
107                headroom: c_float,
108                space: Option<&CGColorSpace>,
109                components: *const CGFloat,
110                locations: *const CGFloat,
111                count: usize,
112            ) -> Option<NonNull<CGGradient>>;
113        }
114        let ret = unsafe {
115            CGGradientCreateWithContentHeadroom(headroom, space, components, locations, count)
116        };
117        ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
118    }
119
120    /// # Safety
121    ///
122    /// - `colors` generic must be of the correct type.
123    /// - `locations` must be a valid pointer or null.
124    #[doc(alias = "CGGradientCreateWithColors")]
125    #[cfg(feature = "CGColorSpace")]
126    #[inline]
127    pub unsafe fn with_colors(
128        space: Option<&CGColorSpace>,
129        colors: Option<&CFArray>,
130        locations: *const CGFloat,
131    ) -> Option<CFRetained<CGGradient>> {
132        extern "C-unwind" {
133            fn CGGradientCreateWithColors(
134                space: Option<&CGColorSpace>,
135                colors: Option<&CFArray>,
136                locations: *const CGFloat,
137            ) -> Option<NonNull<CGGradient>>;
138        }
139        let ret = unsafe { CGGradientCreateWithColors(space, colors, locations) };
140        ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
141    }
142
143    #[doc(alias = "CGGradientGetContentHeadroom")]
144    #[inline]
145    pub fn content_headroom(gradient: Option<&CGGradient>) -> c_float {
146        extern "C-unwind" {
147            fn CGGradientGetContentHeadroom(gradient: Option<&CGGradient>) -> c_float;
148        }
149        unsafe { CGGradientGetContentHeadroom(gradient) }
150    }
151}
152
153#[cfg(feature = "CGColorSpace")]
154#[deprecated = "renamed to `CGGradient::with_color_components`"]
155#[inline]
156pub unsafe extern "C-unwind" fn CGGradientCreateWithColorComponents(
157    space: Option<&CGColorSpace>,
158    components: *const CGFloat,
159    locations: *const CGFloat,
160    count: usize,
161) -> Option<CFRetained<CGGradient>> {
162    extern "C-unwind" {
163        fn CGGradientCreateWithColorComponents(
164            space: Option<&CGColorSpace>,
165            components: *const CGFloat,
166            locations: *const CGFloat,
167            count: usize,
168        ) -> Option<NonNull<CGGradient>>;
169    }
170    let ret = unsafe { CGGradientCreateWithColorComponents(space, components, locations, count) };
171    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
172}
173
174#[cfg(feature = "CGColorSpace")]
175#[deprecated = "renamed to `CGGradient::with_content_headroom`"]
176#[inline]
177pub unsafe extern "C-unwind" fn CGGradientCreateWithContentHeadroom(
178    headroom: c_float,
179    space: Option<&CGColorSpace>,
180    components: *const CGFloat,
181    locations: *const CGFloat,
182    count: usize,
183) -> Option<CFRetained<CGGradient>> {
184    extern "C-unwind" {
185        fn CGGradientCreateWithContentHeadroom(
186            headroom: c_float,
187            space: Option<&CGColorSpace>,
188            components: *const CGFloat,
189            locations: *const CGFloat,
190            count: usize,
191        ) -> Option<NonNull<CGGradient>>;
192    }
193    let ret = unsafe {
194        CGGradientCreateWithContentHeadroom(headroom, space, components, locations, count)
195    };
196    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
197}
198
199#[cfg(feature = "CGColorSpace")]
200#[deprecated = "renamed to `CGGradient::with_colors`"]
201#[inline]
202pub unsafe extern "C-unwind" fn CGGradientCreateWithColors(
203    space: Option<&CGColorSpace>,
204    colors: Option<&CFArray>,
205    locations: *const CGFloat,
206) -> Option<CFRetained<CGGradient>> {
207    extern "C-unwind" {
208        fn CGGradientCreateWithColors(
209            space: Option<&CGColorSpace>,
210            colors: Option<&CFArray>,
211            locations: *const CGFloat,
212        ) -> Option<NonNull<CGGradient>>;
213    }
214    let ret = unsafe { CGGradientCreateWithColors(space, colors, locations) };
215    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
216}
217
218#[deprecated = "renamed to `CGGradient::content_headroom`"]
219#[inline]
220pub extern "C-unwind" fn CGGradientGetContentHeadroom(gradient: Option<&CGGradient>) -> c_float {
221    extern "C-unwind" {
222        fn CGGradientGetContentHeadroom(gradient: Option<&CGGradient>) -> c_float;
223    }
224    unsafe { CGGradientGetContentHeadroom(gradient) }
225}