objc2-av-foundation 0.3.2

Bindings to the AVFoundation framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avmediaselection?language=objc)
    #[unsafe(super(NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct AVMediaSelection;
);

extern_conformance!(
    unsafe impl NSCopying for AVMediaSelection {}
);

unsafe impl CopyingHelper for AVMediaSelection {
    type Result = Self;
}

extern_conformance!(
    unsafe impl NSMutableCopying for AVMediaSelection {}
);

unsafe impl MutableCopyingHelper for AVMediaSelection {
    type Result = AVMutableMediaSelection;
}

extern_conformance!(
    unsafe impl NSObjectProtocol for AVMediaSelection {}
);

impl AVMediaSelection {
    extern_methods!(
        #[cfg(feature = "AVAsset")]
        #[unsafe(method(asset))]
        #[unsafe(method_family = none)]
        pub unsafe fn asset(&self) -> Option<Retained<AVAsset>>;

        #[cfg(feature = "AVMediaSelectionGroup")]
        /// Indicates the media selection option that's currently selected from the specified group. May be nil.
        ///
        /// Parameter `mediaSelectionGroup`: A media selection group obtained from the receiver's asset.
        ///
        /// Returns: An instance of AVMediaSelectionOption that describes the currently selection option in the group.
        ///
        /// If the value of the property allowsEmptySelection of the AVMediaSelectionGroup is YES, the currently selected option in the group may be nil.
        #[unsafe(method(selectedMediaOptionInMediaSelectionGroup:))]
        #[unsafe(method_family = none)]
        pub unsafe fn selectedMediaOptionInMediaSelectionGroup(
            &self,
            media_selection_group: &AVMediaSelectionGroup,
        ) -> Option<Retained<AVMediaSelectionOption>>;

        #[cfg(feature = "AVMediaSelectionGroup")]
        /// Indicates that specified media selection group is subject to automatic media selection.
        ///
        /// Parameter `mediaSelectionGroup`: A media selection group obtained from the receiver's asset.
        ///
        /// Returns: YES if the group is subject to automatic media selection.
        ///
        /// Automatic application of media selection criteria is suspended in any group in which a specific selection has been made via an invocation of -selectMediaOption:inMediaSelectionGroup:.
        #[unsafe(method(mediaSelectionCriteriaCanBeAppliedAutomaticallyToMediaSelectionGroup:))]
        #[unsafe(method_family = none)]
        pub unsafe fn mediaSelectionCriteriaCanBeAppliedAutomaticallyToMediaSelectionGroup(
            &self,
            media_selection_group: &AVMediaSelectionGroup,
        ) -> bool;
    );
}

/// Methods declared on superclass `NSObject`.
impl AVMediaSelection {
    extern_methods!(
        #[unsafe(method(init))]
        #[unsafe(method_family = init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new() -> Retained<Self>;
    );
}

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/avfoundation/avmutablemediaselection?language=objc)
    #[unsafe(super(AVMediaSelection, NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct AVMutableMediaSelection;
);

extern_conformance!(
    unsafe impl NSCopying for AVMutableMediaSelection {}
);

unsafe impl CopyingHelper for AVMutableMediaSelection {
    type Result = AVMediaSelection;
}

extern_conformance!(
    unsafe impl NSMutableCopying for AVMutableMediaSelection {}
);

unsafe impl MutableCopyingHelper for AVMutableMediaSelection {
    type Result = Self;
}

extern_conformance!(
    unsafe impl NSObjectProtocol for AVMutableMediaSelection {}
);

impl AVMutableMediaSelection {
    extern_methods!(
        #[cfg(feature = "AVMediaSelectionGroup")]
        /// Selects the media option described by the specified instance of AVMediaSelectionOption in the specified AVMediaSelectionGroup and deselects all other options in that group.
        ///
        /// Parameter `mediaSelectionOption`: The option to select.
        ///
        /// Parameter `mediaSelectionGroup`: The media selection group, obtained from the receiver's asset, that contains the specified option.
        ///
        /// If the specified media selection option isn't a member of the specified media selection group, no change in presentation state will result.
        /// If the value of the property allowsEmptySelection of the AVMediaSelectionGroup is YES, you can pass nil for mediaSelectionOption to deselect all media selection options in the group.
        #[unsafe(method(selectMediaOption:inMediaSelectionGroup:))]
        #[unsafe(method_family = none)]
        pub unsafe fn selectMediaOption_inMediaSelectionGroup(
            &self,
            media_selection_option: Option<&AVMediaSelectionOption>,
            media_selection_group: &AVMediaSelectionGroup,
        );
    );
}

/// Methods declared on superclass `NSObject`.
impl AVMutableMediaSelection {
    extern_methods!(
        #[unsafe(method(init))]
        #[unsafe(method_family = init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new() -> Retained<Self>;
    );
}