use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct NSAnimationCurve(pub NSUInteger);
impl NSAnimationCurve {
#[doc(alias = "NSAnimationEaseInOut")]
pub const EaseInOut: Self = Self(0);
#[doc(alias = "NSAnimationEaseIn")]
pub const EaseIn: Self = Self(1);
#[doc(alias = "NSAnimationEaseOut")]
pub const EaseOut: Self = Self(2);
#[doc(alias = "NSAnimationLinear")]
pub const Linear: Self = Self(3);
}
unsafe impl Encode for NSAnimationCurve {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for NSAnimationCurve {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct NSAnimationBlockingMode(pub NSUInteger);
impl NSAnimationBlockingMode {
#[doc(alias = "NSAnimationBlocking")]
pub const Blocking: Self = Self(0);
#[doc(alias = "NSAnimationNonblocking")]
pub const Nonblocking: Self = Self(1);
#[doc(alias = "NSAnimationNonblockingThreaded")]
pub const NonblockingThreaded: Self = Self(2);
}
unsafe impl Encode for NSAnimationBlockingMode {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for NSAnimationBlockingMode {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
pub type NSAnimationProgress = c_float;
extern "C" {
pub static NSAnimationProgressMarkNotification: &'static NSNotificationName;
}
extern "C" {
pub static NSAnimationProgressMark: &'static NSString;
}
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct NSAnimation;
);
extern_conformance!(
unsafe impl NSCoding for NSAnimation {}
);
extern_conformance!(
unsafe impl NSCopying for NSAnimation {}
);
unsafe impl CopyingHelper for NSAnimation {
type Result = Self;
}
extern_conformance!(
unsafe impl NSObjectProtocol for NSAnimation {}
);
impl NSAnimation {
extern_methods!(
#[unsafe(method(initWithDuration:animationCurve:))]
#[unsafe(method_family = init)]
pub fn initWithDuration_animationCurve(
this: Allocated<Self>,
duration: NSTimeInterval,
animation_curve: NSAnimationCurve,
) -> Retained<Self>;
#[unsafe(method(initWithCoder:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithCoder(
this: Allocated<Self>,
coder: &NSCoder,
) -> Option<Retained<Self>>;
#[unsafe(method(startAnimation))]
#[unsafe(method_family = none)]
pub fn startAnimation(&self);
#[unsafe(method(stopAnimation))]
#[unsafe(method_family = none)]
pub fn stopAnimation(&self);
#[unsafe(method(isAnimating))]
#[unsafe(method_family = none)]
pub fn isAnimating(&self) -> bool;
#[unsafe(method(currentProgress))]
#[unsafe(method_family = none)]
pub fn currentProgress(&self) -> NSAnimationProgress;
#[unsafe(method(setCurrentProgress:))]
#[unsafe(method_family = none)]
pub fn setCurrentProgress(&self, current_progress: NSAnimationProgress);
#[unsafe(method(duration))]
#[unsafe(method_family = none)]
pub fn duration(&self) -> NSTimeInterval;
#[unsafe(method(setDuration:))]
#[unsafe(method_family = none)]
pub fn setDuration(&self, duration: NSTimeInterval);
#[unsafe(method(animationBlockingMode))]
#[unsafe(method_family = none)]
pub fn animationBlockingMode(&self) -> NSAnimationBlockingMode;
#[unsafe(method(setAnimationBlockingMode:))]
#[unsafe(method_family = none)]
pub unsafe fn setAnimationBlockingMode(
&self,
animation_blocking_mode: NSAnimationBlockingMode,
);
#[unsafe(method(frameRate))]
#[unsafe(method_family = none)]
pub fn frameRate(&self) -> c_float;
#[unsafe(method(setFrameRate:))]
#[unsafe(method_family = none)]
pub fn setFrameRate(&self, frame_rate: c_float);
#[unsafe(method(animationCurve))]
#[unsafe(method_family = none)]
pub fn animationCurve(&self) -> NSAnimationCurve;
#[unsafe(method(setAnimationCurve:))]
#[unsafe(method_family = none)]
pub fn setAnimationCurve(&self, animation_curve: NSAnimationCurve);
#[unsafe(method(currentValue))]
#[unsafe(method_family = none)]
pub fn currentValue(&self) -> c_float;
#[unsafe(method(delegate))]
#[unsafe(method_family = none)]
pub fn delegate(&self) -> Option<Retained<ProtocolObject<dyn NSAnimationDelegate>>>;
#[unsafe(method(setDelegate:))]
#[unsafe(method_family = none)]
pub fn setDelegate(&self, delegate: Option<&ProtocolObject<dyn NSAnimationDelegate>>);
#[unsafe(method(progressMarks))]
#[unsafe(method_family = none)]
pub fn progressMarks(&self) -> Retained<NSArray<NSNumber>>;
#[unsafe(method(setProgressMarks:))]
#[unsafe(method_family = none)]
pub fn setProgressMarks(&self, progress_marks: &NSArray<NSNumber>);
#[unsafe(method(addProgressMark:))]
#[unsafe(method_family = none)]
pub fn addProgressMark(&self, progress_mark: NSAnimationProgress);
#[unsafe(method(removeProgressMark:))]
#[unsafe(method_family = none)]
pub fn removeProgressMark(&self, progress_mark: NSAnimationProgress);
#[unsafe(method(startWhenAnimation:reachesProgress:))]
#[unsafe(method_family = none)]
pub fn startWhenAnimation_reachesProgress(
&self,
animation: &NSAnimation,
start_progress: NSAnimationProgress,
);
#[unsafe(method(stopWhenAnimation:reachesProgress:))]
#[unsafe(method_family = none)]
pub fn stopWhenAnimation_reachesProgress(
&self,
animation: &NSAnimation,
stop_progress: NSAnimationProgress,
);
#[unsafe(method(clearStartAnimation))]
#[unsafe(method_family = none)]
pub fn clearStartAnimation(&self);
#[unsafe(method(clearStopAnimation))]
#[unsafe(method_family = none)]
pub fn clearStopAnimation(&self);
#[unsafe(method(runLoopModesForAnimating))]
#[unsafe(method_family = none)]
pub fn runLoopModesForAnimating(&self) -> Option<Retained<NSArray<NSRunLoopMode>>>;
);
}
impl NSAnimation {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub fn new() -> Retained<Self>;
);
}
impl DefaultRetained for NSAnimation {
#[inline]
fn default_retained() -> Retained<Self> {
Self::new()
}
}
extern_protocol!(
pub unsafe trait NSAnimationDelegate: NSObjectProtocol {
#[optional]
#[unsafe(method(animationShouldStart:))]
#[unsafe(method_family = none)]
fn animationShouldStart(&self, animation: &NSAnimation) -> bool;
#[optional]
#[unsafe(method(animationDidStop:))]
#[unsafe(method_family = none)]
fn animationDidStop(&self, animation: &NSAnimation);
#[optional]
#[unsafe(method(animationDidEnd:))]
#[unsafe(method_family = none)]
fn animationDidEnd(&self, animation: &NSAnimation);
#[optional]
#[unsafe(method(animation:valueForProgress:))]
#[unsafe(method_family = none)]
fn animation_valueForProgress(
&self,
animation: &NSAnimation,
progress: NSAnimationProgress,
) -> c_float;
#[optional]
#[unsafe(method(animation:didReachProgressMark:))]
#[unsafe(method_family = none)]
fn animation_didReachProgressMark(
&self,
animation: &NSAnimation,
progress: NSAnimationProgress,
);
}
);
pub type NSViewAnimationKey = NSString;
extern "C" {
pub static NSViewAnimationTargetKey: &'static NSViewAnimationKey;
}
extern "C" {
pub static NSViewAnimationStartFrameKey: &'static NSViewAnimationKey;
}
extern "C" {
pub static NSViewAnimationEndFrameKey: &'static NSViewAnimationKey;
}
extern "C" {
pub static NSViewAnimationEffectKey: &'static NSViewAnimationKey;
}
pub type NSViewAnimationEffectName = NSString;
extern "C" {
pub static NSViewAnimationFadeInEffect: &'static NSViewAnimationEffectName;
}
extern "C" {
pub static NSViewAnimationFadeOutEffect: &'static NSViewAnimationEffectName;
}
extern_class!(
#[unsafe(super(NSAnimation, NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct NSViewAnimation;
);
extern_conformance!(
unsafe impl NSCoding for NSViewAnimation {}
);
extern_conformance!(
unsafe impl NSCopying for NSViewAnimation {}
);
unsafe impl CopyingHelper for NSViewAnimation {
type Result = Self;
}
extern_conformance!(
unsafe impl NSObjectProtocol for NSViewAnimation {}
);
impl NSViewAnimation {
extern_methods!(
#[unsafe(method(initWithViewAnimations:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithViewAnimations(
this: Allocated<Self>,
view_animations: &NSArray<NSDictionary<NSViewAnimationKey, AnyObject>>,
) -> Retained<Self>;
#[unsafe(method(viewAnimations))]
#[unsafe(method_family = none)]
pub fn viewAnimations(
&self,
) -> Retained<NSArray<NSDictionary<NSViewAnimationKey, AnyObject>>>;
#[unsafe(method(setViewAnimations:))]
#[unsafe(method_family = none)]
pub unsafe fn setViewAnimations(
&self,
view_animations: &NSArray<NSDictionary<NSViewAnimationKey, AnyObject>>,
);
);
}
impl NSViewAnimation {
extern_methods!(
#[unsafe(method(initWithDuration:animationCurve:))]
#[unsafe(method_family = init)]
pub fn initWithDuration_animationCurve(
this: Allocated<Self>,
duration: NSTimeInterval,
animation_curve: NSAnimationCurve,
) -> Retained<Self>;
#[unsafe(method(initWithCoder:))]
#[unsafe(method_family = init)]
pub unsafe fn initWithCoder(
this: Allocated<Self>,
coder: &NSCoder,
) -> Option<Retained<Self>>;
);
}
impl NSViewAnimation {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub fn new() -> Retained<Self>;
);
}
impl DefaultRetained for NSViewAnimation {
#[inline]
fn default_retained() -> Retained<Self> {
Self::new()
}
}
pub type NSAnimatablePropertyKey = NSString;
extern_protocol!(
pub unsafe trait NSAnimatablePropertyContainer {
#[unsafe(method(animator))]
#[unsafe(method_family = none)]
fn animator(&self) -> Retained<Self>;
#[unsafe(method(animations))]
#[unsafe(method_family = none)]
fn animations(&self) -> Retained<NSDictionary<NSAnimatablePropertyKey, AnyObject>>;
#[unsafe(method(setAnimations:))]
#[unsafe(method_family = none)]
unsafe fn setAnimations(
&self,
animations: &NSDictionary<NSAnimatablePropertyKey, AnyObject>,
);
#[unsafe(method(animationForKey:))]
#[unsafe(method_family = none)]
fn animationForKey(&self, key: &NSAnimatablePropertyKey) -> Option<Retained<AnyObject>>;
#[unsafe(method(defaultAnimationForKey:))]
#[unsafe(method_family = none)]
fn defaultAnimationForKey(key: &NSAnimatablePropertyKey) -> Option<Retained<AnyObject>>;
}
);
extern "C" {
pub static NSAnimationTriggerOrderIn: &'static NSAnimatablePropertyKey;
}
extern "C" {
pub static NSAnimationTriggerOrderOut: &'static NSAnimatablePropertyKey;
}