objc2-quick-look 0.3.2

Bindings to the QuickLook framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::cell::UnsafeCell;
use core::ffi::*;
use core::marker::{PhantomData, PhantomPinned};
use core::ptr::NonNull;
#[cfg(feature = "dispatch2")]
use dispatch2::*;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use objc2_core_foundation::*;
#[cfg(feature = "objc2-core-graphics")]
use objc2_core_graphics::*;

use crate::*;

/// [Apple's documentation](https://developer.apple.com/documentation/quicklook/qlthumbnail?language=objc)
#[doc(alias = "QLThumbnailRef")]
#[repr(C)]
pub struct QLThumbnail {
    inner: [u8; 0],
    _p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}

cf_type!(
    unsafe impl QLThumbnail {}
);
#[cfg(feature = "objc2")]
cf_objc2_type!(
    unsafe impl RefEncode<"__QLThumbnail"> for QLThumbnail {}
);

unsafe impl ConcreteType for QLThumbnail {
    #[doc(alias = "QLThumbnailGetTypeID")]
    #[inline]
    fn type_id() -> CFTypeID {
        extern "C-unwind" {
            fn QLThumbnailGetTypeID() -> CFTypeID;
        }
        unsafe { QLThumbnailGetTypeID() }
    }
}

impl QLThumbnail {
    /// # Safety
    ///
    /// - `allocator` might not allow `None`.
    /// - `url` might not allow `None`.
    /// - `options` generics must be of the correct type.
    /// - `options` might not allow `None`.
    #[doc(alias = "QLThumbnailCreate")]
    #[deprecated = "Use QLThumbnailGenerationRequest in QuickLookThumbnailing to generate thumbnails."]
    #[inline]
    pub unsafe fn new(
        allocator: Option<&CFAllocator>,
        url: Option<&CFURL>,
        max_thumbnail_size: CGSize,
        options: Option<&CFDictionary>,
    ) -> Option<CFRetained<QLThumbnail>> {
        extern "C-unwind" {
            fn QLThumbnailCreate(
                allocator: Option<&CFAllocator>,
                url: Option<&CFURL>,
                max_thumbnail_size: CGSize,
                options: Option<&CFDictionary>,
            ) -> Option<NonNull<QLThumbnail>>;
        }
        let ret = unsafe { QLThumbnailCreate(allocator, url, max_thumbnail_size, options) };
        ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
    }

    #[doc(alias = "QLThumbnailCopyDocumentURL")]
    #[deprecated = "Use QuickLookThumbnailing for thumbnails."]
    #[inline]
    pub unsafe fn document_url(&self) -> Option<CFRetained<CFURL>> {
        extern "C-unwind" {
            fn QLThumbnailCopyDocumentURL(thumbnail: &QLThumbnail) -> Option<NonNull<CFURL>>;
        }
        let ret = unsafe { QLThumbnailCopyDocumentURL(self) };
        ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
    }

    #[doc(alias = "QLThumbnailGetMaximumSize")]
    #[deprecated = "Use QLThumbnailGenerationRequest in QuickLookThumbnailing."]
    #[inline]
    pub unsafe fn maximum_size(&self) -> CGSize {
        extern "C-unwind" {
            fn QLThumbnailGetMaximumSize(thumbnail: &QLThumbnail) -> CGSize;
        }
        unsafe { QLThumbnailGetMaximumSize(self) }
    }

    #[doc(alias = "QLThumbnailCopyOptions")]
    #[deprecated = "Use QuickLookThumbnailing for thumbnails."]
    #[inline]
    pub unsafe fn options(&self) -> Option<CFRetained<CFDictionary>> {
        extern "C-unwind" {
            fn QLThumbnailCopyOptions(thumbnail: &QLThumbnail) -> Option<NonNull<CFDictionary>>;
        }
        let ret = unsafe { QLThumbnailCopyOptions(self) };
        ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
    }

    /// # Safety
    ///
    /// - `queue` possibly has additional threading requirements.
    /// - `queue` might not allow `None`.
    /// - `completion` must be a valid pointer.
    #[doc(alias = "QLThumbnailDispatchAsync")]
    #[cfg(feature = "dispatch2")]
    #[deprecated = "Use QLThumbnailGenerator in QuickLookThumbnailing to generate thumbnails."]
    #[inline]
    pub unsafe fn dispatch_async(
        &self,
        queue: Option<&DispatchQueue>,
        completion: dispatch_block_t,
    ) {
        extern "C-unwind" {
            fn QLThumbnailDispatchAsync(
                thumbnail: &QLThumbnail,
                queue: Option<&DispatchQueue>,
                completion: dispatch_block_t,
            );
        }
        unsafe { QLThumbnailDispatchAsync(self, queue, completion) }
    }

    #[doc(alias = "QLThumbnailCopyImage")]
    #[cfg(feature = "objc2-core-graphics")]
    #[deprecated = "Use QuickLookThumbnailing for thumbnails."]
    #[inline]
    pub unsafe fn image(&self) -> Option<CFRetained<CGImage>> {
        extern "C-unwind" {
            fn QLThumbnailCopyImage(thumbnail: &QLThumbnail) -> Option<NonNull<CGImage>>;
        }
        let ret = unsafe { QLThumbnailCopyImage(self) };
        ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
    }

