use core::cell::UnsafeCell;
use core::ffi::*;
use core::marker::{PhantomData, PhantomPinned};
use core::ptr::NonNull;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use objc2_core_foundation::*;
use crate::*;
#[doc(alias = "CTFontCollectionRef")]
#[repr(C)]
pub struct CTFontCollection {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
cf_type!(
unsafe impl CTFontCollection {}
);
#[cfg(feature = "objc2")]
cf_objc2_type!(
unsafe impl RefEncode<"__CTFontCollection"> for CTFontCollection {}
);
#[doc(alias = "CTMutableFontCollectionRef")]
#[repr(C)]
pub struct CTMutableFontCollection {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
cf_type!(
unsafe impl CTMutableFontCollection: CTFontCollection {}
);
#[cfg(feature = "objc2")]
cf_objc2_type!(
unsafe impl RefEncode<"__CTFontCollection"> for CTMutableFontCollection {}
);
unsafe impl ConcreteType for CTFontCollection {
#[doc(alias = "CTFontCollectionGetTypeID")]
#[inline]
fn type_id() -> CFTypeID {
extern "C-unwind" {
fn CTFontCollectionGetTypeID() -> CFTypeID;
}
unsafe { CTFontCollectionGetTypeID() }
}
}
#[cfg(feature = "CTFontDescriptor")]
pub type CTFontCollectionSortDescriptorsCallback = Option<
unsafe extern "C-unwind" fn(
NonNull<CTFontDescriptor>,
NonNull<CTFontDescriptor>,
NonNull<c_void>,
) -> CFComparisonResult,
>;
extern "C" {
pub static kCTFontCollectionRemoveDuplicatesOption: &'static CFString;
}
extern "C" {
pub static kCTFontCollectionIncludeDisabledFontsOption: &'static CFString;
}
extern "C" {
pub static kCTFontCollectionDisallowAutoActivationOption: &'static CFString;
}
impl CTFontCollection {
#[doc(alias = "CTFontCollectionCreateFromAvailableFonts")]
#[inline]
pub unsafe fn from_available_fonts(
options: Option<&CFDictionary>,
) -> CFRetained<CTFontCollection> {
extern "C-unwind" {
fn CTFontCollectionCreateFromAvailableFonts(
options: Option<&CFDictionary>,
) -> Option<NonNull<CTFontCollection>>;
}
let ret = unsafe { CTFontCollectionCreateFromAvailableFonts(options) };
let ret =
ret.expect("function was marked as returning non-null, but actually returned NULL");
unsafe { CFRetained::from_raw(ret) }
}
#[doc(alias = "CTFontCollectionCreateWithFontDescriptors")]
#[inline]
pub unsafe fn with_font_descriptors(
query_descriptors: Option<&CFArray>,
options: Option<&CFDictionary>,
) -> CFRetained<CTFontCollection> {
extern "C-unwind" {
fn CTFontCollectionCreateWithFontDescriptors(
query_descriptors: Option<&CFArray>,
options: Option<&CFDictionary>,
) -> Option<NonNull<CTFontCollection>>;
}
let ret = unsafe { CTFontCollectionCreateWithFontDescriptors(query_descriptors, options) };
let ret =
ret.expect("function was marked as returning non-null, but actually returned NULL");
unsafe { CFRetained::from_raw(ret) }
}
#[doc(alias = "CTFontCollectionCreateCopyWithFontDescriptors")]
#[inline]
pub unsafe fn copy_with_font_descriptors(
&self,
query_descriptors: Option<&CFArray>,
options: Option<&CFDictionary>,
) -> CFRetained<CTFontCollection> {
extern "C-unwind" {
fn CTFontCollectionCreateCopyWithFontDescriptors(
original: &CTFontCollection,
query_descriptors: Option<&CFArray>,
options: Option<&CFDictionary>,
) -> Option<NonNull<CTFontCollection>>;
}
let ret = unsafe {
CTFontCollectionCreateCopyWithFontDescriptors(self, query_descriptors, options)
};
let ret =
ret.expect("function was marked as returning non-null, but actually returned NULL");
unsafe { CFRetained::from_raw(ret) }
}
}
impl CTMutableFontCollection {
#[doc(alias = "CTFontCollectionCreateMutableCopy")]
#[inline]
pub unsafe fn new_copy(original: &CTFontCollection) -> CFRetained<CTMutableFontCollection> {
extern "C-unwind" {
fn CTFontCollectionCreateMutableCopy(
original: &CTFontCollection,
) -> Option<NonNull<CTMutableFontCollection>>;
}
let ret = unsafe { CTFontCollectionCreateMutableCopy(original) };
let ret =
ret.expect("function was marked as returning non-null, but actually returned NULL");
unsafe { CFRetained::from_raw(ret) }
}
}
impl CTFontCollection {
#[doc(alias = "CTFontCollectionCopyQueryDescriptors")]
#[inline]
pub unsafe fn query_descriptors(&self) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CTFontCollectionCopyQueryDescriptors(
collection: &CTFontCollection,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CTFontCollectionCopyQueryDescriptors(self) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
}
impl CTMutableFontCollection {
#[doc(alias = "CTFontCollectionSetQueryDescriptors")]
#[inline]
pub unsafe fn set_query_descriptors(&self, descriptors: Option<&CFArray>) {
extern "C-unwind" {
fn CTFontCollectionSetQueryDescriptors(
collection: &CTMutableFontCollection,
descriptors: Option<&CFArray>,
);
}
unsafe { CTFontCollectionSetQueryDescriptors(self, descriptors) }
}
}
impl CTFontCollection {
#[doc(alias = "CTFontCollectionCopyExclusionDescriptors")]
#[inline]
pub unsafe fn exclusion_descriptors(&self) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CTFontCollectionCopyExclusionDescriptors(
collection: &CTFontCollection,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CTFontCollectionCopyExclusionDescriptors(self) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
}
impl CTMutableFontCollection {
#[doc(alias = "CTFontCollectionSetExclusionDescriptors")]
#[inline]
pub unsafe fn set_exclusion_descriptors(&self, descriptors: Option<&CFArray>) {
extern "C-unwind" {
fn CTFontCollectionSetExclusionDescriptors(
collection: &CTMutableFontCollection,
descriptors: Option<&CFArray>,
);
}
unsafe { CTFontCollectionSetExclusionDescriptors(self, descriptors) }
}
}
impl CTFontCollection {
#[doc(alias = "CTFontCollectionCreateMatchingFontDescriptors")]
#[inline]
pub unsafe fn matching_font_descriptors(&self) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CTFontCollectionCreateMatchingFontDescriptors(
collection: &CTFontCollection,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CTFontCollectionCreateMatchingFontDescriptors(self) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CTFontCollectionCreateMatchingFontDescriptorsSortedWithCallback")]
#[cfg(feature = "CTFontDescriptor")]
#[inline]
pub unsafe fn matching_font_descriptors_sorted_with_callback(
&self,
sort_callback: CTFontCollectionSortDescriptorsCallback,
ref_con: *mut c_void,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CTFontCollectionCreateMatchingFontDescriptorsSortedWithCallback(
collection: &CTFontCollection,
sort_callback: CTFontCollectionSortDescriptorsCallback,
ref_con: *mut c_void,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe {
CTFontCollectionCreateMatchingFontDescriptorsSortedWithCallback(
self,
sort_callback,
ref_con,
)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CTFontCollectionCreateMatchingFontDescriptorsWithOptions")]
#[inline]
pub unsafe fn matching_font_descriptors_with_options(
&self,
options: Option<&CFDictionary>,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CTFontCollectionCreateMatchingFontDescriptorsWithOptions(
collection: &CTFontCollection,
options: Option<&CFDictionary>,
) -> Option<NonNull<CFArray>>;
}
let ret =
unsafe { CTFontCollectionCreateMatchingFontDescriptorsWithOptions(self, options) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "CTFontCollectionCreateMatchingFontDescriptorsForFamily")]
#[inline]
pub unsafe fn matching_font_descriptors_for_family(
&self,
family_name: &CFString,
options: Option<&CFDictionary>,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CTFontCollectionCreateMatchingFontDescriptorsForFamily(
collection: &CTFontCollection,
family_name: &CFString,
options: Option<&CFDictionary>,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe {
CTFontCollectionCreateMatchingFontDescriptorsForFamily(self, family_name, options)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct CTFontCollectionCopyOptions(pub u32);
bitflags::bitflags! {
impl CTFontCollectionCopyOptions: u32 {
#[doc(alias = "kCTFontCollectionCopyDefaultOptions")]
const DefaultOptions = 0;
#[doc(alias = "kCTFontCollectionCopyUnique")]
const Unique = 1<<0;
#[doc(alias = "kCTFontCollectionCopyStandardSort")]
const StandardSort = 1<<1;
}
}
#[cfg(feature = "objc2")]
unsafe impl Encode for CTFontCollectionCopyOptions {
const ENCODING: Encoding = u32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for CTFontCollectionCopyOptions {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
impl CTFontCollection {
#[doc(alias = "CTFontCollectionCopyFontAttribute")]
#[inline]
pub unsafe fn font_attribute(
&self,
attribute_name: &CFString,
options: CTFontCollectionCopyOptions,
) -> CFRetained<CFArray> {
extern "C-unwind" {
fn CTFontCollectionCopyFontAttribute(
collection: &CTFontCollection,
attribute_name: &CFString,
options: CTFontCollectionCopyOptions,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CTFontCollectionCopyFontAttribute(self, attribute_name, options) };
let ret =
ret.expect("function was marked as returning non-null, but actually returned NULL");
unsafe { CFRetained::from_raw(ret) }
}
#[doc(alias = "CTFontCollectionCopyFontAttributes")]
#[inline]
pub unsafe fn font_attributes(
&self,
attribute_names: &CFSet,
options: CTFontCollectionCopyOptions,
) -> CFRetained<CFArray> {
extern "C-unwind" {
fn CTFontCollectionCopyFontAttributes(
collection: &CTFontCollection,
attribute_names: &CFSet,
options: CTFontCollectionCopyOptions,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CTFontCollectionCopyFontAttributes(self, attribute_names, options) };
let ret =
ret.expect("function was marked as returning non-null, but actually returned NULL");
unsafe { CFRetained::from_raw(ret) }
}
}
#[deprecated = "renamed to `CTFontCollection::from_available_fonts`"]
#[inline]
pub unsafe extern "C-unwind" fn CTFontCollectionCreateFromAvailableFonts(
options: Option<&CFDictionary>,
) -> CFRetained<CTFontCollection> {
extern "C-unwind" {
fn CTFontCollectionCreateFromAvailableFonts(
options: Option<&CFDictionary>,
) -> Option<NonNull<CTFontCollection>>;
}
let ret = unsafe { CTFontCollectionCreateFromAvailableFonts(options) };
let ret = ret.expect("function was marked as returning non-null, but actually returned NULL");
unsafe { CFRetained::from_raw(ret) }
}
#[deprecated = "renamed to `CTFontCollection::with_font_descriptors`"]
#[inline]
pub unsafe extern "C-unwind" fn CTFontCollectionCreateWithFontDescriptors(
query_descriptors: Option<&CFArray>,
options: Option<&CFDictionary>,
) -> CFRetained<CTFontCollection> {
extern "C-unwind" {
fn CTFontCollectionCreateWithFontDescriptors(
query_descriptors: Option<&CFArray>,
options: Option<&CFDictionary>,
) -> Option<NonNull<CTFontCollection>>;
}
let ret = unsafe { CTFontCollectionCreateWithFontDescriptors(query_descriptors, options) };
let ret = ret.expect("function was marked as returning non-null, but actually returned NULL");
unsafe { CFRetained::from_raw(ret) }
}
#[deprecated = "renamed to `CTFontCollection::copy_with_font_descriptors`"]
#[inline]
pub unsafe extern "C-unwind" fn CTFontCollectionCreateCopyWithFontDescriptors(
original: &CTFontCollection,
query_descriptors: Option<&CFArray>,
options: Option<&CFDictionary>,
) -> CFRetained<CTFontCollection> {
extern "C-unwind" {
fn CTFontCollectionCreateCopyWithFontDescriptors(
original: &CTFontCollection,
query_descriptors: Option<&CFArray>,
options: Option<&CFDictionary>,
) -> Option<NonNull<CTFontCollection>>;
}
let ret = unsafe {
CTFontCollectionCreateCopyWithFontDescriptors(original, query_descriptors, options)
};
let ret = ret.expect("function was marked as returning non-null, but actually returned NULL");
unsafe { CFRetained::from_raw(ret) }
}
#[deprecated = "renamed to `CTMutableFontCollection::new_copy`"]
#[inline]
pub unsafe extern "C-unwind" fn CTFontCollectionCreateMutableCopy(
original: &CTFontCollection,
) -> CFRetained<CTMutableFontCollection> {
extern "C-unwind" {
fn CTFontCollectionCreateMutableCopy(
original: &CTFontCollection,
) -> Option<NonNull<CTMutableFontCollection>>;
}
let ret = unsafe { CTFontCollectionCreateMutableCopy(original) };
let ret = ret.expect("function was marked as returning non-null, but actually returned NULL");
unsafe { CFRetained::from_raw(ret) }
}
#[deprecated = "renamed to `CTFontCollection::query_descriptors`"]
#[inline]
pub unsafe extern "C-unwind" fn CTFontCollectionCopyQueryDescriptors(
collection: &CTFontCollection,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CTFontCollectionCopyQueryDescriptors(
collection: &CTFontCollection,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CTFontCollectionCopyQueryDescriptors(collection) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
extern "C-unwind" {
#[deprecated = "renamed to `CTMutableFontCollection::set_query_descriptors`"]
pub fn CTFontCollectionSetQueryDescriptors(
collection: &CTMutableFontCollection,
descriptors: Option<&CFArray>,
);
}
#[deprecated = "renamed to `CTFontCollection::exclusion_descriptors`"]
#[inline]
pub unsafe extern "C-unwind" fn CTFontCollectionCopyExclusionDescriptors(
collection: &CTFontCollection,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CTFontCollectionCopyExclusionDescriptors(
collection: &CTFontCollection,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CTFontCollectionCopyExclusionDescriptors(collection) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
extern "C-unwind" {
#[deprecated = "renamed to `CTMutableFontCollection::set_exclusion_descriptors`"]
pub fn CTFontCollectionSetExclusionDescriptors(
collection: &CTMutableFontCollection,
descriptors: Option<&CFArray>,
);
}
#[deprecated = "renamed to `CTFontCollection::matching_font_descriptors`"]
#[inline]
pub unsafe extern "C-unwind" fn CTFontCollectionCreateMatchingFontDescriptors(
collection: &CTFontCollection,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CTFontCollectionCreateMatchingFontDescriptors(
collection: &CTFontCollection,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CTFontCollectionCreateMatchingFontDescriptors(collection) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[cfg(feature = "CTFontDescriptor")]
#[deprecated = "renamed to `CTFontCollection::matching_font_descriptors_sorted_with_callback`"]
#[inline]
pub unsafe extern "C-unwind" fn CTFontCollectionCreateMatchingFontDescriptorsSortedWithCallback(
collection: &CTFontCollection,
sort_callback: CTFontCollectionSortDescriptorsCallback,
ref_con: *mut c_void,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CTFontCollectionCreateMatchingFontDescriptorsSortedWithCallback(
collection: &CTFontCollection,
sort_callback: CTFontCollectionSortDescriptorsCallback,
ref_con: *mut c_void,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe {
CTFontCollectionCreateMatchingFontDescriptorsSortedWithCallback(
collection,
sort_callback,
ref_con,
)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `CTFontCollection::matching_font_descriptors_with_options`"]
#[inline]
pub unsafe extern "C-unwind" fn CTFontCollectionCreateMatchingFontDescriptorsWithOptions(
collection: &CTFontCollection,
options: Option<&CFDictionary>,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CTFontCollectionCreateMatchingFontDescriptorsWithOptions(
collection: &CTFontCollection,
options: Option<&CFDictionary>,
) -> Option<NonNull<CFArray>>;
}
let ret =
unsafe { CTFontCollectionCreateMatchingFontDescriptorsWithOptions(collection, options) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `CTFontCollection::matching_font_descriptors_for_family`"]
#[inline]
pub unsafe extern "C-unwind" fn CTFontCollectionCreateMatchingFontDescriptorsForFamily(
collection: &CTFontCollection,
family_name: &CFString,
options: Option<&CFDictionary>,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn CTFontCollectionCreateMatchingFontDescriptorsForFamily(
collection: &CTFontCollection,
family_name: &CFString,
options: Option<&CFDictionary>,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe {
CTFontCollectionCreateMatchingFontDescriptorsForFamily(collection, family_name, options)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `CTFontCollection::font_attribute`"]
#[inline]
pub unsafe extern "C-unwind" fn CTFontCollectionCopyFontAttribute(
collection: &CTFontCollection,
attribute_name: &CFString,
options: CTFontCollectionCopyOptions,
) -> CFRetained<CFArray> {
extern "C-unwind" {
fn CTFontCollectionCopyFontAttribute(
collection: &CTFontCollection,
attribute_name: &CFString,
options: CTFontCollectionCopyOptions,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CTFontCollectionCopyFontAttribute(collection, attribute_name, options) };
let ret = ret.expect("function was marked as returning non-null, but actually returned NULL");
unsafe { CFRetained::from_raw(ret) }
}
#[deprecated = "renamed to `CTFontCollection::font_attributes`"]
#[inline]
pub unsafe extern "C-unwind" fn CTFontCollectionCopyFontAttributes(
collection: &CTFontCollection,
attribute_names: &CFSet,
options: CTFontCollectionCopyOptions,
) -> CFRetained<CFArray> {
extern "C-unwind" {
fn CTFontCollectionCopyFontAttributes(
collection: &CTFontCollection,
attribute_names: &CFSet,
options: CTFontCollectionCopyOptions,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { CTFontCollectionCopyFontAttributes(collection, attribute_names, options) };
let ret = ret.expect("function was marked as returning non-null, but actually returned NULL");
unsafe { CFRetained::from_raw(ret) }
}