objc2_application_services/generated/PrintCore/
PMCore.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_core_foundation::*;
6#[cfg(feature = "objc2-core-graphics")]
7use objc2_core_graphics::*;
8
9use crate::*;
10
11extern "C-unwind" {
12    /// # Safety
13    ///
14    /// `object` must be a valid pointer or null.
15    #[cfg(feature = "PMDefinitions")]
16    pub fn PMRetain(object: PMObject) -> OSStatus;
17}
18
19extern "C-unwind" {
20    /// # Safety
21    ///
22    /// `object` must be a valid pointer or null.
23    #[cfg(feature = "PMDefinitions")]
24    pub fn PMRelease(object: PMObject) -> OSStatus;
25}
26
27extern "C-unwind" {
28    /// # Safety
29    ///
30    /// `print_session` must be a valid pointer.
31    #[cfg(feature = "PMDefinitions")]
32    pub fn PMCreateSession(print_session: NonNull<PMPrintSession>) -> OSStatus;
33}
34
35extern "C-unwind" {
36    /// # Safety
37    ///
38    /// `print_session` must be a valid pointer.
39    #[cfg(feature = "PMDefinitions")]
40    pub fn PMSessionError(print_session: PMPrintSession) -> OSStatus;
41}
42
43extern "C-unwind" {
44    /// # Safety
45    ///
46    /// `print_session` must be a valid pointer.
47    #[cfg(feature = "PMDefinitions")]
48    pub fn PMSessionSetError(print_session: PMPrintSession, print_error: OSStatus) -> OSStatus;
49}
50
51extern "C-unwind" {
52    /// # Safety
53    ///
54    /// - `print_session` must be a valid pointer.
55    /// - `print_settings` must be a valid pointer.
56    /// - `page_format` must be a valid pointer.
57    #[cfg(feature = "PMDefinitions")]
58    pub fn PMSessionBeginCGDocumentNoDialog(
59        print_session: PMPrintSession,
60        print_settings: PMPrintSettings,
61        page_format: PMPageFormat,
62    ) -> OSStatus;
63}
64
65extern "C-unwind" {
66    /// # Safety
67    ///
68    /// `print_session` must be a valid pointer.
69    #[cfg(feature = "PMDefinitions")]
70    pub fn PMSessionEndDocumentNoDialog(print_session: PMPrintSession) -> OSStatus;
71}
72
73extern "C-unwind" {
74    /// # Safety
75    ///
76    /// - `print_session` must be a valid pointer.
77    /// - `page_format` must be a valid pointer or null.
78    /// - `page_frame` must be a valid pointer or null.
79    #[cfg(feature = "PMDefinitions")]
80    pub fn PMSessionBeginPageNoDialog(
81        print_session: PMPrintSession,
82        page_format: PMPageFormat,
83        page_frame: *const PMRect,
84    ) -> OSStatus;
85}
86
87extern "C-unwind" {
88    /// # Safety
89    ///
90    /// `print_session` must be a valid pointer.
91    #[cfg(feature = "PMDefinitions")]
92    pub fn PMSessionEndPageNoDialog(print_session: PMPrintSession) -> OSStatus;
93}
94
95extern "C-unwind" {
96    /// # Safety
97    ///
98    /// - `print_session` must be a valid pointer.
99    /// - `context` must be a valid pointer.
100    #[cfg(all(feature = "PMDefinitions", feature = "objc2-core-graphics"))]
101    pub fn PMSessionGetCGGraphicsContext(
102        print_session: PMPrintSession,
103        context: NonNull<*mut CGContext>,
104    ) -> OSStatus;
105}
106
107extern "C-unwind" {
108    /// # Safety
109    ///
110    /// - `print_session` must be a valid pointer.
111    /// - `print_settings` must be a valid pointer.
112    /// - `dest_type_p` must be a valid pointer.
113    #[cfg(feature = "PMDefinitions")]
114    pub fn PMSessionGetDestinationType(
115        print_session: PMPrintSession,
116        print_settings: PMPrintSettings,
117        dest_type_p: NonNull<PMDestinationType>,
118    ) -> OSStatus;
119}
120
121extern "C-unwind" {
122    /// # Safety
123    ///
124    /// - `print_session` must be a valid pointer.
125    /// - `print_settings` must be a valid pointer.
126    /// - `dest_format_p` must be a valid pointer.
127    #[cfg(feature = "PMDefinitions")]
128    pub fn PMSessionCopyDestinationFormat(
129        print_session: PMPrintSession,
130        print_settings: PMPrintSettings,
131        dest_format_p: NonNull<*const CFString>,
132    ) -> OSStatus;
133}
134
135extern "C-unwind" {
136    /// # Safety
137    ///
138    /// - `print_session` must be a valid pointer.
139    /// - `print_settings` must be a valid pointer.
140    /// - `dest_location_p` must be a valid pointer.
141    #[cfg(feature = "PMDefinitions")]
142    pub fn PMSessionCopyDestinationLocation(
143        print_session: PMPrintSession,
144        print_settings: PMPrintSettings,
145        dest_location_p: NonNull<*const CFURL>,
146    ) -> OSStatus;
147}
148
149extern "C-unwind" {
150    /// # Safety
151    ///
152    /// - `print_session` must be a valid pointer.
153    /// - `print_settings` must be a valid pointer.
154    #[cfg(feature = "PMDefinitions")]
155    pub fn PMSessionSetDestination(
156        print_session: PMPrintSession,
157        print_settings: PMPrintSettings,
158        dest_type: PMDestinationType,
159        dest_format: Option<&CFString>,
160        dest_location: Option<&CFURL>,
161    ) -> OSStatus;
162}
163
164extern "C-unwind" {
165    /// # Safety
166    ///
167    /// - `print_session` must be a valid pointer.
168    /// - `document_format_p` must be a valid pointer.
169    #[cfg(feature = "PMDefinitions")]
170    pub fn PMSessionCopyOutputFormatList(
171        print_session: PMPrintSession,
172        dest_type: PMDestinationType,
173        document_format_p: NonNull<*const CFArray>,
174    ) -> OSStatus;
175}
176
177extern "C-unwind" {
178    /// # Safety
179    ///
180    /// - `print_session` must be a valid pointer.
181    /// - `printer` must be a valid pointer or null.
182    /// - `page_format_list` must be a valid pointer.
183    #[cfg(feature = "PMDefinitions")]
184    pub fn PMSessionCreatePageFormatList(
185        print_session: PMPrintSession,
186        printer: PMPrinter,
187        page_format_list: NonNull<*const CFArray>,
188    ) -> OSStatus;
189}
190
191extern "C-unwind" {
192    /// # Safety
193    ///
194    /// - `print_session` must be a valid pointer.
195    /// - `printer_list` must be a valid pointer.
196    /// - `current_index` must be a valid pointer or null.
197    /// - `current_printer` must be a valid pointer or null.
198    #[cfg(feature = "PMDefinitions")]
199    pub fn PMSessionCreatePrinterList(
200        print_session: PMPrintSession,
201        printer_list: NonNull<*const CFArray>,
202        current_index: *mut CFIndex,
203        current_printer: *mut PMPrinter,
204    ) -> OSStatus;
205}
206
207extern "C-unwind" {
208    /// # Safety
209    ///
210    /// - `print_session` must be a valid pointer.
211    /// - `current_printer` must be a valid pointer.
212    #[cfg(feature = "PMDefinitions")]
213    pub fn PMSessionGetCurrentPrinter(
214        print_session: PMPrintSession,
215        current_printer: NonNull<PMPrinter>,
216    ) -> OSStatus;
217}
218
219extern "C-unwind" {
220    /// # Safety
221    ///
222    /// - `session` must be a valid pointer.
223    /// - `printer` must be a valid pointer.
224    #[cfg(feature = "PMDefinitions")]
225    pub fn PMSessionSetCurrentPMPrinter(session: PMPrintSession, printer: PMPrinter) -> OSStatus;
226}
227
228extern "C-unwind" {
229    /// # Safety
230    ///
231    /// - `print_session` must be a valid pointer.
232    /// - `data` must be a valid pointer.
233    #[cfg(feature = "PMDefinitions")]
234    pub fn PMSessionGetDataFromSession(
235        print_session: PMPrintSession,
236        key: &CFString,
237        data: NonNull<*const CFType>,
238    ) -> OSStatus;
239}
240
241extern "C-unwind" {
242    /// # Safety
243    ///
244    /// - `print_session` must be a valid pointer.
245    /// - `data` should be of the correct type.
246    #[cfg(feature = "PMDefinitions")]
247    pub fn PMSessionSetDataInSession(
248        print_session: PMPrintSession,
249        key: &CFString,
250        data: &CFType,
251    ) -> OSStatus;
252}
253
254extern "C-unwind" {
255    /// # Safety
256    ///
257    /// `page_format` must be a valid pointer.
258    #[cfg(feature = "PMDefinitions")]
259    pub fn PMCreatePageFormat(page_format: NonNull<PMPageFormat>) -> OSStatus;
260}
261
262extern "C-unwind" {
263    /// # Safety
264    ///
265    /// - `print_session` must be a valid pointer.
266    /// - `page_format` must be a valid pointer.
267    #[cfg(feature = "PMDefinitions")]
268    pub fn PMSessionDefaultPageFormat(
269        print_session: PMPrintSession,
270        page_format: PMPageFormat,
271    ) -> OSStatus;
272}
273
274extern "C-unwind" {
275    /// # Safety
276    ///
277    /// - `print_session` must be a valid pointer.
278    /// - `page_format` must be a valid pointer.
279    /// - `changed` must be a valid pointer or null.
280    #[cfg(feature = "PMDefinitions")]
281    pub fn PMSessionValidatePageFormat(
282        print_session: PMPrintSession,
283        page_format: PMPageFormat,
284        changed: *mut Boolean,
285    ) -> OSStatus;
286}
287
288extern "C-unwind" {
289    /// # Safety
290    ///
291    /// - `format_src` must be a valid pointer.
292    /// - `format_dest` must be a valid pointer.
293    #[cfg(feature = "PMDefinitions")]
294    pub fn PMCopyPageFormat(format_src: PMPageFormat, format_dest: PMPageFormat) -> OSStatus;
295}
296
297extern "C-unwind" {
298    /// # Safety
299    ///
300    /// - `page_format` must be a valid pointer.
301    /// - `paper` must be a valid pointer.
302    #[cfg(feature = "PMDefinitions")]
303    pub fn PMCreatePageFormatWithPMPaper(
304        page_format: NonNull<PMPageFormat>,
305        paper: PMPaper,
306    ) -> OSStatus;
307}
308
309extern "C-unwind" {
310    /// # Safety
311    ///
312    /// - `page_format` must be a valid pointer.
313    /// - `data` must be a valid pointer.
314    #[cfg(feature = "PMDefinitions")]
315    pub fn PMPageFormatCreateDataRepresentation(
316        page_format: PMPageFormat,
317        data: NonNull<*const CFData>,
318        format: PMDataFormat,
319    ) -> OSStatus;
320}
321
322extern "C-unwind" {
323    /// # Safety
324    ///
325    /// `page_format` must be a valid pointer.
326    #[cfg(feature = "PMDefinitions")]
327    pub fn PMPageFormatCreateWithDataRepresentation(
328        data: &CFData,
329        page_format: NonNull<PMPageFormat>,
330    ) -> OSStatus;
331}
332
333extern "C-unwind" {
334    /// # Safety
335    ///
336    /// - `page_format` must be a valid pointer.
337    /// - `page_rect` must be a valid pointer.
338    #[cfg(feature = "PMDefinitions")]
339    pub fn PMGetAdjustedPageRect(page_format: PMPageFormat, page_rect: NonNull<PMRect>)
340        -> OSStatus;
341}
342
343extern "C-unwind" {
344    /// # Safety
345    ///
346    /// - `page_format` must be a valid pointer.
347    /// - `paper_rect` must be a valid pointer.
348    #[cfg(feature = "PMDefinitions")]
349    pub fn PMGetAdjustedPaperRect(
350        page_format: PMPageFormat,
351        paper_rect: NonNull<PMRect>,
352    ) -> OSStatus;
353}
354
355extern "C-unwind" {
356    /// # Safety
357    ///
358    /// - `page_format` must be a valid pointer.
359    /// - `orientation` must be a valid pointer.
360    #[cfg(feature = "PMDefinitions")]
361    pub fn PMGetOrientation(
362        page_format: PMPageFormat,
363        orientation: NonNull<PMOrientation>,
364    ) -> OSStatus;
365}
366
367extern "C-unwind" {
368    /// # Safety
369    ///
370    /// - `page_format` must be a valid pointer.
371    /// - `size` must be a valid pointer or null.
372    /// - `extended_data` must be a valid pointer or null.
373    #[cfg(feature = "PMDefinitions")]
374    pub fn PMGetPageFormatExtendedData(
375        page_format: PMPageFormat,
376        data_id: OSType,
377        size: *mut u32,
378        extended_data: *mut c_void,
379    ) -> OSStatus;
380}
381
382extern "C-unwind" {
383    /// # Safety
384    ///
385    /// - `page_format` must be a valid pointer.
386    /// - `printer_id` must be a valid pointer.
387    #[cfg(feature = "PMDefinitions")]
388    pub fn PMPageFormatGetPrinterID(
389        page_format: PMPageFormat,
390        printer_id: NonNull<*const CFString>,
391    ) -> OSStatus;
392}
393
394extern "C-unwind" {
395    /// # Safety
396    ///
397    /// - `page_format` must be a valid pointer.
398    /// - `scale` must be a valid pointer.
399    #[cfg(feature = "PMDefinitions")]
400    pub fn PMGetScale(page_format: PMPageFormat, scale: NonNull<c_double>) -> OSStatus;
401}
402
403extern "C-unwind" {
404    /// # Safety
405    ///
406    /// - `page_format` must be a valid pointer.
407    /// - `page_rect` must be a valid pointer.
408    #[cfg(feature = "PMDefinitions")]
409    pub fn PMGetUnadjustedPageRect(
410        page_format: PMPageFormat,
411        page_rect: NonNull<PMRect>,
412    ) -> OSStatus;
413}
414
415extern "C-unwind" {
416    /// # Safety
417    ///
418    /// - `page_format` must be a valid pointer.
419    /// - `paper_rect` must be a valid pointer.
420    #[cfg(feature = "PMDefinitions")]
421    pub fn PMGetUnadjustedPaperRect(
422        page_format: PMPageFormat,
423        paper_rect: NonNull<PMRect>,
424    ) -> OSStatus;
425}
426
427/// *********************
428///
429/// # Safety
430///
431/// `page_format` must be a valid pointer.
432#[cfg(feature = "PMDefinitions")]
433#[inline]
434pub unsafe extern "C-unwind" fn PMSetOrientation(
435    page_format: PMPageFormat,
436    orientation: PMOrientation,
437    lock: bool,
438) -> OSStatus {
439    extern "C-unwind" {
440        fn PMSetOrientation(
441            page_format: PMPageFormat,
442            orientation: PMOrientation,
443            lock: Boolean,
444        ) -> OSStatus;
445    }
446    unsafe { PMSetOrientation(page_format, orientation, lock as _) }
447}
448
449extern "C-unwind" {
450    /// # Safety
451    ///
452    /// - `page_format` must be a valid pointer.
453    /// - `extended_data` must be a valid pointer.
454    #[cfg(feature = "PMDefinitions")]
455    pub fn PMSetPageFormatExtendedData(
456        page_format: PMPageFormat,
457        data_id: OSType,
458        size: u32,
459        extended_data: NonNull<c_void>,
460    ) -> OSStatus;
461}
462
463extern "C-unwind" {
464    /// # Safety
465    ///
466    /// `page_format` must be a valid pointer.
467    #[cfg(feature = "PMDefinitions")]
468    pub fn PMSetScale(page_format: PMPageFormat, scale: c_double) -> OSStatus;
469}
470
471extern "C-unwind" {
472    /// # Safety
473    ///
474    /// `print_settings` must be a valid pointer.
475    #[cfg(feature = "PMDefinitions")]
476    pub fn PMCreatePrintSettings(print_settings: NonNull<PMPrintSettings>) -> OSStatus;
477}
478
479extern "C-unwind" {
480    /// # Safety
481    ///
482    /// - `print_session` must be a valid pointer.
483    /// - `print_settings` must be a valid pointer.
484    #[cfg(feature = "PMDefinitions")]
485    pub fn PMSessionDefaultPrintSettings(
486        print_session: PMPrintSession,
487        print_settings: PMPrintSettings,
488    ) -> OSStatus;
489}
490
491extern "C-unwind" {
492    /// # Safety
493    ///
494    /// - `print_session` must be a valid pointer.
495    /// - `print_settings` must be a valid pointer.
496    /// - `changed` must be a valid pointer or null.
497    #[cfg(feature = "PMDefinitions")]
498    pub fn PMSessionValidatePrintSettings(
499        print_session: PMPrintSession,
500        print_settings: PMPrintSettings,
501        changed: *mut Boolean,
502    ) -> OSStatus;
503}
504
505extern "C-unwind" {
506    /// # Safety
507    ///
508    /// - `setting_src` must be a valid pointer.
509    /// - `setting_dest` must be a valid pointer.
510    #[cfg(feature = "PMDefinitions")]
511    pub fn PMCopyPrintSettings(
512        setting_src: PMPrintSettings,
513        setting_dest: PMPrintSettings,
514    ) -> OSStatus;
515}
516
517extern "C-unwind" {
518    /// # Safety
519    ///
520    /// - `print_settings` must be a valid pointer.
521    /// - `data` must be a valid pointer.
522    #[cfg(feature = "PMDefinitions")]
523    pub fn PMPrintSettingsCreateDataRepresentation(
524        print_settings: PMPrintSettings,
525        data: NonNull<*const CFData>,
526        format: PMDataFormat,
527    ) -> OSStatus;
528}
529
530extern "C-unwind" {
531    /// # Safety
532    ///
533    /// `print_settings` must be a valid pointer.
534    #[cfg(feature = "PMDefinitions")]
535    pub fn PMPrintSettingsCreateWithDataRepresentation(
536        data: &CFData,
537        print_settings: NonNull<PMPrintSettings>,
538    ) -> OSStatus;
539}
540
541extern "C-unwind" {
542    /// # Safety
543    ///
544    /// - `print_settings` must be a valid pointer.
545    /// - `collate` must be a valid pointer.
546    #[cfg(feature = "PMDefinitions")]
547    pub fn PMGetCollate(print_settings: PMPrintSettings, collate: NonNull<Boolean>) -> OSStatus;
548}
549
550extern "C-unwind" {
551    /// # Safety
552    ///
553    /// - `print_settings` must be a valid pointer.
554    /// - `copies` must be a valid pointer.
555    #[cfg(feature = "PMDefinitions")]
556    pub fn PMGetCopies(print_settings: PMPrintSettings, copies: NonNull<u32>) -> OSStatus;
557}
558
559extern "C-unwind" {
560    /// # Safety
561    ///
562    /// - `print_settings` must be a valid pointer.
563    /// - `duplex_setting` must be a valid pointer.
564    #[cfg(feature = "PMDefinitions")]
565    pub fn PMGetDuplex(
566        print_settings: PMPrintSettings,
567        duplex_setting: NonNull<PMDuplexMode>,
568    ) -> OSStatus;
569}
570
571extern "C-unwind" {
572    /// # Safety
573    ///
574    /// - `print_settings` must be a valid pointer.
575    /// - `first` must be a valid pointer.
576    #[cfg(feature = "PMDefinitions")]
577    pub fn PMGetFirstPage(print_settings: PMPrintSettings, first: NonNull<u32>) -> OSStatus;
578}
579
580extern "C-unwind" {
581    /// # Safety
582    ///
583    /// - `print_settings` must be a valid pointer.
584    /// - `last` must be a valid pointer.
585    #[cfg(feature = "PMDefinitions")]
586    pub fn PMGetLastPage(print_settings: PMPrintSettings, last: NonNull<u32>) -> OSStatus;
587}
588
589extern "C-unwind" {
590    /// # Safety
591    ///
592    /// - `print_settings` must be a valid pointer.
593    /// - `min_page` must be a valid pointer.
594    /// - `max_page` must be a valid pointer.
595    #[cfg(feature = "PMDefinitions")]
596    pub fn PMGetPageRange(
597        print_settings: PMPrintSettings,
598        min_page: NonNull<u32>,
599        max_page: NonNull<u32>,
600    ) -> OSStatus;
601}
602
603extern "C-unwind" {
604    /// # Safety
605    ///
606    /// - `print_settings` must be a valid pointer.
607    /// - `name` must be a valid pointer.
608    #[cfg(feature = "PMDefinitions")]
609    pub fn PMPrintSettingsGetJobName(
610        print_settings: PMPrintSettings,
611        name: NonNull<*const CFString>,
612    ) -> OSStatus;
613}
614
615extern "C-unwind" {
616    /// # Safety
617    ///
618    /// - `print_settings` must be a valid pointer.
619    /// - `value` must be a valid pointer.
620    #[cfg(feature = "PMDefinitions")]
621    pub fn PMPrintSettingsGetValue(
622        print_settings: PMPrintSettings,
623        key: &CFString,
624        value: NonNull<*const CFType>,
625    ) -> OSStatus;
626}
627
628/// # Safety
629///
630/// `print_settings` must be a valid pointer.
631#[cfg(feature = "PMDefinitions")]
632#[inline]
633pub unsafe extern "C-unwind" fn PMSetCollate(
634    print_settings: PMPrintSettings,
635    collate: bool,
636) -> OSStatus {
637    extern "C-unwind" {
638        fn PMSetCollate(print_settings: PMPrintSettings, collate: Boolean) -> OSStatus;
639    }
640    unsafe { PMSetCollate(print_settings, collate as _) }
641}
642
643/// # Safety
644///
645/// `print_settings` must be a valid pointer.
646#[cfg(feature = "PMDefinitions")]
647#[inline]
648pub unsafe extern "C-unwind" fn PMSetCopies(
649    print_settings: PMPrintSettings,
650    copies: u32,
651    lock: bool,
652) -> OSStatus {
653    extern "C-unwind" {
654        fn PMSetCopies(print_settings: PMPrintSettings, copies: u32, lock: Boolean) -> OSStatus;
655    }
656    unsafe { PMSetCopies(print_settings, copies, lock as _) }
657}
658
659extern "C-unwind" {
660    /// # Safety
661    ///
662    /// `print_settings` must be a valid pointer.
663    #[cfg(feature = "PMDefinitions")]
664    pub fn PMSetDuplex(print_settings: PMPrintSettings, duplex_setting: PMDuplexMode) -> OSStatus;
665}
666
667/// # Safety
668///
669/// `print_settings` must be a valid pointer.
670#[cfg(feature = "PMDefinitions")]
671#[inline]
672pub unsafe extern "C-unwind" fn PMSetFirstPage(
673    print_settings: PMPrintSettings,
674    first: u32,
675    lock: bool,
676) -> OSStatus {
677    extern "C-unwind" {
678        fn PMSetFirstPage(print_settings: PMPrintSettings, first: u32, lock: Boolean) -> OSStatus;
679    }
680    unsafe { PMSetFirstPage(print_settings, first, lock as _) }
681}
682
683/// # Safety
684///
685/// `print_settings` must be a valid pointer.
686#[cfg(feature = "PMDefinitions")]
687#[inline]
688pub unsafe extern "C-unwind" fn PMSetLastPage(
689    print_settings: PMPrintSettings,
690    last: u32,
691    lock: bool,
692) -> OSStatus {
693    extern "C-unwind" {
694        fn PMSetLastPage(print_settings: PMPrintSettings, last: u32, lock: Boolean) -> OSStatus;
695    }
696    unsafe { PMSetLastPage(print_settings, last, lock as _) }
697}
698
699extern "C-unwind" {
700    /// # Safety
701    ///
702    /// `print_settings` must be a valid pointer.
703    #[cfg(feature = "PMDefinitions")]
704    pub fn PMSetPageRange(
705        print_settings: PMPrintSettings,
706        min_page: u32,
707        max_page: u32,
708    ) -> OSStatus;
709}
710
711extern "C-unwind" {
712    /// # Safety
713    ///
714    /// `print_settings` must be a valid pointer.
715    #[cfg(feature = "PMDefinitions")]
716    pub fn PMPrintSettingsSetJobName(print_settings: PMPrintSettings, name: &CFString) -> OSStatus;
717}
718
719/// # Safety
720///
721/// - `print_settings` must be a valid pointer.
722/// - `value` should be of the correct type.
723#[cfg(feature = "PMDefinitions")]
724#[inline]
725pub unsafe extern "C-unwind" fn PMPrintSettingsSetValue(
726    print_settings: PMPrintSettings,
727    key: &CFString,
728    value: Option<&CFType>,
729    locked: bool,
730) -> OSStatus {
731    extern "C-unwind" {
732        fn PMPrintSettingsSetValue(
733            print_settings: PMPrintSettings,
734            key: &CFString,
735            value: Option<&CFType>,
736            locked: Boolean,
737        ) -> OSStatus;
738    }
739    unsafe { PMPrintSettingsSetValue(print_settings, key, value, locked as _) }
740}
741
742extern "C-unwind" {
743    /// # Safety
744    ///
745    /// - `print_settings` must be a valid pointer.
746    /// - `settings_dictionary` must be a valid pointer.
747    #[cfg(feature = "PMDefinitions")]
748    pub fn PMPrintSettingsCopyAsDictionary(
749        print_settings: PMPrintSettings,
750        settings_dictionary: NonNull<*const CFDictionary>,
751    ) -> OSStatus;
752}
753
754extern "C-unwind" {
755    /// # Safety
756    ///
757    /// - `print_settings` must be a valid pointer.
758    /// - `settings_keys` must be a valid pointer.
759    #[cfg(feature = "PMDefinitions")]
760    pub fn PMPrintSettingsCopyKeys(
761        print_settings: PMPrintSettings,
762        settings_keys: NonNull<*const CFArray>,
763    ) -> OSStatus;
764}
765
766extern "C-unwind" {
767    /// PMCreateGenericPrinter
768    /// Summary:
769    /// Creates a generic PMPrinter
770    ///
771    /// Parameters:
772    /// printer:
773    /// On return *printer contains the generic priner
774    ///
775    /// Availability:
776    /// Mac OS X:         in version 10.5 and later in ApplicationServices.framework
777    /// CarbonLib:        not available
778    /// Non-Carbon CFM:   not available
779    ///
780    /// Compatibility:
781    /// Not appropriate for CUPS filters, drivers, and backends.
782    ///
783    /// # Safety
784    ///
785    /// `printer` must be a valid pointer.
786    #[cfg(feature = "PMDefinitions")]
787    pub fn PMCreateGenericPrinter(printer: NonNull<PMPrinter>) -> OSStatus;
788}
789
790extern "C-unwind" {
791    /// # Safety
792    ///
793    /// - `server` must be a valid pointer or null.
794    /// - `printer_list` must be a valid pointer.
795    #[cfg(feature = "PMDefinitions")]
796    pub fn PMServerCreatePrinterList(
797        server: PMServer,
798        printer_list: NonNull<*const CFArray>,
799    ) -> OSStatus;
800}
801
802extern "C-unwind" {
803    /// # Safety
804    ///
805    /// - `server` must be a valid pointer or null.
806    /// - `options` generics must be of the correct type.
807    #[cfg(feature = "PMDefinitions")]
808    pub fn PMServerLaunchPrinterBrowser(
809        server: PMServer,
810        options: Option<&CFDictionary>,
811    ) -> OSStatus;
812}
813
814extern "C-unwind" {
815    #[cfg(feature = "PMDefinitions")]
816    pub fn PMPrinterCreateFromPrinterID(printer_id: &CFString) -> PMPrinter;
817}
818
819extern "C-unwind" {
820    /// # Safety
821    ///
822    /// - `printer` must be a valid pointer.
823    /// - `file_url` must be a valid pointer.
824    #[cfg(feature = "PMDefinitions")]
825    pub fn PMPrinterCopyDescriptionURL(
826        printer: PMPrinter,
827        description_type: &CFString,
828        file_url: NonNull<*const CFURL>,
829    ) -> OSStatus;
830}
831
832extern "C-unwind" {
833    /// # Safety
834    ///
835    /// - `printer` must be a valid pointer.
836    /// - `device_uri` must be a valid pointer.
837    #[cfg(feature = "PMDefinitions")]
838    pub fn PMPrinterCopyDeviceURI(
839        printer: PMPrinter,
840        device_uri: NonNull<*const CFURL>,
841    ) -> OSStatus;
842}
843
844extern "C-unwind" {
845    /// # Safety
846    ///
847    /// - `printer` must be a valid pointer.
848    /// - `host_name_p` must be a valid pointer.
849    #[cfg(feature = "PMDefinitions")]
850    pub fn PMPrinterCopyHostName(
851        printer: PMPrinter,
852        host_name_p: NonNull<*const CFString>,
853    ) -> OSStatus;
854}
855
856extern "C-unwind" {
857    /// # Safety
858    ///
859    /// - `printer` must be a valid pointer.
860    /// - `preset_list` must be a valid pointer.
861    #[cfg(feature = "PMDefinitions")]
862    pub fn PMPrinterCopyPresets(
863        printer: PMPrinter,
864        preset_list: NonNull<*const CFArray>,
865    ) -> OSStatus;
866}
867
868extern "C-unwind" {
869    /// # Safety
870    ///
871    /// - `printer` must be a valid pointer.
872    /// - `supports_control_char_range_p` must be a valid pointer or null.
873    /// - `supports_eight_bit_p` must be a valid pointer or null.
874    #[cfg(feature = "PMDefinitions")]
875    pub fn PMPrinterGetCommInfo(
876        printer: PMPrinter,
877        supports_control_char_range_p: *mut Boolean,
878        supports_eight_bit_p: *mut Boolean,
879    ) -> OSStatus;
880}
881
882/// # Safety
883///
884/// `printer` must be a valid pointer.
885#[cfg(feature = "PMDefinitions")]
886#[inline]
887pub unsafe extern "C-unwind" fn PMPrinterGetID(printer: PMPrinter) -> Option<CFRetained<CFString>> {
888    extern "C-unwind" {
889        fn PMPrinterGetID(printer: PMPrinter) -> Option<NonNull<CFString>>;
890    }
891    let ret = unsafe { PMPrinterGetID(printer) };
892    ret.map(|ret| unsafe { CFRetained::retain(ret) })
893}
894
895/// # Safety
896///
897/// `printer` must be a valid pointer.
898#[cfg(feature = "PMDefinitions")]
899#[inline]
900pub unsafe extern "C-unwind" fn PMPrinterGetLocation(
901    printer: PMPrinter,
902) -> Option<CFRetained<CFString>> {
903    extern "C-unwind" {
904        fn PMPrinterGetLocation(printer: PMPrinter) -> Option<NonNull<CFString>>;
905    }
906    let ret = unsafe { PMPrinterGetLocation(printer) };
907    ret.map(|ret| unsafe { CFRetained::retain(ret) })
908}
909
910extern "C-unwind" {
911    /// # Safety
912    ///
913    /// - `printer` must be a valid pointer.
914    /// - `creator` must be a valid pointer.
915    #[cfg(feature = "PMDefinitions")]
916    pub fn PMPrinterGetDriverCreator(printer: PMPrinter, creator: NonNull<OSType>) -> OSStatus;
917}
918
919extern "C-unwind" {
920    /// # Safety
921    ///
922    /// - `printer` must be a valid pointer.
923    /// - `count_p` must be a valid pointer.
924    #[cfg(feature = "PMDefinitions")]
925    pub fn PMPrinterGetPrinterResolutionCount(
926        printer: PMPrinter,
927        count_p: NonNull<u32>,
928    ) -> OSStatus;
929}
930
931extern "C-unwind" {
932    /// # Safety
933    ///
934    /// - `printer` must be a valid pointer.
935    /// - `resolution_p` must be a valid pointer.
936    #[cfg(feature = "PMDefinitions")]
937    pub fn PMPrinterGetIndexedPrinterResolution(
938        printer: PMPrinter,
939        index: u32,
940        resolution_p: NonNull<PMResolution>,
941    ) -> OSStatus;
942}
943
944extern "C-unwind" {
945    /// # Safety
946    ///
947    /// - `printer` must be a valid pointer.
948    /// - `print_settings` must be a valid pointer.
949    /// - `resolution_p` must be a valid pointer.
950    #[cfg(feature = "PMDefinitions")]
951    pub fn PMPrinterGetOutputResolution(
952        printer: PMPrinter,
953        print_settings: PMPrintSettings,
954        resolution_p: NonNull<PMResolution>,
955    ) -> OSStatus;
956}
957
958extern "C-unwind" {
959    /// # Safety
960    ///
961    /// - `printer` must be a valid pointer.
962    /// - `print_settings` must be a valid pointer.
963    /// - `resolution_p` must be a valid pointer.
964    #[cfg(feature = "PMDefinitions")]
965    pub fn PMPrinterSetOutputResolution(
966        printer: PMPrinter,
967        print_settings: PMPrintSettings,
968        resolution_p: NonNull<PMResolution>,
969    ) -> OSStatus;
970}
971
972extern "C-unwind" {
973    /// # Safety
974    ///
975    /// - `printer` must be a valid pointer.
976    /// - `info` must be a valid pointer.
977    #[cfg(feature = "PMDefinitions")]
978    pub fn PMPrinterGetLanguageInfo(printer: PMPrinter, info: NonNull<PMLanguageInfo>) -> OSStatus;
979}
980
981extern "C-unwind" {
982    /// # Safety
983    ///
984    /// - `printer` must be a valid pointer.
985    /// - `make_and_model` must be a valid pointer.
986    #[cfg(feature = "PMDefinitions")]
987    pub fn PMPrinterGetMakeAndModelName(
988        printer: PMPrinter,
989        make_and_model: NonNull<*const CFString>,
990    ) -> OSStatus;
991}
992
993extern "C-unwind" {
994    /// # Safety
995    ///
996    /// - `printer` must be a valid pointer.
997    /// - `settings` must be a valid pointer or null.
998    /// - `mime_types` must be a valid pointer.
999    #[cfg(feature = "PMDefinitions")]
1000    pub fn PMPrinterGetMimeTypes(
1001        printer: PMPrinter,
1002        settings: PMPrintSettings,
1003        mime_types: NonNull<*const CFArray>,
1004    ) -> OSStatus;
1005}
1006
1007/// # Safety
1008///
1009/// `printer` must be a valid pointer.
1010#[cfg(feature = "PMDefinitions")]
1011#[inline]
1012pub unsafe extern "C-unwind" fn PMPrinterGetName(
1013    printer: PMPrinter,
1014) -> Option<CFRetained<CFString>> {
1015    extern "C-unwind" {
1016        fn PMPrinterGetName(printer: PMPrinter) -> Option<NonNull<CFString>>;
1017    }
1018    let ret = unsafe { PMPrinterGetName(printer) };
1019    ret.map(|ret| unsafe { CFRetained::retain(ret) })
1020}
1021
1022extern "C-unwind" {
1023    /// # Safety
1024    ///
1025    /// - `printer` must be a valid pointer.
1026    /// - `paper_list` must be a valid pointer.
1027    #[cfg(feature = "PMDefinitions")]
1028    pub fn PMPrinterGetPaperList(
1029        printer: PMPrinter,
1030        paper_list: NonNull<*const CFArray>,
1031    ) -> OSStatus;
1032}
1033
1034extern "C-unwind" {
1035    /// # Safety
1036    ///
1037    /// - `printer` must be a valid pointer.
1038    /// - `state` must be a valid pointer.
1039    #[cfg(feature = "PMDefinitions")]
1040    pub fn PMPrinterGetState(printer: PMPrinter, state: NonNull<PMPrinterState>) -> OSStatus;
1041}
1042
1043/// # Safety
1044///
1045/// `printer` must be a valid pointer.
1046#[cfg(feature = "PMDefinitions")]
1047#[inline]
1048pub unsafe extern "C-unwind" fn PMPrinterIsDefault(printer: PMPrinter) -> bool {
1049    extern "C-unwind" {
1050        fn PMPrinterIsDefault(printer: PMPrinter) -> Boolean;
1051    }
1052    let ret = unsafe { PMPrinterIsDefault(printer) };
1053    ret != 0
1054}
1055
1056/// # Safety
1057///
1058/// `printer` must be a valid pointer.
1059#[cfg(feature = "PMDefinitions")]
1060#[inline]
1061pub unsafe extern "C-unwind" fn PMPrinterIsFavorite(printer: PMPrinter) -> bool {
1062    extern "C-unwind" {
1063        fn PMPrinterIsFavorite(printer: PMPrinter) -> Boolean;
1064    }
1065    let ret = unsafe { PMPrinterIsFavorite(printer) };
1066    ret != 0
1067}
1068
1069/// # Safety
1070///
1071/// `printer` must be a valid pointer.
1072#[cfg(feature = "PMDefinitions")]
1073#[inline]
1074pub unsafe extern "C-unwind" fn PMPrinterIsPostScriptCapable(printer: PMPrinter) -> bool {
1075    extern "C-unwind" {
1076        fn PMPrinterIsPostScriptCapable(printer: PMPrinter) -> Boolean;
1077    }
1078    let ret = unsafe { PMPrinterIsPostScriptCapable(printer) };
1079    ret != 0
1080}
1081
1082extern "C-unwind" {
1083    /// Set *isPSPrinter true if the printer is a PostScript printer.
1084    ///
1085    ///
1086    /// A PostScript printer is one whose driver takes PostScript directly.
1087    ///
1088    /// Availability:
1089    /// Mac OS X:         in version 10.5 and later in ApplicationServices.framework
1090    /// CarbonLib:        not available
1091    /// Non-Carbon CFM:   not available
1092    ///
1093    /// Compatibility:
1094    /// Not appropriate for CUPS filters, drivers, and backends.
1095    ///
1096    /// # Safety
1097    ///
1098    /// - `printer` must be a valid pointer.
1099    /// - `is_ps_printer` must be a valid pointer.
1100    #[cfg(feature = "PMDefinitions")]
1101    pub fn PMPrinterIsPostScriptPrinter(
1102        printer: PMPrinter,
1103        is_ps_printer: NonNull<Boolean>,
1104    ) -> OSStatus;
1105}
1106
1107extern "C-unwind" {
1108    /// # Safety
1109    ///
1110    /// - `printer` must be a valid pointer.
1111    /// - `is_remote_p` must be a valid pointer.
1112    #[cfg(feature = "PMDefinitions")]
1113    pub fn PMPrinterIsRemote(printer: PMPrinter, is_remote_p: NonNull<Boolean>) -> OSStatus;
1114}
1115
1116extern "C-unwind" {
1117    /// # Safety
1118    ///
1119    /// `printer` must be a valid pointer.
1120    #[cfg(feature = "PMDefinitions")]
1121    pub fn PMPrinterSetDefault(printer: PMPrinter) -> OSStatus;
1122}
1123
1124extern "C-unwind" {
1125    /// # Safety
1126    ///
1127    /// - `preset` must be a valid pointer.
1128    /// - `name` must be a valid pointer.
1129    #[cfg(feature = "PMDefinitions")]
1130    pub fn PMPresetCopyName(preset: PMPreset, name: NonNull<*const CFString>) -> OSStatus;
1131}
1132
1133extern "C-unwind" {
1134    /// # Safety
1135    ///
1136    /// - `preset` must be a valid pointer.
1137    /// - `session` must be a valid pointer.
1138    /// - `print_settings` must be a valid pointer.
1139    #[cfg(feature = "PMDefinitions")]
1140    pub fn PMPresetCreatePrintSettings(
1141        preset: PMPreset,
1142        session: PMPrintSession,
1143        print_settings: NonNull<PMPrintSettings>,
1144    ) -> OSStatus;
1145}
1146
1147extern "C-unwind" {
1148    /// # Safety
1149    ///
1150    /// - `preset` must be a valid pointer.
1151    /// - `attributes` must be a valid pointer.
1152    #[cfg(feature = "PMDefinitions")]
1153    pub fn PMPresetGetAttributes(
1154        preset: PMPreset,
1155        attributes: NonNull<*const CFDictionary>,
1156    ) -> OSStatus;
1157}
1158
1159extern "C-unwind" {
1160    /// # Safety
1161    ///
1162    /// - `format` must be a valid pointer.
1163    /// - `paper` must be a valid pointer.
1164    #[cfg(feature = "PMDefinitions")]
1165    pub fn PMGetPageFormatPaper(format: PMPageFormat, paper: NonNull<PMPaper>) -> OSStatus;
1166}
1167
1168extern "C-unwind" {
1169    /// # Safety
1170    ///
1171    /// - `printer` must be a valid pointer or null.
1172    /// - `margins` must be a valid pointer.
1173    /// - `paper_p` must be a valid pointer.
1174    #[cfg(feature = "PMDefinitions")]
1175    pub fn PMPaperCreateCustom(
1176        printer: PMPrinter,
1177        id: Option<&CFString>,
1178        name: Option<&CFString>,
1179        width: c_double,
1180        height: c_double,
1181        margins: NonNull<PMPaperMargins>,
1182        paper_p: NonNull<PMPaper>,
1183    ) -> OSStatus;
1184}
1185
1186extern "C-unwind" {
1187    /// # Safety
1188    ///
1189    /// - `paper` must be a valid pointer.
1190    /// - `paper_width` must be a valid pointer.
1191    #[cfg(feature = "PMDefinitions")]
1192    pub fn PMPaperGetWidth(paper: PMPaper, paper_width: NonNull<c_double>) -> OSStatus;
1193}
1194
1195extern "C-unwind" {
1196    /// # Safety
1197    ///
1198    /// - `paper` must be a valid pointer.
1199    /// - `paper_height` must be a valid pointer.
1200    #[cfg(feature = "PMDefinitions")]
1201    pub fn PMPaperGetHeight(paper: PMPaper, paper_height: NonNull<c_double>) -> OSStatus;
1202}
1203
1204extern "C-unwind" {
1205    /// # Safety
1206    ///
1207    /// - `paper` must be a valid pointer.
1208    /// - `paper_margins` must be a valid pointer.
1209    #[cfg(feature = "PMDefinitions")]
1210    pub fn PMPaperGetMargins(paper: PMPaper, paper_margins: NonNull<PMPaperMargins>) -> OSStatus;
1211}
1212
1213extern "C-unwind" {
1214    /// # Safety
1215    ///
1216    /// - `paper` must be a valid pointer.
1217    /// - `paper_id` must be a valid pointer.
1218    #[cfg(feature = "PMDefinitions")]
1219    pub fn PMPaperGetID(paper: PMPaper, paper_id: NonNull<*const CFString>) -> OSStatus;
1220}
1221
1222extern "C-unwind" {
1223    /// # Safety
1224    ///
1225    /// - `paper` must be a valid pointer.
1226    /// - `paper_name` must be a valid pointer.
1227    #[cfg(feature = "PMDefinitions")]
1228    pub fn PMPaperGetPPDPaperName(paper: PMPaper, paper_name: NonNull<*const CFString>)
1229        -> OSStatus;
1230}
1231
1232extern "C-unwind" {
1233    /// # Safety
1234    ///
1235    /// - `paper` must be a valid pointer.
1236    /// - `printer` must be a valid pointer.
1237    /// - `paper_name` must be a valid pointer.
1238    #[cfg(feature = "PMDefinitions")]
1239    pub fn PMPaperCreateLocalizedName(
1240        paper: PMPaper,
1241        printer: PMPrinter,
1242        paper_name: NonNull<*const CFString>,
1243    ) -> OSStatus;
1244}
1245
1246extern "C-unwind" {
1247    /// # Safety
1248    ///
1249    /// - `paper` must be a valid pointer.
1250    /// - `printer_id` must be a valid pointer.
1251    #[cfg(feature = "PMDefinitions")]
1252    pub fn PMPaperGetPrinterID(paper: PMPaper, printer_id: NonNull<*const CFString>) -> OSStatus;
1253}
1254
1255/// # Safety
1256///
1257/// `paper` must be a valid pointer.
1258#[cfg(feature = "PMDefinitions")]
1259#[inline]
1260pub unsafe extern "C-unwind" fn PMPaperIsCustom(paper: PMPaper) -> bool {
1261    extern "C-unwind" {
1262        fn PMPaperIsCustom(paper: PMPaper) -> Boolean;
1263    }
1264    let ret = unsafe { PMPaperIsCustom(paper) };
1265    ret != 0
1266}
1267
1268extern "C-unwind" {
1269    /// # Safety
1270    ///
1271    /// `workflow_items` must be a valid pointer.
1272    pub fn PMWorkflowCopyItems(workflow_items: NonNull<*const CFArray>) -> OSStatus;
1273}
1274
1275extern "C-unwind" {
1276    /// # Safety
1277    ///
1278    /// `options` must be a valid pointer or null.
1279    pub fn PMWorkflowSubmitPDFWithOptions(
1280        workflow_item: &CFURL,
1281        title: Option<&CFString>,
1282        options: *const c_char,
1283        pdf_file: &CFURL,
1284    ) -> OSStatus;
1285}
1286
1287extern "C-unwind" {
1288    /// # Safety
1289    ///
1290    /// `settings` must be a valid pointer.
1291    #[cfg(feature = "PMDefinitions")]
1292    pub fn PMWorkflowSubmitPDFWithSettings(
1293        workflow_item: &CFURL,
1294        settings: PMPrintSettings,
1295        pdf_file: &CFURL,
1296    ) -> OSStatus;
1297}
1298
1299extern "C-unwind" {
1300    /// # Safety
1301    ///
1302    /// - `printer` must be a valid pointer.
1303    /// - `settings` must be a valid pointer.
1304    /// - `format` must be a valid pointer or null.
1305    #[cfg(all(feature = "PMDefinitions", feature = "objc2-core-graphics"))]
1306    pub fn PMPrinterPrintWithProvider(
1307        printer: PMPrinter,
1308        settings: PMPrintSettings,
1309        format: PMPageFormat,
1310        mime_type: &CFString,
1311        provider: &CGDataProvider,
1312    ) -> OSStatus;
1313}
1314
1315extern "C-unwind" {
1316    /// # Safety
1317    ///
1318    /// - `printer` must be a valid pointer.
1319    /// - `settings` must be a valid pointer.
1320    /// - `format` must be a valid pointer or null.
1321    #[cfg(feature = "PMDefinitions")]
1322    pub fn PMPrinterPrintWithFile(
1323        printer: PMPrinter,
1324        settings: PMPrintSettings,
1325        format: PMPageFormat,
1326        mime_type: Option<&CFString>,
1327        file_url: &CFURL,
1328    ) -> OSStatus;
1329}
1330
1331extern "C-unwind" {
1332    /// # Safety
1333    ///
1334    /// - `printer` must be a valid pointer.
1335    /// - `settings` must be a valid pointer.
1336    /// - `format` must be a valid pointer or null.
1337    #[cfg(feature = "PMDefinitions")]
1338    pub fn PMPrinterWritePostScriptToURL(
1339        printer: PMPrinter,
1340        settings: PMPrintSettings,
1341        format: PMPageFormat,
1342        mime_type: Option<&CFString>,
1343        source_file_url: &CFURL,
1344        destination_file_url: &CFURL,
1345    ) -> OSStatus;
1346}
1347
1348extern "C-unwind" {
1349    /// # Safety
1350    ///
1351    /// - `settings` must be a valid pointer.
1352    /// - `options` must be a valid pointer.
1353    #[cfg(feature = "PMDefinitions")]
1354    pub fn PMPrintSettingsToOptions(
1355        settings: PMPrintSettings,
1356        options: NonNull<*mut c_char>,
1357    ) -> OSStatus;
1358}
1359
1360extern "C-unwind" {
1361    /// # Safety
1362    ///
1363    /// - `settings` must be a valid pointer.
1364    /// - `printer` must be a valid pointer.
1365    /// - `page_format` must be a valid pointer or null.
1366    /// - `options` must be a valid pointer.
1367    #[cfg(feature = "PMDefinitions")]
1368    pub fn PMPrintSettingsToOptionsWithPrinterAndPageFormat(
1369        settings: PMPrintSettings,
1370        printer: PMPrinter,
1371        page_format: PMPageFormat,
1372        options: NonNull<*mut c_char>,
1373    ) -> OSStatus;
1374}
1375
1376extern "C-unwind" {
1377    /// # Safety
1378    ///
1379    /// - `printer` must be a valid pointer.
1380    /// - `options` generics must be of the correct type.
1381    #[cfg(feature = "PMDefinitions")]
1382    pub fn PMPrinterSendCommand(
1383        printer: PMPrinter,
1384        command_string: &CFString,
1385        job_title: Option<&CFString>,
1386        options: Option<&CFDictionary>,
1387    ) -> OSStatus;
1388}
1389
1390extern "C-unwind" {
1391    /// # Safety
1392    ///
1393    /// - `printer` must be a valid pointer.
1394    /// - `state_dict` must be a valid pointer.
1395    #[cfg(feature = "PMDefinitions")]
1396    pub fn PMPrinterCopyState(
1397        printer: PMPrinter,
1398        state_dict: NonNull<*const CFDictionary>,
1399    ) -> OSStatus;
1400}
1401
1402extern "C-unwind" {
1403    /// # Safety
1404    ///
1405    /// `ppds` must be a valid pointer.
1406    #[cfg(feature = "PMDefinitions")]
1407    pub fn PMCopyAvailablePPDs(domain: PMPPDDomain, ppds: NonNull<*const CFArray>) -> OSStatus;
1408}
1409
1410extern "C-unwind" {
1411    /// # Safety
1412    ///
1413    /// `localized_ppd` must be a valid pointer.
1414    pub fn PMCopyLocalizedPPD(ppd: &CFURL, localized_ppd: NonNull<*const CFURL>) -> OSStatus;
1415}
1416
1417extern "C-unwind" {
1418    /// # Safety
1419    ///
1420    /// `data` must be a valid pointer.
1421    pub fn PMCopyPPDData(ppd: &CFURL, data: NonNull<*const CFData>) -> OSStatus;
1422}
1423
1424#[cfg(feature = "objc2-core-graphics")]
1425#[inline]
1426pub unsafe extern "C-unwind" fn PMCGImageCreateWithEPSDataProvider(
1427    eps_data_provider: Option<&CGDataProvider>,
1428    eps_preview: &CGImage,
1429) -> Option<CFRetained<CGImage>> {
1430    extern "C-unwind" {
1431        fn PMCGImageCreateWithEPSDataProvider(
1432            eps_data_provider: Option<&CGDataProvider>,
1433            eps_preview: &CGImage,
1434        ) -> Option<NonNull<CGImage>>;
1435    }
1436    let ret = unsafe { PMCGImageCreateWithEPSDataProvider(eps_data_provider, eps_preview) };
1437    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
1438}