    #[doc(alias = "QLThumbnailGetContentRect")]
    #[deprecated = "Use QuickLookThumbnailing for thumbnails."]
    #[inline]
    pub unsafe fn content_rect(&self) -> CGRect {
        extern "C-unwind" {
            fn QLThumbnailGetContentRect(thumbnail: &QLThumbnail) -> CGRect;
        }
        unsafe { QLThumbnailGetContentRect(self) }
    }

    #[doc(alias = "QLThumbnailCancel")]
    #[deprecated = "Use [QLThumbnailGenerator cancelRequest:] in QuickLookThumbnailing."]
    #[inline]
    pub unsafe fn cancel(&self) {
        extern "C-unwind" {
            fn QLThumbnailCancel(thumbnail: &QLThumbnail);
        }
        unsafe { QLThumbnailCancel(self) }
    }

    #[doc(alias = "QLThumbnailIsCancelled")]
    #[deprecated = "Use QuickLookThumbnailing for thumbnails."]
    #[inline]
    pub unsafe fn is_cancelled(&self) -> bool {
        extern "C-unwind" {
            fn QLThumbnailIsCancelled(thumbnail: &QLThumbnail) -> Boolean;
        }
        let ret = unsafe { QLThumbnailIsCancelled(self) };
        ret != 0
    }
}

#[deprecated = "renamed to `QLThumbnail::new`"]
#[inline]
pub unsafe extern "C-unwind" fn QLThumbnailCreate(
    allocator: Option<&CFAllocator>,
    url: Option<&CFURL>,
    max_thumbnail_size: CGSize,
    options: Option<&CFDictionary>,
) -> Option<CFRetained<QLThumbnail>> {
    extern "C-unwind" {
        fn QLThumbnailCreate(
            allocator: Option<&CFAllocator>,
            url: Option<&CFURL>,
            max_thumbnail_size: CGSize,
            options: Option<&CFDictionary>,
        ) -> Option<NonNull<QLThumbnail>>;
    }
    let ret = unsafe { QLThumbnailCreate(allocator, url, max_thumbnail_size, options) };
    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}

#[deprecated = "renamed to `QLThumbnail::document_url`"]
#[inline]
pub unsafe extern "C-unwind" fn QLThumbnailCopyDocumentURL(
    thumbnail: &QLThumbnail,
) -> Option<CFRetained<CFURL>> {
    extern "C-unwind" {
        fn QLThumbnailCopyDocumentURL(thumbnail: &QLThumbnail) -> Option<NonNull<CFURL>>;
    }
    let ret = unsafe { QLThumbnailCopyDocumentURL(thumbnail) };
    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}

extern "C-unwind" {
    #[deprecated = "renamed to `QLThumbnail::maximum_size`"]
    pub fn QLThumbnailGetMaximumSize(thumbnail: &QLThumbnail) -> CGSize;
}

#[deprecated = "renamed to `QLThumbnail::options`"]
#[inline]
pub unsafe extern "C-unwind" fn QLThumbnailCopyOptions(
    thumbnail: &QLThumbnail,
) -> Option<CFRetained<CFDictionary>> {
    extern "C-unwind" {
        fn QLThumbnailCopyOptions(thumbnail: &QLThumbnail) -> Option<NonNull<CFDictionary>>;
    }
    let ret = unsafe { QLThumbnailCopyOptions(thumbnail) };
    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}

extern "C-unwind" {
    #[cfg(feature = "dispatch2")]
    #[deprecated = "renamed to `QLThumbnail::dispatch_async`"]
    pub fn QLThumbnailDispatchAsync(
        thumbnail: &QLThumbnail,
        queue: Option<&DispatchQueue>,
        completion: dispatch_block_t,
    );
}

#[cfg(feature = "objc2-core-graphics")]
#[deprecated = "renamed to `QLThumbnail::image`"]
#[inline]
pub unsafe extern "C-unwind" fn QLThumbnailCopyImage(
    thumbnail: &QLThumbnail,
) -> Option<CFRetained<CGImage>> {
    extern "C-unwind" {
        fn QLThumbnailCopyImage(thumbnail: &QLThumbnail) -> Option<NonNull<CGImage>>;
    }
    let ret = unsafe { QLThumbnailCopyImage(thumbnail) };
    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}

extern "C-unwind" {
    #[deprecated = "renamed to `QLThumbnail::content_rect`"]
    pub fn QLThumbnailGetContentRect(thumbnail: &QLThumbnail) -> CGRect;
}

extern "C-unwind" {
    #[deprecated = "renamed to `QLThumbnail::cancel`"]
    pub fn QLThumbnailCancel(thumbnail: &QLThumbnail);
}

#[deprecated = "renamed to `QLThumbnail::is_cancelled`"]
#[inline]
pub unsafe extern "C-unwind" fn QLThumbnailIsCancelled(thumbnail: &QLThumbnail) -> bool {
    extern "C-unwind" {
        fn QLThumbnailIsCancelled(thumbnail: &QLThumbnail) -> Boolean;
    }
    let ret = unsafe { QLThumbnailIsCancelled(thumbnail) };
    ret != 0
}