1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
#[cfg(feature = "objc2-core-foundation")]
use objc2_core_foundation::*;
#[cfg(feature = "objc2-core-graphics")]
use objc2_core_graphics::*;
use objc2_foundation::*;
use objc2_metal::*;
use crate::*;
extern_class!(
/// The MPSImageConversion filter performs a conversion from source to destination
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/metalperformanceshaders/mpsimageconversion?language=objc)
#[unsafe(super(MPSUnaryImageKernel, MPSKernel, NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(all(feature = "MPSCore", feature = "MPSImageKernel", feature = "MPSKernel"))]
pub struct MPSImageConversion;
);
#[cfg(all(feature = "MPSCore", feature = "MPSImageKernel", feature = "MPSKernel"))]
extern_conformance!(
unsafe impl NSCoding for MPSImageConversion {}
);
#[cfg(all(feature = "MPSCore", feature = "MPSImageKernel", feature = "MPSKernel"))]
extern_conformance!(
unsafe impl NSCopying for MPSImageConversion {}
);
#[cfg(all(feature = "MPSCore", feature = "MPSImageKernel", feature = "MPSKernel"))]
unsafe impl CopyingHelper for MPSImageConversion {
type Result = Self;
}
#[cfg(all(feature = "MPSCore", feature = "MPSImageKernel", feature = "MPSKernel"))]
extern_conformance!(
unsafe impl NSObjectProtocol for MPSImageConversion {}
);
#[cfg(all(feature = "MPSCore", feature = "MPSImageKernel", feature = "MPSKernel"))]
extern_conformance!(
unsafe impl NSSecureCoding for MPSImageConversion {}
);
#[cfg(all(feature = "MPSCore", feature = "MPSImageKernel", feature = "MPSKernel"))]
impl MPSImageConversion {
extern_methods!(
#[cfg(feature = "MPSImageTypes")]
/// Premultiplication description for the source texture
///
/// Most colorspace conversion operations can not work directly on premultiplied data.
/// Use this property to tag premultiplied data so that the source texture can
/// be unpremultiplied prior to application of these transforms.
/// Default: MPSPixelAlpha_AlphaIsOne
#[unsafe(method(sourceAlpha))]
#[unsafe(method_family = none)]
pub unsafe fn sourceAlpha(&self) -> MPSAlphaType;
#[cfg(feature = "MPSImageTypes")]
/// Premultiplication description for the destinationAlpha texture
///
/// Colorspace conversion operations produce non-premultiplied data.
/// Use this property to tag cases where premultiplied results are required.
/// If MPSPixelAlpha_AlphaIsOne is used, the alpha channel will be set to 1.
/// Default: MPSPixelAlpha_AlphaIsOne
#[unsafe(method(destinationAlpha))]
#[unsafe(method_family = none)]
pub unsafe fn destinationAlpha(&self) -> MPSAlphaType;
#[cfg(all(
feature = "MPSImageTypes",
feature = "objc2-core-foundation",
feature = "objc2-core-graphics"
))]
/// Create a converter that can convert texture colorspace, alpha and texture format
///
/// Create a converter that can convert texture colorspace, alpha and MTLPixelFormat.
/// Optimized cases exist for NULL color space converter and no alpha conversion.
///
/// Parameter `device`: The device the filter will run on
///
/// Parameter `srcAlpha`: The alpha encoding for the source texture
///
/// Parameter `destAlpha`: The alpha encoding for the destination texture
///
/// Parameter `backgroundColor`: An array of CGFloats giving the background color to use when flattening an image.
/// The color is in the source colorspace. The length of the array is the number
/// of color channels in the src colorspace. If NULL, use {0}.
///
/// Parameter `conversionInfo`: The colorspace conversion to use. May be NULL, indicating no
/// color space conversions need to be done.
///
///
/// Returns: An initialized MPSImageConversion object.
///
/// # Safety
///
/// `background_color` must be a valid pointer or null.
#[unsafe(method(initWithDevice:srcAlpha:destAlpha:backgroundColor:conversionInfo:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithDevice_srcAlpha_destAlpha_backgroundColor_conversionInfo(
this: Allocated<Self>,
device: &ProtocolObject<dyn MTLDevice>,
src_alpha: MPSAlphaType,
dest_alpha: MPSAlphaType,
background_color: *mut CGFloat,
conversion_info: Option<&CGColorConversionInfo>,
) -> Retained<Self>;
);
}
/// Methods declared on superclass `MPSUnaryImageKernel`.
#[cfg(all(feature = "MPSCore", feature = "MPSImageKernel", feature = "MPSKernel"))]
impl MPSImageConversion {
extern_methods!(
/// Standard init with default properties per filter type
///
/// Parameter `device`: The device that the filter will be used on. May not be NULL.
///
/// Returns: a pointer to the newly initialized object. This will fail, returning
/// nil if the device is not supported. Devices must be
/// MTLFeatureSet_iOS_GPUFamily2_v1 or later.
#[unsafe(method(initWithDevice:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithDevice(
this: Allocated<Self>,
device: &ProtocolObject<dyn MTLDevice>,
) -> Retained<Self>;
/// NSSecureCoding compatability
///
/// While the standard NSSecureCoding/NSCoding method
/// -initWithCoder: should work, since the file can't
/// know which device your data is allocated on, we
/// have to guess and may guess incorrectly. To avoid
/// that problem, use initWithCoder:device instead.
///
/// Parameter `aDecoder`: The NSCoder subclass with your serialized MPSKernel
///
/// Parameter `device`: The MTLDevice on which to make the MPSKernel
///
/// Returns: A new MPSKernel object, or nil if failure.
///
/// # Safety
///
/// `a_decoder` possibly has further requirements.
#[unsafe(method(initWithCoder:device:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithCoder_device(
this: Allocated<Self>,
a_decoder: &NSCoder,
device: &ProtocolObject<dyn MTLDevice>,
) -> Option<Retained<Self>>;
);
}
/// Methods declared on superclass `MPSKernel`.
#[cfg(all(feature = "MPSCore", feature = "MPSImageKernel", feature = "MPSKernel"))]
impl MPSImageConversion {
extern_methods!(
/// Called by NSCoder to decode MPSKernels
///
/// This isn't the right interface to decode a MPSKernel, but
/// it is the one that NSCoder uses. To enable your NSCoder
/// (e.g. NSKeyedUnarchiver) to set which device to use
/// extend the object to adopt the MPSDeviceProvider
/// protocol. Otherwise, the Metal system default device
/// will be used.
///
/// # Safety
///
/// `a_decoder` possibly has further requirements.
#[unsafe(method(initWithCoder:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithCoder(
this: Allocated<Self>,
a_decoder: &NSCoder,
) -> Option<Retained<Self>>;
);
}
/// Methods declared on superclass `NSObject`.
#[cfg(all(feature = "MPSCore", feature = "MPSImageKernel", feature = "MPSKernel"))]
impl MPSImageConversion {
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>;
);
}