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);
}
extern "C" {
pub fn UIEventButtonMaskForButtonNumber(button_number: NSInteger) -> UIEventButtonMask;
}
extern_class!(
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct UIEvent;
unsafe impl ClassType for UIEvent {
type Super = NSObject;
type Mutability = MainThreadOnly;
}
);
unsafe impl NSObjectProtocol for UIEvent {}
extern_methods!(
unsafe impl UIEvent {
#[method(type)]
pub unsafe fn r#type(&self) -> UIEventType;
#[method(subtype)]
pub unsafe fn subtype(&self) -> UIEventSubtype;
#[method(timestamp)]
pub unsafe fn timestamp(&self) -> NSTimeInterval;
#[cfg(feature = "UICommand")]
#[method(modifierFlags)]
pub unsafe fn modifierFlags(&self) -> UIKeyModifierFlags;
#[method(buttonMask)]
pub unsafe fn buttonMask(&self) -> UIEventButtonMask;
#[cfg(feature = "UITouch")]
#[method_id(@__retain_semantics Other allTouches)]
pub unsafe fn allTouches(&self) -> Option<Retained<NSSet<UITouch>>>;
#[cfg(all(
feature = "UIResponder",
feature = "UITouch",
feature = "UIView",
feature = "UIWindow"
))]
#[method_id(@__retain_semantics Other touchesForWindow:)]
pub unsafe fn touchesForWindow(
&self,
window: &UIWindow,
) -> Option<Retained<NSSet<UITouch>>>;
#[cfg(all(feature = "UIResponder", feature = "UITouch", feature = "UIView"))]
#[method_id(@__retain_semantics Other touchesForView:)]
pub unsafe fn touchesForView(&self, view: &UIView) -> Option<Retained<NSSet<UITouch>>>;
#[cfg(all(feature = "UIGestureRecognizer", feature = "UITouch"))]
#[method_id(@__retain_semantics Other touchesForGestureRecognizer:)]
pub unsafe fn touchesForGestureRecognizer(
&self,
gesture: &UIGestureRecognizer,
) -> Option<Retained<NSSet<UITouch>>>;
#[cfg(feature = "UITouch")]
#[method_id(@__retain_semantics Other coalescedTouchesForTouch:)]
pub unsafe fn coalescedTouchesForTouch(
&self,
touch: &UITouch,
) -> Option<Retained<NSArray<UITouch>>>;
#[cfg(feature = "UITouch")]
#[method_id(@__retain_semantics Other predictedTouchesForTouch:)]
pub unsafe fn predictedTouchesForTouch(
&self,
touch: &UITouch,
) -> Option<Retained<NSArray<UITouch>>>;
}
);
extern_methods!(
unsafe impl UIEvent {
#[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(mtm: MainThreadMarker) -> Retained<Self>;
}
);