use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct SCShareableContentStyle(pub NSInteger);
impl SCShareableContentStyle {
#[doc(alias = "SCShareableContentStyleNone")]
pub const None: Self = Self(0);
#[doc(alias = "SCShareableContentStyleWindow")]
pub const Window: Self = Self(1);
#[doc(alias = "SCShareableContentStyleDisplay")]
pub const Display: Self = Self(2);
#[doc(alias = "SCShareableContentStyleApplication")]
pub const Application: Self = Self(3);
}
unsafe impl Encode for SCShareableContentStyle {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for SCShareableContentStyle {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct SCRunningApplication;
unsafe impl ClassType for SCRunningApplication {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSObjectProtocol for SCRunningApplication {}
extern_methods!(
unsafe impl SCRunningApplication {
#[method_id(@__retain_semantics Other bundleIdentifier)]
pub unsafe fn bundleIdentifier(&self) -> Retained<NSString>;
#[method_id(@__retain_semantics Other applicationName)]
pub unsafe fn applicationName(&self) -> Retained<NSString>;
#[cfg(feature = "libc")]
#[method(processID)]
pub unsafe fn processID(&self) -> libc::pid_t;
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct SCWindow;
unsafe impl ClassType for SCWindow {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSObjectProtocol for SCWindow {}
extern_methods!(
unsafe impl SCWindow {
#[method(frame)]
pub unsafe fn frame(&self) -> CGRect;
#[method_id(@__retain_semantics Other title)]
pub unsafe fn title(&self) -> Option<Retained<NSString>>;
#[method(windowLayer)]
pub unsafe fn windowLayer(&self) -> NSInteger;
#[method_id(@__retain_semantics Other owningApplication)]
pub unsafe fn owningApplication(&self) -> Option<Retained<SCRunningApplication>>;
#[method(isOnScreen)]
pub unsafe fn isOnScreen(&self) -> bool;
#[method(isActive)]
pub unsafe fn isActive(&self) -> bool;
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct SCDisplay;
unsafe impl ClassType for SCDisplay {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSObjectProtocol for SCDisplay {}
extern_methods!(
unsafe impl SCDisplay {
#[method(width)]
pub unsafe fn width(&self) -> NSInteger;
#[method(height)]
pub unsafe fn height(&self) -> NSInteger;
#[method(frame)]
pub unsafe fn frame(&self) -> CGRect;
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct SCShareableContentInfo;
unsafe impl ClassType for SCShareableContentInfo {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSObjectProtocol for SCShareableContentInfo {}
extern_methods!(
unsafe impl SCShareableContentInfo {
#[method(style)]
pub unsafe fn style(&self) -> SCShareableContentStyle;
#[method(pointPixelScale)]
pub unsafe fn pointPixelScale(&self) -> c_float;
#[method(contentRect)]
pub unsafe fn contentRect(&self) -> CGRect;
}
);
extern_methods!(
unsafe impl SCShareableContentInfo {
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct SCShareableContent;
unsafe impl ClassType for SCShareableContent {
type Super = NSObject;
type Mutability = InteriorMutable;
}
);
unsafe impl NSObjectProtocol for SCShareableContent {}
extern_methods!(
unsafe impl SCShareableContent {
#[cfg(feature = "block2")]
#[method(getShareableContentWithCompletionHandler:)]
pub unsafe fn getShareableContentWithCompletionHandler(
completion_handler: &block2::Block<dyn Fn(*mut SCShareableContent, *mut NSError)>,
);
#[cfg(feature = "block2")]
#[method(getCurrentProcessShareableContentWithCompletionHandler:)]
pub unsafe fn getCurrentProcessShareableContentWithCompletionHandler(
completion_handler: &block2::Block<dyn Fn(*mut SCShareableContent, *mut NSError)>,
);
#[cfg(feature = "block2")]
#[method(getShareableContentExcludingDesktopWindows:onScreenWindowsOnly:completionHandler:)]
pub unsafe fn getShareableContentExcludingDesktopWindows_onScreenWindowsOnly_completionHandler(
exclude_desktop_windows: bool,
on_screen_windows_only: bool,
completion_handler: &block2::Block<dyn Fn(*mut SCShareableContent, *mut NSError)>,
);
#[cfg(feature = "block2")]
#[method(getShareableContentExcludingDesktopWindows:onScreenWindowsOnlyBelowWindow:completionHandler:)]
pub unsafe fn getShareableContentExcludingDesktopWindows_onScreenWindowsOnlyBelowWindow_completionHandler(
exclude_desktop_windows: bool,
window: &SCWindow,
completion_handler: &block2::Block<dyn Fn(*mut SCShareableContent, *mut NSError)>,
);
#[cfg(feature = "block2")]
#[method(getShareableContentExcludingDesktopWindows:onScreenWindowsOnlyAboveWindow:completionHandler:)]
pub unsafe fn getShareableContentExcludingDesktopWindows_onScreenWindowsOnlyAboveWindow_completionHandler(
exclude_desktop_windows: bool,
window: &SCWindow,
completion_handler: &block2::Block<dyn Fn(*mut SCShareableContent, *mut NSError)>,
);
#[cfg(feature = "SCStream")]
#[method_id(@__retain_semantics Other infoForFilter:)]
pub unsafe fn infoForFilter(filter: &SCContentFilter) -> Retained<SCShareableContentInfo>;
#[method_id(@__retain_semantics Other windows)]
pub unsafe fn windows(&self) -> Retained<NSArray<SCWindow>>;
#[method_id(@__retain_semantics Other displays)]
pub unsafe fn displays(&self) -> Retained<NSArray<SCDisplay>>;
#[method_id(@__retain_semantics Other applications)]
pub unsafe fn applications(&self) -> Retained<NSArray<SCRunningApplication>>;
#[method_id(@__retain_semantics Init init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[method_id(@__retain_semantics New new)]
pub unsafe fn new() -> Retained<Self>;
}
);