objc2_image_capture_core/generated/
ICScannerFunctionalUnits.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6#[cfg(feature = "objc2-core-foundation")]
7use objc2_core_foundation::*;
8#[cfg(feature = "objc2-core-graphics")]
9use objc2_core_graphics::*;
10use objc2_foundation::*;
11
12use crate::*;
13
14/// Scanner Functional Unit Types
15///
16/// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfunctionalunittype?language=objc)
17// NS_ENUM
18#[repr(transparent)]
19#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
20pub struct ICScannerFunctionalUnitType(pub NSUInteger);
21impl ICScannerFunctionalUnitType {
22    #[doc(alias = "ICScannerFunctionalUnitTypeFlatbed")]
23    pub const Flatbed: Self = Self(0);
24    #[doc(alias = "ICScannerFunctionalUnitTypePositiveTransparency")]
25    pub const PositiveTransparency: Self = Self(1);
26    #[doc(alias = "ICScannerFunctionalUnitTypeNegativeTransparency")]
27    pub const NegativeTransparency: Self = Self(2);
28    #[doc(alias = "ICScannerFunctionalUnitTypeDocumentFeeder")]
29    pub const DocumentFeeder: Self = Self(3);
30}
31
32unsafe impl Encode for ICScannerFunctionalUnitType {
33    const ENCODING: Encoding = NSUInteger::ENCODING;
34}
35
36unsafe impl RefEncode for ICScannerFunctionalUnitType {
37    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
38}
39
40/// Unit of measurement used by the scanner. This corresponds to values used for ICAP_UNITS as defined in the TWAIN Specification.
41///
42/// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannermeasurementunit?language=objc)
43// NS_ENUM
44#[repr(transparent)]
45#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
46pub struct ICScannerMeasurementUnit(pub NSUInteger);
47impl ICScannerMeasurementUnit {
48    #[doc(alias = "ICScannerMeasurementUnitInches")]
49    pub const Inches: Self = Self(0);
50    #[doc(alias = "ICScannerMeasurementUnitCentimeters")]
51    pub const Centimeters: Self = Self(1);
52    #[doc(alias = "ICScannerMeasurementUnitPicas")]
53    pub const Picas: Self = Self(2);
54    #[doc(alias = "ICScannerMeasurementUnitPoints")]
55    pub const Points: Self = Self(3);
56    #[doc(alias = "ICScannerMeasurementUnitTwips")]
57    pub const Twips: Self = Self(4);
58    #[doc(alias = "ICScannerMeasurementUnitPixels")]
59    pub const Pixels: Self = Self(5);
60}
61
62unsafe impl Encode for ICScannerMeasurementUnit {
63    const ENCODING: Encoding = NSUInteger::ENCODING;
64}
65
66unsafe impl RefEncode for ICScannerMeasurementUnit {
67    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
68}
69
70/// Bits per channel in the scanned image.
71///
72/// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerbitdepth?language=objc)
73// NS_ENUM
74#[repr(transparent)]
75#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
76pub struct ICScannerBitDepth(pub NSUInteger);
77impl ICScannerBitDepth {
78    #[doc(alias = "ICScannerBitDepth1Bit")]
79    pub const Depth1Bit: Self = Self(1);
80    #[doc(alias = "ICScannerBitDepth8Bits")]
81    pub const Depth8Bits: Self = Self(8);
82    #[doc(alias = "ICScannerBitDepth16Bits")]
83    pub const Depth16Bits: Self = Self(16);
84}
85
86unsafe impl Encode for ICScannerBitDepth {
87    const ENCODING: Encoding = NSUInteger::ENCODING;
88}
89
90unsafe impl RefEncode for ICScannerBitDepth {
91    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
92}
93
94/// Identifies color data formats. Only relevant for multi-channel data. Corresponds to "ICAP_PLANARCHUNKY" of the TWAIN Specification.
95///
96/// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannercolordataformattype?language=objc)
97// NS_ENUM
98#[repr(transparent)]
99#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
100pub struct ICScannerColorDataFormatType(pub NSUInteger);
101impl ICScannerColorDataFormatType {
102    #[doc(alias = "ICScannerColorDataFormatTypeChunky")]
103    pub const Chunky: Self = Self(0);
104    #[doc(alias = "ICScannerColorDataFormatTypePlanar")]
105    pub const Planar: Self = Self(1);
106}
107
108unsafe impl Encode for ICScannerColorDataFormatType {
109    const ENCODING: Encoding = NSUInteger::ENCODING;
110}
111
112unsafe impl RefEncode for ICScannerColorDataFormatType {
113    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
114}
115
116/// Pixel data types. Corresponds to "ICAP_PIXELTYPE" of the TWAIN Specification.
117///
118/// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerpixeldatatype?language=objc)
119// NS_ENUM
120#[repr(transparent)]
121#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
122pub struct ICScannerPixelDataType(pub NSUInteger);
123impl ICScannerPixelDataType {
124    #[doc(alias = "ICScannerPixelDataTypeBW")]
125    pub const BW: Self = Self(0);
126    #[doc(alias = "ICScannerPixelDataTypeGray")]
127    pub const Gray: Self = Self(1);
128    #[doc(alias = "ICScannerPixelDataTypeRGB")]
129    pub const RGB: Self = Self(2);
130    #[doc(alias = "ICScannerPixelDataTypePalette")]
131    pub const Palette: Self = Self(3);
132    #[doc(alias = "ICScannerPixelDataTypeCMY")]
133    pub const CMY: Self = Self(4);
134    #[doc(alias = "ICScannerPixelDataTypeCMYK")]
135    pub const CMYK: Self = Self(5);
136    #[doc(alias = "ICScannerPixelDataTypeYUV")]
137    pub const YUV: Self = Self(6);
138    #[doc(alias = "ICScannerPixelDataTypeYUVK")]
139    pub const YUVK: Self = Self(7);
140    #[doc(alias = "ICScannerPixelDataTypeCIEXYZ")]
141    pub const CIEXYZ: Self = Self(8);
142}
143
144unsafe impl Encode for ICScannerPixelDataType {
145    const ENCODING: Encoding = NSUInteger::ENCODING;
146}
147
148unsafe impl RefEncode for ICScannerPixelDataType {
149    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
150}
151
152/// Document size types. Corresponds to "ICAP_SUPPORTEDSIZES" used by the Image Catpure scanner modules. Also refer to TWAIN 1.9 Specification, page 9-483.
153///
154/// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerdocumenttype?language=objc)
155// NS_ENUM
156#[repr(transparent)]
157#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
158pub struct ICScannerDocumentType(pub NSUInteger);
159impl ICScannerDocumentType {
160    #[doc(alias = "ICScannerDocumentTypeDefault")]
161    pub const TypeDefault: Self = Self(0);
162    #[doc(alias = "ICScannerDocumentTypeA4")]
163    pub const TypeA4: Self = Self(1);
164    #[doc(alias = "ICScannerDocumentTypeB5")]
165    pub const TypeB5: Self = Self(2);
166    #[doc(alias = "ICScannerDocumentTypeUSLetter")]
167    pub const TypeUSLetter: Self = Self(3);
168    #[doc(alias = "ICScannerDocumentTypeUSLegal")]
169    pub const TypeUSLegal: Self = Self(4);
170    #[doc(alias = "ICScannerDocumentTypeA5")]
171    pub const TypeA5: Self = Self(5);
172    #[doc(alias = "ICScannerDocumentTypeISOB4")]
173    pub const TypeISOB4: Self = Self(6);
174    #[doc(alias = "ICScannerDocumentTypeISOB6")]
175    pub const TypeISOB6: Self = Self(7);
176    #[doc(alias = "ICScannerDocumentTypeUSLedger")]
177    pub const TypeUSLedger: Self = Self(9);
178    #[doc(alias = "ICScannerDocumentTypeUSExecutive")]
179    pub const TypeUSExecutive: Self = Self(10);
180    #[doc(alias = "ICScannerDocumentTypeA3")]
181    pub const TypeA3: Self = Self(11);
182    #[doc(alias = "ICScannerDocumentTypeISOB3")]
183    pub const TypeISOB3: Self = Self(12);
184    #[doc(alias = "ICScannerDocumentTypeA6")]
185    pub const TypeA6: Self = Self(13);
186    #[doc(alias = "ICScannerDocumentTypeC4")]
187    pub const TypeC4: Self = Self(14);
188    #[doc(alias = "ICScannerDocumentTypeC5")]
189    pub const TypeC5: Self = Self(15);
190    #[doc(alias = "ICScannerDocumentTypeC6")]
191    pub const TypeC6: Self = Self(16);
192    #[doc(alias = "ICScannerDocumentType4A0")]
193    pub const Type4A0: Self = Self(17);
194    #[doc(alias = "ICScannerDocumentType2A0")]
195    pub const Type2A0: Self = Self(18);
196    #[doc(alias = "ICScannerDocumentTypeA0")]
197    pub const TypeA0: Self = Self(19);
198    #[doc(alias = "ICScannerDocumentTypeA1")]
199    pub const TypeA1: Self = Self(20);
200    #[doc(alias = "ICScannerDocumentTypeA2")]
201    pub const TypeA2: Self = Self(21);
202    #[doc(alias = "ICScannerDocumentTypeA7")]
203    pub const TypeA7: Self = Self(22);
204    #[doc(alias = "ICScannerDocumentTypeA8")]
205    pub const TypeA8: Self = Self(23);
206    #[doc(alias = "ICScannerDocumentTypeA9")]
207    pub const TypeA9: Self = Self(24);
208    #[doc(alias = "ICScannerDocumentType10")]
209    pub const Type10: Self = Self(25);
210    #[doc(alias = "ICScannerDocumentTypeISOB0")]
211    pub const TypeISOB0: Self = Self(26);
212    #[doc(alias = "ICScannerDocumentTypeISOB1")]
213    pub const TypeISOB1: Self = Self(27);
214    #[doc(alias = "ICScannerDocumentTypeISOB2")]
215    pub const TypeISOB2: Self = Self(28);
216    #[doc(alias = "ICScannerDocumentTypeISOB5")]
217    pub const TypeISOB5: Self = Self(29);
218    #[doc(alias = "ICScannerDocumentTypeISOB7")]
219    pub const TypeISOB7: Self = Self(30);
220    #[doc(alias = "ICScannerDocumentTypeISOB8")]
221    pub const TypeISOB8: Self = Self(31);
222    #[doc(alias = "ICScannerDocumentTypeISOB9")]
223    pub const TypeISOB9: Self = Self(32);
224    #[doc(alias = "ICScannerDocumentTypeISOB10")]
225    pub const TypeISOB10: Self = Self(33);
226    #[doc(alias = "ICScannerDocumentTypeJISB0")]
227    pub const TypeJISB0: Self = Self(34);
228    #[doc(alias = "ICScannerDocumentTypeJISB1")]
229    pub const TypeJISB1: Self = Self(35);
230    #[doc(alias = "ICScannerDocumentTypeJISB2")]
231    pub const TypeJISB2: Self = Self(36);
232    #[doc(alias = "ICScannerDocumentTypeJISB3")]
233    pub const TypeJISB3: Self = Self(37);
234    #[doc(alias = "ICScannerDocumentTypeJISB4")]
235    pub const TypeJISB4: Self = Self(38);
236    #[doc(alias = "ICScannerDocumentTypeJISB6")]
237    pub const TypeJISB6: Self = Self(39);
238    #[doc(alias = "ICScannerDocumentTypeJISB7")]
239    pub const TypeJISB7: Self = Self(40);
240    #[doc(alias = "ICScannerDocumentTypeJISB8")]
241    pub const TypeJISB8: Self = Self(41);
242    #[doc(alias = "ICScannerDocumentTypeJISB9")]
243    pub const TypeJISB9: Self = Self(42);
244    #[doc(alias = "ICScannerDocumentTypeJISB10")]
245    pub const TypeJISB10: Self = Self(43);
246    #[doc(alias = "ICScannerDocumentTypeC0")]
247    pub const TypeC0: Self = Self(44);
248    #[doc(alias = "ICScannerDocumentTypeC1")]
249    pub const TypeC1: Self = Self(45);
250    #[doc(alias = "ICScannerDocumentTypeC2")]
251    pub const TypeC2: Self = Self(46);
252    #[doc(alias = "ICScannerDocumentTypeC3")]
253    pub const TypeC3: Self = Self(47);
254    #[doc(alias = "ICScannerDocumentTypeC7")]
255    pub const TypeC7: Self = Self(48);
256    #[doc(alias = "ICScannerDocumentTypeC8")]
257    pub const TypeC8: Self = Self(49);
258    #[doc(alias = "ICScannerDocumentTypeC9")]
259    pub const TypeC9: Self = Self(50);
260    #[doc(alias = "ICScannerDocumentTypeC10")]
261    pub const TypeC10: Self = Self(51);
262    #[doc(alias = "ICScannerDocumentTypeUSStatement")]
263    pub const TypeUSStatement: Self = Self(52);
264    #[doc(alias = "ICScannerDocumentTypeBusinessCard")]
265    pub const TypeBusinessCard: Self = Self(53);
266    #[doc(alias = "ICScannerDocumentTypeE")]
267    pub const TypeE: Self = Self(60);
268    #[doc(alias = "ICScannerDocumentType3R")]
269    pub const Type3R: Self = Self(61);
270    #[doc(alias = "ICScannerDocumentType4R")]
271    pub const Type4R: Self = Self(62);
272    #[doc(alias = "ICScannerDocumentType5R")]
273    pub const Type5R: Self = Self(63);
274    #[doc(alias = "ICScannerDocumentType6R")]
275    pub const Type6R: Self = Self(64);
276    #[doc(alias = "ICScannerDocumentType8R")]
277    pub const Type8R: Self = Self(65);
278    #[doc(alias = "ICScannerDocumentTypeS8R")]
279    pub const TypeS8R: Self = Self(66);
280    #[doc(alias = "ICScannerDocumentType10R")]
281    pub const Type10R: Self = Self(67);
282    #[doc(alias = "ICScannerDocumentTypeS10R")]
283    pub const TypeS10R: Self = Self(68);
284    #[doc(alias = "ICScannerDocumentType11R")]
285    pub const Type11R: Self = Self(69);
286    #[doc(alias = "ICScannerDocumentType12R")]
287    pub const Type12R: Self = Self(70);
288    #[doc(alias = "ICScannerDocumentTypeS12R")]
289    pub const TypeS12R: Self = Self(71);
290    #[doc(alias = "ICScannerDocumentType110")]
291    pub const Type110: Self = Self(72);
292    #[doc(alias = "ICScannerDocumentTypeAPSH")]
293    pub const TypeAPSH: Self = Self(73);
294    #[doc(alias = "ICScannerDocumentTypeAPSC")]
295    pub const TypeAPSC: Self = Self(74);
296    #[doc(alias = "ICScannerDocumentTypeAPSP")]
297    pub const TypeAPSP: Self = Self(75);
298    #[doc(alias = "ICScannerDocumentType135")]
299    pub const Type135: Self = Self(76);
300    #[doc(alias = "ICScannerDocumentTypeMF")]
301    pub const TypeMF: Self = Self(77);
302    #[doc(alias = "ICScannerDocumentTypeLF")]
303    pub const TypeLF: Self = Self(78);
304}
305
306unsafe impl Encode for ICScannerDocumentType {
307    const ENCODING: Encoding = NSUInteger::ENCODING;
308}
309
310unsafe impl RefEncode for ICScannerDocumentType {
311    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
312}
313
314/// A flag to indicate the scanner functional unit's state
315///
316/// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfunctionalunitstate?language=objc)
317// NS_ENUM
318#[repr(transparent)]
319#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
320pub struct ICScannerFunctionalUnitState(pub NSUInteger);
321impl ICScannerFunctionalUnitState {
322    #[doc(alias = "ICScannerFunctionalUnitStateReady")]
323    pub const Ready: Self = Self(1 << 0);
324    #[doc(alias = "ICScannerFunctionalUnitStateScanInProgress")]
325    pub const ScanInProgress: Self = Self(1 << 1);
326    #[doc(alias = "ICScannerFunctionalUnitStateOverviewScanInProgress")]
327    pub const OverviewScanInProgress: Self = Self(1 << 2);
328}
329
330unsafe impl Encode for ICScannerFunctionalUnitState {
331    const ENCODING: Encoding = NSUInteger::ENCODING;
332}
333
334unsafe impl RefEncode for ICScannerFunctionalUnitState {
335    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
336}
337
338/// Scanner Feature Types
339///
340/// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfeaturetype?language=objc)
341// NS_ENUM
342#[repr(transparent)]
343#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
344pub struct ICScannerFeatureType(pub NSUInteger);
345impl ICScannerFeatureType {
346    #[doc(alias = "ICScannerFeatureTypeEnumeration")]
347    pub const Enumeration: Self = Self(0);
348    #[doc(alias = "ICScannerFeatureTypeRange")]
349    pub const Range: Self = Self(1);
350    #[doc(alias = "ICScannerFeatureTypeBoolean")]
351    pub const Boolean: Self = Self(2);
352    #[doc(alias = "ICScannerFeatureTypeTemplate")]
353    pub const Template: Self = Self(3);
354}
355
356unsafe impl Encode for ICScannerFeatureType {
357    const ENCODING: Encoding = NSUInteger::ENCODING;
358}
359
360unsafe impl RefEncode for ICScannerFeatureType {
361    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
362}
363
364extern_class!(
365    /// ICScannerFeature class is an abstract base class used to describe a scanner feature. ImageCaptureCore defines three concrete subclasses of ICScannerFeature: ICScannerFeatureEnumeration, ICScannerFeatureRange and ICScannerFeatureBoolean.
366    ///
367    /// The scanner functional units may have one or more instances of these classes to allow users to choose scanner-specific settings or operations before performing a scan.
368    ///
369    /// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfeature?language=objc)
370    #[unsafe(super(NSObject))]
371    #[derive(Debug, PartialEq, Eq, Hash)]
372    pub struct ICScannerFeature;
373);
374
375extern_conformance!(
376    unsafe impl NSObjectProtocol for ICScannerFeature {}
377);
378
379impl ICScannerFeature {
380    extern_methods!(
381        /// Scanner feature type.
382        #[unsafe(method(type))]
383        #[unsafe(method_family = none)]
384        pub unsafe fn r#type(&self) -> ICScannerFeatureType;
385
386        /// The internal name of this feature.
387        #[unsafe(method(internalName))]
388        #[unsafe(method_family = none)]
389        pub unsafe fn internalName(&self) -> Option<Retained<NSString>>;
390
391        /// The human readable name of this feature.
392        #[unsafe(method(humanReadableName))]
393        #[unsafe(method_family = none)]
394        pub unsafe fn humanReadableName(&self) -> Option<Retained<NSString>>;
395
396        /// Tooltip text describing the feature.
397        #[unsafe(method(tooltip))]
398        #[unsafe(method_family = none)]
399        pub unsafe fn tooltip(&self) -> Option<Retained<NSString>>;
400    );
401}
402
403/// Methods declared on superclass `NSObject`.
404impl ICScannerFeature {
405    extern_methods!(
406        #[unsafe(method(init))]
407        #[unsafe(method_family = init)]
408        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
409
410        #[unsafe(method(new))]
411        #[unsafe(method_family = new)]
412        pub unsafe fn new() -> Retained<Self>;
413    );
414}
415
416extern_class!(
417    /// ICScannerFeatureEnumeration object is used to represent a feature of a scanner functional unit that can have one of several discrete values.
418    ///
419    /// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfeatureenumeration?language=objc)
420    #[unsafe(super(ICScannerFeature, NSObject))]
421    #[derive(Debug, PartialEq, Eq, Hash)]
422    pub struct ICScannerFeatureEnumeration;
423);
424
425extern_conformance!(
426    unsafe impl NSObjectProtocol for ICScannerFeatureEnumeration {}
427);
428
429impl ICScannerFeatureEnumeration {
430    extern_methods!(
431        /// The current value. The current value can be set to one of the possible values in the "values" property below.
432        ///
433        /// # Safety
434        ///
435        /// This is not retained internally, you must ensure the object is still alive.
436        #[unsafe(method(currentValue))]
437        #[unsafe(method_family = none)]
438        pub unsafe fn currentValue(&self) -> Retained<AnyObject>;
439
440        /// Setter for [`currentValue`][Self::currentValue].
441        ///
442        /// # Safety
443        ///
444        /// - `current_value` should be of the correct type.
445        /// - This is unretained, you must ensure the object is kept alive while in use.
446        #[unsafe(method(setCurrentValue:))]
447        #[unsafe(method_family = none)]
448        pub unsafe fn setCurrentValue(&self, current_value: &AnyObject);
449
450        /// The default value. The default value can be set to one of the possible values in the "values" property below.
451        #[unsafe(method(defaultValue))]
452        #[unsafe(method_family = none)]
453        pub unsafe fn defaultValue(&self) -> Retained<AnyObject>;
454
455        /// An array of possible values. All items in this array must be of same type.
456        #[unsafe(method(values))]
457        #[unsafe(method_family = none)]
458        pub unsafe fn values(&self) -> Retained<NSArray<NSNumber>>;
459
460        /// The human readable menu item labels to be used in a menu to allow the user to select the current value from an array of possible values.
461        #[unsafe(method(menuItemLabels))]
462        #[unsafe(method_family = none)]
463        pub unsafe fn menuItemLabels(&self) -> Retained<NSArray<NSString>>;
464
465        /// Tooltip text associated with the menu items.
466        #[unsafe(method(menuItemLabelsTooltips))]
467        #[unsafe(method_family = none)]
468        pub unsafe fn menuItemLabelsTooltips(&self) -> Retained<NSArray<NSString>>;
469    );
470}
471
472/// Methods declared on superclass `NSObject`.
473impl ICScannerFeatureEnumeration {
474    extern_methods!(
475        #[unsafe(method(init))]
476        #[unsafe(method_family = init)]
477        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
478
479        #[unsafe(method(new))]
480        #[unsafe(method_family = new)]
481        pub unsafe fn new() -> Retained<Self>;
482    );
483}
484
485extern_class!(
486    /// ICScannerFeatureRange object is used to represent a property of a scanner functional unit whose value lies within a range.
487    ///
488    /// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfeaturerange?language=objc)
489    #[unsafe(super(ICScannerFeature, NSObject))]
490    #[derive(Debug, PartialEq, Eq, Hash)]
491    pub struct ICScannerFeatureRange;
492);
493
494extern_conformance!(
495    unsafe impl NSObjectProtocol for ICScannerFeatureRange {}
496);
497
498impl ICScannerFeatureRange {
499    extern_methods!(
500        #[cfg(feature = "objc2-core-foundation")]
501        /// The current value. Attempting to set the current value to a value that is not coincident with a step will result in a value corresponding to the nearest step being assigned to the current value.
502        #[unsafe(method(currentValue))]
503        #[unsafe(method_family = none)]
504        pub unsafe fn currentValue(&self) -> CGFloat;
505
506        #[cfg(feature = "objc2-core-foundation")]
507        /// Setter for [`currentValue`][Self::currentValue].
508        #[unsafe(method(setCurrentValue:))]
509        #[unsafe(method_family = none)]
510        pub unsafe fn setCurrentValue(&self, current_value: CGFloat);
511
512        #[cfg(feature = "objc2-core-foundation")]
513        /// The default value. Attempting to set the default value to a value that is not coincident with a step will result in a value corresponding to the nearest step being assigned to the default value.
514        #[unsafe(method(defaultValue))]
515        #[unsafe(method_family = none)]
516        pub unsafe fn defaultValue(&self) -> CGFloat;
517
518        #[cfg(feature = "objc2-core-foundation")]
519        /// The minimum value.
520        #[unsafe(method(minValue))]
521        #[unsafe(method_family = none)]
522        pub unsafe fn minValue(&self) -> CGFloat;
523
524        #[cfg(feature = "objc2-core-foundation")]
525        /// The maximum value.
526        #[unsafe(method(maxValue))]
527        #[unsafe(method_family = none)]
528        pub unsafe fn maxValue(&self) -> CGFloat;
529
530        #[cfg(feature = "objc2-core-foundation")]
531        /// The step size.
532        #[unsafe(method(stepSize))]
533        #[unsafe(method_family = none)]
534        pub unsafe fn stepSize(&self) -> CGFloat;
535    );
536}
537
538/// Methods declared on superclass `NSObject`.
539impl ICScannerFeatureRange {
540    extern_methods!(
541        #[unsafe(method(init))]
542        #[unsafe(method_family = init)]
543        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
544
545        #[unsafe(method(new))]
546        #[unsafe(method_family = new)]
547        pub unsafe fn new() -> Retained<Self>;
548    );
549}
550
551extern_class!(
552    /// ICScannerFeatureBoolean object is used to represent a property of a scanner functional unit whose value can be YES or NO.
553    ///
554    /// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfeatureboolean?language=objc)
555    #[unsafe(super(ICScannerFeature, NSObject))]
556    #[derive(Debug, PartialEq, Eq, Hash)]
557    pub struct ICScannerFeatureBoolean;
558);
559
560extern_conformance!(
561    unsafe impl NSObjectProtocol for ICScannerFeatureBoolean {}
562);
563
564impl ICScannerFeatureBoolean {
565    extern_methods!(
566        /// The value of this feature.
567        #[unsafe(method(value))]
568        #[unsafe(method_family = none)]
569        pub unsafe fn value(&self) -> bool;
570
571        /// Setter for [`value`][Self::value].
572        #[unsafe(method(setValue:))]
573        #[unsafe(method_family = none)]
574        pub unsafe fn setValue(&self, value: bool);
575    );
576}
577
578/// Methods declared on superclass `NSObject`.
579impl ICScannerFeatureBoolean {
580    extern_methods!(
581        #[unsafe(method(init))]
582        #[unsafe(method_family = init)]
583        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
584
585        #[unsafe(method(new))]
586        #[unsafe(method_family = new)]
587        pub unsafe fn new() -> Retained<Self>;
588    );
589}
590
591extern_class!(
592    /// ICScannerFeatureTemplate object is used to define a group of one or more rectangular scan areas that can be used with a scanner functional unit.
593    ///
594    /// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfeaturetemplate?language=objc)
595    #[unsafe(super(ICScannerFeature, NSObject))]
596    #[derive(Debug, PartialEq, Eq, Hash)]
597    pub struct ICScannerFeatureTemplate;
598);
599
600extern_conformance!(
601    unsafe impl NSObjectProtocol for ICScannerFeatureTemplate {}
602);
603
604impl ICScannerFeatureTemplate {
605    extern_methods!(
606        /// # Safety
607        ///
608        /// The returned generic generic should be of the correct type.
609        #[unsafe(method(targets))]
610        #[unsafe(method_family = none)]
611        pub unsafe fn targets(&self) -> Retained<NSArray<NSMutableArray>>;
612    );
613}
614
615/// Methods declared on superclass `NSObject`.
616impl ICScannerFeatureTemplate {
617    extern_methods!(
618        #[unsafe(method(init))]
619        #[unsafe(method_family = init)]
620        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
621
622        #[unsafe(method(new))]
623        #[unsafe(method_family = new)]
624        pub unsafe fn new() -> Retained<Self>;
625    );
626}
627
628extern_class!(
629    /// ICScannerFunctionalUnit is an abstract class that represents a scanner functiona unit. ImageCaptureCore defines three concrete subclasses of ICScannerFunctionalUnit: ICScannerFunctionalUnitFlatbed, ICScannerFunctionalUnitPositiveTransparency, ICScannerFunctionalUnitNegativeTransparency and ICScannerFunctionalUnitDocumentFeeder. ICScannerDevice creates instances of these concrete subclasses.
630    ///
631    /// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfunctionalunit?language=objc)
632    #[unsafe(super(NSObject))]
633    #[derive(Debug, PartialEq, Eq, Hash)]
634    pub struct ICScannerFunctionalUnit;
635);
636
637extern_conformance!(
638    unsafe impl NSObjectProtocol for ICScannerFunctionalUnit {}
639);
640
641impl ICScannerFunctionalUnit {
642    extern_methods!(
643        /// Functional unit type.
644        #[unsafe(method(type))]
645        #[unsafe(method_family = none)]
646        pub unsafe fn r#type(&self) -> ICScannerFunctionalUnitType;
647
648        /// The pixel data type.
649        #[unsafe(method(pixelDataType))]
650        #[unsafe(method_family = none)]
651        pub unsafe fn pixelDataType(&self) -> ICScannerPixelDataType;
652
653        /// Setter for [`pixelDataType`][Self::pixelDataType].
654        #[unsafe(method(setPixelDataType:))]
655        #[unsafe(method_family = none)]
656        pub unsafe fn setPixelDataType(&self, pixel_data_type: ICScannerPixelDataType);
657
658        /// Supported bit depths. The values in this set are valid values defined by ICScannerBitDepth.
659        #[unsafe(method(supportedBitDepths))]
660        #[unsafe(method_family = none)]
661        pub unsafe fn supportedBitDepths(&self) -> Retained<NSIndexSet>;
662
663        /// The bit depth to use when performing the final scan. This will always be one of the supported bit depths.
664        #[unsafe(method(bitDepth))]
665        #[unsafe(method_family = none)]
666        pub unsafe fn bitDepth(&self) -> ICScannerBitDepth;
667
668        /// Setter for [`bitDepth`][Self::bitDepth].
669        #[unsafe(method(setBitDepth:))]
670        #[unsafe(method_family = none)]
671        pub unsafe fn setBitDepth(&self, bit_depth: ICScannerBitDepth);
672
673        /// Supported measurement units. The values in this set are valid values defined by ICScannerMeasurementUnit.
674        #[unsafe(method(supportedMeasurementUnits))]
675        #[unsafe(method_family = none)]
676        pub unsafe fn supportedMeasurementUnits(&self) -> Retained<NSIndexSet>;
677
678        /// Current measurement unit. This will always be one of the supported measurement units.
679        #[unsafe(method(measurementUnit))]
680        #[unsafe(method_family = none)]
681        pub unsafe fn measurementUnit(&self) -> ICScannerMeasurementUnit;
682
683        /// Setter for [`measurementUnit`][Self::measurementUnit].
684        #[unsafe(method(setMeasurementUnit:))]
685        #[unsafe(method_family = none)]
686        pub unsafe fn setMeasurementUnit(&self, measurement_unit: ICScannerMeasurementUnit);
687
688        /// Supported scan resolutions in DPI.
689        #[unsafe(method(supportedResolutions))]
690        #[unsafe(method_family = none)]
691        pub unsafe fn supportedResolutions(&self) -> Retained<NSIndexSet>;
692
693        /// Preferred scan resolutions in DPI.
694        #[unsafe(method(preferredResolutions))]
695        #[unsafe(method_family = none)]
696        pub unsafe fn preferredResolutions(&self) -> Retained<NSIndexSet>;
697
698        /// Current scan resolution. This will always be one of the supported resolution values.
699        #[unsafe(method(resolution))]
700        #[unsafe(method_family = none)]
701        pub unsafe fn resolution(&self) -> NSUInteger;
702
703        /// Setter for [`resolution`][Self::resolution].
704        #[unsafe(method(setResolution:))]
705        #[unsafe(method_family = none)]
706        pub unsafe fn setResolution(&self, resolution: NSUInteger);
707
708        /// Optical resolution along the X axis.
709        #[unsafe(method(nativeXResolution))]
710        #[unsafe(method_family = none)]
711        pub unsafe fn nativeXResolution(&self) -> NSUInteger;
712
713        /// Optical resolution along the Y axis.
714        #[unsafe(method(nativeYResolution))]
715        #[unsafe(method_family = none)]
716        pub unsafe fn nativeYResolution(&self) -> NSUInteger;
717
718        /// Supported scale factors in percentage.
719        #[unsafe(method(supportedScaleFactors))]
720        #[unsafe(method_family = none)]
721        pub unsafe fn supportedScaleFactors(&self) -> Retained<NSIndexSet>;
722
723        /// Preferred scale factors in percentage.
724        #[unsafe(method(preferredScaleFactors))]
725        #[unsafe(method_family = none)]
726        pub unsafe fn preferredScaleFactors(&self) -> Retained<NSIndexSet>;
727
728        /// Current scale factor. This will always be one of the supported scale factor values.
729        #[unsafe(method(scaleFactor))]
730        #[unsafe(method_family = none)]
731        pub unsafe fn scaleFactor(&self) -> NSUInteger;
732
733        /// Setter for [`scaleFactor`][Self::scaleFactor].
734        #[unsafe(method(setScaleFactor:))]
735        #[unsafe(method_family = none)]
736        pub unsafe fn setScaleFactor(&self, scale_factor: NSUInteger);
737
738        /// An array of objects of type ICScannerFeatureTemplate.
739        #[unsafe(method(templates))]
740        #[unsafe(method_family = none)]
741        pub unsafe fn templates(&self) -> Retained<NSArray<ICScannerFeatureTemplate>>;
742
743        /// An array of objects of type ICScannerFeature.
744        #[unsafe(method(vendorFeatures))]
745        #[unsafe(method_family = none)]
746        pub unsafe fn vendorFeatures(&self) -> Option<Retained<NSArray<ICScannerFeature>>>;
747
748        /// Physical size of the scan area in current measurement unit.
749        #[unsafe(method(physicalSize))]
750        #[unsafe(method_family = none)]
751        pub unsafe fn physicalSize(&self) -> NSSize;
752
753        /// This property along with scanAreaOrientation describes the area to be scanned.
754        #[unsafe(method(scanArea))]
755        #[unsafe(method_family = none)]
756        pub unsafe fn scanArea(&self) -> NSRect;
757
758        /// Setter for [`scanArea`][Self::scanArea].
759        #[unsafe(method(setScanArea:))]
760        #[unsafe(method_family = none)]
761        pub unsafe fn setScanArea(&self, scan_area: NSRect);
762
763        #[cfg(feature = "ImageCaptureConstants")]
764        /// Desired orientation of the scan area. This property along with scanArea describes the area to be scanned.
765        ///
766        /// This property is set to ICEXIFOrientation1 initially. This property is not used by the ICScannerFunctionalUnitDocumentFeeder subclass.
767        #[unsafe(method(scanAreaOrientation))]
768        #[unsafe(method_family = none)]
769        pub unsafe fn scanAreaOrientation(&self) -> ICEXIFOrientationType;
770
771        #[cfg(feature = "ImageCaptureConstants")]
772        /// Setter for [`scanAreaOrientation`][Self::scanAreaOrientation].
773        #[unsafe(method(setScanAreaOrientation:))]
774        #[unsafe(method_family = none)]
775        pub unsafe fn setScanAreaOrientation(&self, scan_area_orientation: ICEXIFOrientationType);
776
777        /// Indicates if this functional unit accepts threshold value to be used when performing a scan in black
778        /// &
779        /// white.
780        #[unsafe(method(acceptsThresholdForBlackAndWhiteScanning))]
781        #[unsafe(method_family = none)]
782        pub unsafe fn acceptsThresholdForBlackAndWhiteScanning(&self) -> bool;
783
784        /// Indicates if this functional unit uses threshold value to be used when performing a scan in black
785        /// &
786        /// white.
787        #[unsafe(method(usesThresholdForBlackAndWhiteScanning))]
788        #[unsafe(method_family = none)]
789        pub unsafe fn usesThresholdForBlackAndWhiteScanning(&self) -> bool;
790
791        /// Setter for [`usesThresholdForBlackAndWhiteScanning`][Self::usesThresholdForBlackAndWhiteScanning].
792        #[unsafe(method(setUsesThresholdForBlackAndWhiteScanning:))]
793        #[unsafe(method_family = none)]
794        pub unsafe fn setUsesThresholdForBlackAndWhiteScanning(
795            &self,
796            uses_threshold_for_black_and_white_scanning: bool,
797        );
798
799        /// Default threshold value used when performing a scan in black
800        /// &
801        /// white. This value is from 0 to 255.
802        #[unsafe(method(defaultThresholdForBlackAndWhiteScanning))]
803        #[unsafe(method_family = none)]
804        pub unsafe fn defaultThresholdForBlackAndWhiteScanning(&self) -> c_uchar;
805
806        /// Threshold value to be used when performing a scan in black
807        /// &
808        /// white. This value should be from 0 to 255.
809        #[unsafe(method(thresholdForBlackAndWhiteScanning))]
810        #[unsafe(method_family = none)]
811        pub unsafe fn thresholdForBlackAndWhiteScanning(&self) -> c_uchar;
812
813        /// Setter for [`thresholdForBlackAndWhiteScanning`][Self::thresholdForBlackAndWhiteScanning].
814        #[unsafe(method(setThresholdForBlackAndWhiteScanning:))]
815        #[unsafe(method_family = none)]
816        pub unsafe fn setThresholdForBlackAndWhiteScanning(
817            &self,
818            threshold_for_black_and_white_scanning: c_uchar,
819        );
820
821        /// Indicates the current state of the functional unit.
822        #[unsafe(method(state))]
823        #[unsafe(method_family = none)]
824        pub unsafe fn state(&self) -> ICScannerFunctionalUnitState;
825
826        /// Indicates if a scan is in progress.
827        #[unsafe(method(scanInProgress))]
828        #[unsafe(method_family = none)]
829        pub unsafe fn scanInProgress(&self) -> bool;
830
831        #[cfg(feature = "objc2-core-foundation")]
832        /// Indicates percentage of scan completed.
833        #[unsafe(method(scanProgressPercentDone))]
834        #[unsafe(method_family = none)]
835        pub unsafe fn scanProgressPercentDone(&self) -> CGFloat;
836
837        /// Indicates if this functional unit can perfrom an overview scan. Not all functional units can perform an overview scan. For example, a document feeder or a sheet feeder unit cannot perform an overview scan.
838        #[unsafe(method(canPerformOverviewScan))]
839        #[unsafe(method_family = none)]
840        pub unsafe fn canPerformOverviewScan(&self) -> bool;
841
842        /// Indicates if an overview scan is in progress.
843        #[unsafe(method(overviewScanInProgress))]
844        #[unsafe(method_family = none)]
845        pub unsafe fn overviewScanInProgress(&self) -> bool;
846
847        #[cfg(feature = "objc2-core-graphics")]
848        /// Overview scan image. This property will be NULL for functional units that do not support overview scans.
849        #[unsafe(method(overviewImage))]
850        #[unsafe(method_family = none)]
851        pub unsafe fn overviewImage(&self) -> Option<Retained<CGImage>>;
852
853        /// Overview image resolution. Value assigned to this will be contrained by resolutions allowed by the device.
854        #[unsafe(method(overviewResolution))]
855        #[unsafe(method_family = none)]
856        pub unsafe fn overviewResolution(&self) -> NSUInteger;
857
858        /// Setter for [`overviewResolution`][Self::overviewResolution].
859        #[unsafe(method(setOverviewResolution:))]
860        #[unsafe(method_family = none)]
861        pub unsafe fn setOverviewResolution(&self, overview_resolution: NSUInteger);
862    );
863}
864
865/// Methods declared on superclass `NSObject`.
866impl ICScannerFunctionalUnit {
867    extern_methods!(
868        #[unsafe(method(init))]
869        #[unsafe(method_family = init)]
870        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
871
872        #[unsafe(method(new))]
873        #[unsafe(method_family = new)]
874        pub unsafe fn new() -> Retained<Self>;
875    );
876}
877
878extern_class!(
879    /// ICScannerFunctionalUnitFlatbed is a concrete subclass of ICScannerFunctionalUnit class. ICScannerDevice creates instances of this class.
880    ///
881    /// This represents the flatbed  unit on the scanner.
882    ///
883    /// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfunctionalunitflatbed?language=objc)
884    #[unsafe(super(ICScannerFunctionalUnit, NSObject))]
885    #[derive(Debug, PartialEq, Eq, Hash)]
886    pub struct ICScannerFunctionalUnitFlatbed;
887);
888
889extern_conformance!(
890    unsafe impl NSObjectProtocol for ICScannerFunctionalUnitFlatbed {}
891);
892
893impl ICScannerFunctionalUnitFlatbed {
894    extern_methods!(
895        /// Supported document types. The values in this set are valid values defined by ICScannerDocumentType.
896        #[unsafe(method(supportedDocumentTypes))]
897        #[unsafe(method_family = none)]
898        pub unsafe fn supportedDocumentTypes(&self) -> Retained<NSIndexSet>;
899
900        /// Current document type. This will always be one of the supported document types.
901        #[unsafe(method(documentType))]
902        #[unsafe(method_family = none)]
903        pub unsafe fn documentType(&self) -> ICScannerDocumentType;
904
905        /// Setter for [`documentType`][Self::documentType].
906        #[unsafe(method(setDocumentType:))]
907        #[unsafe(method_family = none)]
908        pub unsafe fn setDocumentType(&self, document_type: ICScannerDocumentType);
909
910        /// Document size of the current document type expressed in current measurement unit.
911        #[unsafe(method(documentSize))]
912        #[unsafe(method_family = none)]
913        pub unsafe fn documentSize(&self) -> NSSize;
914    );
915}
916
917/// Methods declared on superclass `NSObject`.
918impl ICScannerFunctionalUnitFlatbed {
919    extern_methods!(
920        #[unsafe(method(init))]
921        #[unsafe(method_family = init)]
922        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
923
924        #[unsafe(method(new))]
925        #[unsafe(method_family = new)]
926        pub unsafe fn new() -> Retained<Self>;
927    );
928}
929
930extern_class!(
931    /// ICScannerFunctionalUnitPositiveTransparency is a concrete subclass of ICScannerFunctionalUnit class. ICScannerDevice creates instances of this class.
932    ///
933    /// This represents the transparency unit on the scanner for scanning postives
934    ///
935    /// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfunctionalunitpositivetransparency?language=objc)
936    #[unsafe(super(ICScannerFunctionalUnit, NSObject))]
937    #[derive(Debug, PartialEq, Eq, Hash)]
938    pub struct ICScannerFunctionalUnitPositiveTransparency;
939);
940
941extern_conformance!(
942    unsafe impl NSObjectProtocol for ICScannerFunctionalUnitPositiveTransparency {}
943);
944
945impl ICScannerFunctionalUnitPositiveTransparency {
946    extern_methods!(
947        /// Supported document types. The values in this set are valid values defined by ICScannerDocumentType.
948        #[unsafe(method(supportedDocumentTypes))]
949        #[unsafe(method_family = none)]
950        pub unsafe fn supportedDocumentTypes(&self) -> Retained<NSIndexSet>;
951
952        /// Current document type. This will always be one of the supported document types.
953        #[unsafe(method(documentType))]
954        #[unsafe(method_family = none)]
955        pub unsafe fn documentType(&self) -> ICScannerDocumentType;
956
957        /// Setter for [`documentType`][Self::documentType].
958        #[unsafe(method(setDocumentType:))]
959        #[unsafe(method_family = none)]
960        pub unsafe fn setDocumentType(&self, document_type: ICScannerDocumentType);
961
962        /// Document size of the current document type expressed in current measurement unit.
963        #[unsafe(method(documentSize))]
964        #[unsafe(method_family = none)]
965        pub unsafe fn documentSize(&self) -> NSSize;
966    );
967}
968
969/// Methods declared on superclass `NSObject`.
970impl ICScannerFunctionalUnitPositiveTransparency {
971    extern_methods!(
972        #[unsafe(method(init))]
973        #[unsafe(method_family = init)]
974        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
975
976        #[unsafe(method(new))]
977        #[unsafe(method_family = new)]
978        pub unsafe fn new() -> Retained<Self>;
979    );
980}
981
982extern_class!(
983    /// ICScannerFunctionalUnitNegativeTransparency is a concrete subclass of ICScannerFunctionalUnit class. ICScannerDevice creates instances of this class.
984    ///
985    /// This represents the transparency unit on the scanner for scanning negatives.
986    ///
987    /// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfunctionalunitnegativetransparency?language=objc)
988    #[unsafe(super(ICScannerFunctionalUnit, NSObject))]
989    #[derive(Debug, PartialEq, Eq, Hash)]
990    pub struct ICScannerFunctionalUnitNegativeTransparency;
991);
992
993extern_conformance!(
994    unsafe impl NSObjectProtocol for ICScannerFunctionalUnitNegativeTransparency {}
995);
996
997impl ICScannerFunctionalUnitNegativeTransparency {
998    extern_methods!(
999        /// Supported document types. The values in this set are valid values defined by ICScannerDocumentType.
1000        #[unsafe(method(supportedDocumentTypes))]
1001        #[unsafe(method_family = none)]
1002        pub unsafe fn supportedDocumentTypes(&self) -> Retained<NSIndexSet>;
1003
1004        /// Current document type. This will always be one of the supported document types.
1005        #[unsafe(method(documentType))]
1006        #[unsafe(method_family = none)]
1007        pub unsafe fn documentType(&self) -> ICScannerDocumentType;
1008
1009        /// Setter for [`documentType`][Self::documentType].
1010        #[unsafe(method(setDocumentType:))]
1011        #[unsafe(method_family = none)]
1012        pub unsafe fn setDocumentType(&self, document_type: ICScannerDocumentType);
1013
1014        /// Document size of the current document type expressed in current measurement unit.
1015        #[unsafe(method(documentSize))]
1016        #[unsafe(method_family = none)]
1017        pub unsafe fn documentSize(&self) -> NSSize;
1018    );
1019}
1020
1021/// Methods declared on superclass `NSObject`.
1022impl ICScannerFunctionalUnitNegativeTransparency {
1023    extern_methods!(
1024        #[unsafe(method(init))]
1025        #[unsafe(method_family = init)]
1026        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
1027
1028        #[unsafe(method(new))]
1029        #[unsafe(method_family = new)]
1030        pub unsafe fn new() -> Retained<Self>;
1031    );
1032}
1033
1034extern_class!(
1035    /// ICScannerFunctionalUnitDocumentFeeder is a concrete subclass of ICScannerFunctionalUnit class. ICScannerDevice creates instances of this class.
1036    ///
1037    /// This represents the document feeder unit on the scanner.
1038    ///
1039    /// See also [Apple's documentation](https://developer.apple.com/documentation/imagecapturecore/icscannerfunctionalunitdocumentfeeder?language=objc)
1040    #[unsafe(super(ICScannerFunctionalUnit, NSObject))]
1041    #[derive(Debug, PartialEq, Eq, Hash)]
1042    pub struct ICScannerFunctionalUnitDocumentFeeder;
1043);
1044
1045extern_conformance!(
1046    unsafe impl NSObjectProtocol for ICScannerFunctionalUnitDocumentFeeder {}
1047);
1048
1049impl ICScannerFunctionalUnitDocumentFeeder {
1050    extern_methods!(
1051        /// Supported document types. The values in this set are valid values defined by ICScannerDocumentType.
1052        #[unsafe(method(supportedDocumentTypes))]
1053        #[unsafe(method_family = none)]
1054        pub unsafe fn supportedDocumentTypes(&self) -> Retained<NSIndexSet>;
1055
1056        /// Current document type. This will always be one of the supported document types.
1057        #[unsafe(method(documentType))]
1058        #[unsafe(method_family = none)]
1059        pub unsafe fn documentType(&self) -> ICScannerDocumentType;
1060
1061        /// Setter for [`documentType`][Self::documentType].
1062        #[unsafe(method(setDocumentType:))]
1063        #[unsafe(method_family = none)]
1064        pub unsafe fn setDocumentType(&self, document_type: ICScannerDocumentType);
1065
1066        /// Document size of the current document type expressed in current measurement unit.
1067        #[unsafe(method(documentSize))]
1068        #[unsafe(method_family = none)]
1069        pub unsafe fn documentSize(&self) -> NSSize;
1070
1071        /// Indicates whether duplex scanning is supported.
1072        #[unsafe(method(supportsDuplexScanning))]
1073        #[unsafe(method_family = none)]
1074        pub unsafe fn supportsDuplexScanning(&self) -> bool;
1075
1076        /// Indicates whether duplex scanning is enabled.
1077        #[unsafe(method(duplexScanningEnabled))]
1078        #[unsafe(method_family = none)]
1079        pub unsafe fn duplexScanningEnabled(&self) -> bool;
1080
1081        /// Setter for [`duplexScanningEnabled`][Self::duplexScanningEnabled].
1082        #[unsafe(method(setDuplexScanningEnabled:))]
1083        #[unsafe(method_family = none)]
1084        pub unsafe fn setDuplexScanningEnabled(&self, duplex_scanning_enabled: bool);
1085
1086        /// Indicates whether the feeder has documents to scan.
1087        ///
1088        /// This value will change when the document is loaded or removed from the feeder, if the scanner module has the capability to detect this state.
1089        #[unsafe(method(documentLoaded))]
1090        #[unsafe(method_family = none)]
1091        pub unsafe fn documentLoaded(&self) -> bool;
1092
1093        #[cfg(feature = "ImageCaptureConstants")]
1094        /// Desired orientation of the odd pages of the scanned document.
1095        ///
1096        /// This property is set to ICEXIFOrientation1 initially.
1097        #[unsafe(method(oddPageOrientation))]
1098        #[unsafe(method_family = none)]
1099        pub unsafe fn oddPageOrientation(&self) -> ICEXIFOrientationType;
1100
1101        #[cfg(feature = "ImageCaptureConstants")]
1102        /// Setter for [`oddPageOrientation`][Self::oddPageOrientation].
1103        #[unsafe(method(setOddPageOrientation:))]
1104        #[unsafe(method_family = none)]
1105        pub unsafe fn setOddPageOrientation(&self, odd_page_orientation: ICEXIFOrientationType);
1106
1107        #[cfg(feature = "ImageCaptureConstants")]
1108        /// Desired orientation of the even pages of the scanned document.
1109        ///
1110        /// This property is set to ICEXIFOrientation1 initially.
1111        #[unsafe(method(evenPageOrientation))]
1112        #[unsafe(method_family = none)]
1113        pub unsafe fn evenPageOrientation(&self) -> ICEXIFOrientationType;
1114
1115        #[cfg(feature = "ImageCaptureConstants")]
1116        /// Setter for [`evenPageOrientation`][Self::evenPageOrientation].
1117        #[unsafe(method(setEvenPageOrientation:))]
1118        #[unsafe(method_family = none)]
1119        pub unsafe fn setEvenPageOrientation(&self, even_page_orientation: ICEXIFOrientationType);
1120
1121        /// Indicates whether the document feeder reads pages from back to front.
1122        #[unsafe(method(reverseFeederPageOrder))]
1123        #[unsafe(method_family = none)]
1124        pub unsafe fn reverseFeederPageOrder(&self) -> bool;
1125    );
1126}
1127
1128/// Methods declared on superclass `NSObject`.
1129impl ICScannerFunctionalUnitDocumentFeeder {
1130    extern_methods!(
1131        #[unsafe(method(init))]
1132        #[unsafe(method_family = init)]
1133        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
1134
1135        #[unsafe(method(new))]
1136        #[unsafe(method_family = new)]
1137        pub unsafe fn new() -> Retained<Self>;
1138    );
1139}