objc2_core_graphics/generated/
CGGradient.rs1use 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#[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#[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 #[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 #[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 #[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}