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 UIEventType(pub NSInteger);
impl UIEventType {
#[doc(alias = "UIEventTypeTouches")]
pub const Touches: Self = Self(0);
#[doc(alias = "UIEventTypeMotion")]
pub const Motion: Self = Self(1);
#[doc(alias = "UIEventTypeRemoteControl")]
pub const RemoteControl: Self = Self(2);
#[doc(alias = "UIEventTypePresses")]
pub const Presses: Self = Self(3);
#[doc(alias = "UIEventTypeScroll")]
pub const Scroll: Self = Self(10);
#[doc(alias = "UIEventTypeHover")]
pub const Hover: Self = Self(11);
#[doc(alias = "UIEventTypeTransform")]
pub const Transform: Self = Self(14);
}
unsafe impl Encode for UIEventType {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for UIEventType {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIEventSubtype(pub NSInteger);
impl UIEventSubtype {
#[doc(alias = "UIEventSubtypeNone")]
pub const None: Self = Self(0);
#[doc(alias = "UIEventSubtypeMotionShake")]
pub const MotionShake: Self = Self(1);
#[doc(alias = "UIEventSubtypeRemoteControlPlay")]
pub const RemoteControlPlay: Self = Self(100);
#[doc(alias = "UIEventSubtypeRemoteControlPause")]
pub const RemoteControlPause: Self = Self(101);
#[doc(alias = "UIEventSubtypeRemoteControlStop")]
pub const RemoteControlStop: Self = Self(102);
#[doc(alias = "UIEventSubtypeRemoteControlTogglePlayPause")]
pub const RemoteControlTogglePlayPause: Self = Self(103);
#[doc(alias = "UIEventSubtypeRemoteControlNextTrack")]
pub const RemoteControlNextTrack: Self = Self(104);
#[doc(alias = "UIEventSubtypeRemoteControlPreviousTrack")]
pub const RemoteControlPreviousTrack: Self = Self(105);
#[doc(alias = "UIEventSubtypeRemoteControlBeginSeekingBackward")]
pub const RemoteControlBeginSeekingBackward: Self = Self(106);
#[doc(alias = "UIEventSubtypeRemoteControlEndSeekingBackward")]
pub const RemoteControlEndSeekingBackward: Self = Self(107);
#[doc(alias = "UIEventSubtypeRemoteControlBeginSeekingForward")]
pub const RemoteControlBeginSeekingForward: Self = Self(108);
#[doc(alias = "UIEventSubtypeRemoteControlEndSeekingForward")]
pub const RemoteControlEndSeekingForward: Self = Self(109);
}
unsafe impl Encode for UIEventSubtype {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for UIEventSubtype {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIEventButtonMask(pub NSInteger);
bitflags::bitflags! {
impl UIEventButtonMask: NSInteger {
#[doc(alias = "UIEventButtonMaskPrimary")]
const Primary = 1<<0;
#[doc(alias = "UIEventButtonMaskSecondary")]
const Secondary = 1<<1;
}
}
unsafe impl Encode for UIEventButtonMask {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for UIEventButtonMask {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
impl UIEventButtonMask {
#[doc(alias = "UIEventButtonMaskForButtonNumber")]
#[inline]
pub fn for_button_number(button_number: NSInteger) -> UIEventButtonMask {
extern "C-unwind" {
fn UIEventButtonMaskForButtonNumber(button_number: NSInteger) -> UIEventButtonMask;
}
unsafe { UIEventButtonMaskForButtonNumber(button_number) }
}
}
extern_class!(
#[unsafe(super(NSObject))]
#[thread_kind = MainThreadOnly]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct UIEvent;
);
extern_conformance!(
unsafe impl NSObjectProtocol for UIEvent {}
);
impl UIEvent {
extern_methods!(
#[unsafe(method(type))]
#[unsafe(method_family = none)]
pub fn r#type(&self) -> UIEventType;
#[unsafe(method(subtype))]
#[unsafe(method_family = none)]
pub fn subtype(&self) -> UIEventSubtype;
#[unsafe(method(timestamp))]
#[unsafe(method_family = none)]
pub fn timestamp(&self) -> NSTimeInterval;
#[cfg(feature = "UICommand")]
#[unsafe(method(modifierFlags))]
#[unsafe(method_family = none)]
pub fn modifierFlags(&self) -> UIKeyModifierFlags;
#[unsafe(method(buttonMask))]
#[unsafe(method_family = none)]
pub fn buttonMask(&self) -> UIEventButtonMask;
#[cfg(feature = "UITouch")]
#[unsafe(method(allTouches))]
#[unsafe(method_family = none)]
pub fn allTouches(&self) -> Option<Retained<NSSet<UITouch>>>;
#[cfg(all(
feature = "UIResponder",
feature = "UITouch",
feature = "UIView",
feature = "UIWindow"
))]
#[unsafe(method(touchesForWindow:))]
#[unsafe(method_family = none)]
pub fn touchesForWindow(&self, window: &UIWindow) -> Option<Retained<NSSet<UITouch>>>;
#[cfg(all(feature = "UIResponder", feature = "UITouch", feature = "UIView"))]
#[unsafe(method(touchesForView:))]
#[unsafe(method_family = none)]
pub fn touchesForView(&self, view: &UIView) -> Option<Retained<NSSet<UITouch>>>;
#[cfg(all(feature = "UIGestureRecognizer", feature = "UITouch"))]
#[unsafe(method(touchesForGestureRecognizer:))]
#[unsafe(method_family = none)]
pub fn touchesForGestureRecognizer(
&self,
gesture: &UIGestureRecognizer,
) -> Option<Retained<NSSet<UITouch>>>;
#[cfg(feature = "UITouch")]
#[unsafe(method(coalescedTouchesForTouch:))]
#[unsafe(method_family = none)]
pub fn coalescedTouchesForTouch(
&self,
touch: &UITouch,
) -> Option<Retained<NSArray<UITouch>>>;
#[cfg(feature = "UITouch")]
#[unsafe(method(predictedTouchesForTouch:))]
#[unsafe(method_family = none)]
pub fn predictedTouchesForTouch(
&self,
touch: &UITouch,
) -> Option<Retained<NSArray<UITouch>>>;
);
}
impl UIEvent {
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(mtm: MainThreadMarker) -> Retained<Self>;
);
}
#[deprecated = "renamed to `UIEventButtonMask::for_button_number`"]
#[inline]
pub extern "C-unwind" fn UIEventButtonMaskForButtonNumber(
button_number: NSInteger,
) -> UIEventButtonMask {
extern "C-unwind" {
fn UIEventButtonMaskForButtonNumber(button_number: NSInteger) -> UIEventButtonMask;
}
unsafe { UIEventButtonMaskForButtonNumber(button_number) }
}