#[cfg(feature = "block2")]
use block2::*;
use objc2::__framework_prelude::*;
#[cfg(feature = "objc2-app-kit")]
use objc2_app_kit::*;
use objc2_foundation::*;
use crate::*;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MPMediaType(pub NSUInteger);
impl MPMediaType {
#[doc(alias = "MPMediaTypeMusic")]
pub const Music: Self = Self(1 << 0);
#[doc(alias = "MPMediaTypePodcast")]
pub const Podcast: Self = Self(1 << 1);
#[doc(alias = "MPMediaTypeAudioBook")]
pub const AudioBook: Self = Self(1 << 2);
#[doc(alias = "MPMediaTypeAudioITunesU")]
pub const AudioITunesU: Self = Self(1 << 3);
#[doc(alias = "MPMediaTypeAnyAudio")]
pub const AnyAudio: Self = Self(0x00ff);
#[doc(alias = "MPMediaTypeMovie")]
pub const Movie: Self = Self(1 << 8);
#[doc(alias = "MPMediaTypeTVShow")]
pub const TVShow: Self = Self(1 << 9);
#[doc(alias = "MPMediaTypeVideoPodcast")]
pub const VideoPodcast: Self = Self(1 << 10);
#[doc(alias = "MPMediaTypeMusicVideo")]
pub const MusicVideo: Self = Self(1 << 11);
#[doc(alias = "MPMediaTypeVideoITunesU")]
pub const VideoITunesU: Self = Self(1 << 12);
#[doc(alias = "MPMediaTypeHomeVideo")]
pub const HomeVideo: Self = Self(1 << 13);
#[doc(alias = "MPMediaTypeAnyVideo")]
pub const AnyVideo: Self = Self(0xff00);
#[doc(alias = "MPMediaTypeAny")]
pub const Any: Self = Self(!0);
}
unsafe impl Encode for MPMediaType {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for MPMediaType {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern "C" {
pub static MPMediaItemPropertyPersistentID: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyMediaType: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyTitle: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyAlbumTitle: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyAlbumPersistentID: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyArtist: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyArtistPersistentID: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyAlbumArtist: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyAlbumArtistPersistentID: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyGenre: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyGenrePersistentID: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyComposer: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyComposerPersistentID: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyPlaybackDuration: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyAlbumTrackNumber: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyAlbumTrackCount: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyDiscNumber: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyDiscCount: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyArtwork: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyIsExplicit: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyLyrics: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyIsCompilation: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyReleaseDate: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyBeatsPerMinute: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyComments: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyAssetURL: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyIsCloudItem: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyHasProtectedAsset: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyPodcastTitle: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyPodcastPersistentID: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyPlayCount: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertySkipCount: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyRating: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyLastPlayedDate: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyUserGrouping: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyBookmarkTime: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyDateAdded: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyPlaybackStoreID: &'static NSString;
}
extern "C" {
pub static MPMediaItemPropertyIsPreorder: &'static NSString;
}
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
#[cfg(feature = "MPMediaEntity")]
pub struct MPMediaItem;
#[cfg(feature = "MPMediaEntity")]
unsafe impl ClassType for MPMediaItem {
#[inherits(NSObject)]
type Super = MPMediaEntity;
type Mutability = InteriorMutable;
}
);
#[cfg(feature = "MPMediaEntity")]
unsafe impl NSCoding for MPMediaItem {}
#[cfg(feature = "MPMediaEntity")]
unsafe impl NSObjectProtocol for MPMediaItem {}
#[cfg(feature = "MPMediaEntity")]
unsafe impl NSSecureCoding for MPMediaItem {}
extern_methods!(
#[cfg(feature = "MPMediaEntity")]
unsafe impl MPMediaItem {
#[method(persistentID)]
pub unsafe fn persistentID(&self) -> MPMediaEntityPersistentID;
#[method(mediaType)]
pub unsafe fn mediaType(&self) -> MPMediaType;
#[method_id(@__retain_semantics Other title)]
pub unsafe fn title(&self) -> Option<Id<NSString>>;
#[method_id(@__retain_semantics Other albumTitle)]
pub unsafe fn albumTitle(&self) -> Option<Id<NSString>>;
#[method(albumPersistentID)]
pub unsafe fn albumPersistentID(&self) -> MPMediaEntityPersistentID;
#[method_id(@__retain_semantics Other artist)]
pub unsafe fn artist(&self) -> Option<Id<NSString>>;
#[method(artistPersistentID)]
pub unsafe fn artistPersistentID(&self) -> MPMediaEntityPersistentID;
#[method_id(@__retain_semantics Other albumArtist)]
pub unsafe fn albumArtist(&self) -> Option<Id<NSString>>;
#[method(albumArtistPersistentID)]
pub unsafe fn albumArtistPersistentID(&self) -> MPMediaEntityPersistentID;
#[method_id(@__retain_semantics Other genre)]
pub unsafe fn genre(&self) -> Option<Id<NSString>>;
#[method(genrePersistentID)]
pub unsafe fn genrePersistentID(&self) -> MPMediaEntityPersistentID;
#[method_id(@__retain_semantics Other composer)]
pub unsafe fn composer(&self) -> Option<Id<NSString>>;
#[method(composerPersistentID)]
pub unsafe fn composerPersistentID(&self) -> MPMediaEntityPersistentID;
#[method(playbackDuration)]
pub unsafe fn playbackDuration(&self) -> NSTimeInterval;
#[method(albumTrackNumber)]
pub unsafe fn albumTrackNumber(&self) -> NSUInteger;
#[method(albumTrackCount)]
pub unsafe fn albumTrackCount(&self) -> NSUInteger;
#[method(discNumber)]
pub unsafe fn discNumber(&self) -> NSUInteger;
#[method(discCount)]
pub unsafe fn discCount(&self) -> NSUInteger;
#[method_id(@__retain_semantics Other artwork)]
pub unsafe fn artwork(&self) -> Option<Id<MPMediaItemArtwork>>;
#[method(isExplicitItem)]
pub unsafe fn isExplicitItem(&self) -> bool;
#[method_id(@__retain_semantics Other lyrics)]
pub unsafe fn lyrics(&self) -> Option<Id<NSString>>;
#[method(isCompilation)]
pub unsafe fn isCompilation(&self) -> bool;
#[method_id(@__retain_semantics Other releaseDate)]
pub unsafe fn releaseDate(&self) -> Option<Id<NSDate>>;
#[method(beatsPerMinute)]
pub unsafe fn beatsPerMinute(&self) -> NSUInteger;
#[method_id(@__retain_semantics Other comments)]
pub unsafe fn comments(&self) -> Option<Id<NSString>>;
#[method_id(@__retain_semantics Other assetURL)]
pub unsafe fn assetURL(&self) -> Option<Id<NSURL>>;
#[method(isCloudItem)]
pub unsafe fn isCloudItem(&self) -> bool;
#[method(hasProtectedAsset)]
pub unsafe fn hasProtectedAsset(&self) -> bool;
#[method_id(@__retain_semantics Other podcastTitle)]
pub unsafe fn podcastTitle(&self) -> Option<Id<NSString>>;
#[method(podcastPersistentID)]
pub unsafe fn podcastPersistentID(&self) -> MPMediaEntityPersistentID;
#[method(playCount)]
pub unsafe fn playCount(&self) -> NSUInteger;
#[method(skipCount)]
pub unsafe fn skipCount(&self) -> NSUInteger;
#[method(rating)]
pub unsafe fn rating(&self) -> NSUInteger;
#[method_id(@__retain_semantics Other lastPlayedDate)]
pub unsafe fn lastPlayedDate(&self) -> Option<Id<NSDate>>;
#[method_id(@__retain_semantics Other userGrouping)]
pub unsafe fn userGrouping(&self) -> Option<Id<NSString>>;
#[method(bookmarkTime)]
pub unsafe fn bookmarkTime(&self) -> NSTimeInterval;
#[method_id(@__retain_semantics Other dateAdded)]
pub unsafe fn dateAdded(&self) -> Id<NSDate>;
#[method_id(@__retain_semantics Other playbackStoreID)]
pub unsafe fn playbackStoreID(&self) -> Id<NSString>;
#[method(isPreorder)]
pub unsafe fn isPreorder(&self) -> bool;
}
);
extern_methods!(
#[cfg(feature = "MPMediaEntity")]
unsafe impl MPMediaItem {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Id<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MPMediaItemArtwork;
unsafe impl ClassType for MPMediaItemArtwork {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSObjectProtocol for MPMediaItemArtwork {}
extern_methods!(
unsafe impl MPMediaItemArtwork {
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Id<Self>;
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;
#[cfg(all(feature = "block2", feature = "objc2-app-kit"))]
#[method_id(@__retain_semantics Init initWithBoundsSize:requestHandler:)]
pub unsafe fn initWithBoundsSize_requestHandler(
this: Allocated<Self>,
bounds_size: CGSize,
request_handler: &Block<dyn Fn(CGSize) -> NonNull<NSImage>>,
) -> Id<Self>;
#[cfg(feature = "objc2-app-kit")]
#[method_id(@__retain_semantics Other imageWithSize:)]
pub unsafe fn imageWithSize(&self, size: CGSize) -> Option<Id<NSImage>>;
#[method(bounds)]
pub unsafe fn bounds(&self) -> CGRect;
#[deprecated = "cropRect is no longer used"]
#[method(imageCropRect)]
pub unsafe fn imageCropRect(&self) -> CGRect;
}
);