#![allow(
non_snake_case,
non_upper_case_globals,
non_camel_case_types,
dead_code,
clippy::all
)]
windows_core::imp::define_interface!(
IPointer,
IPointer_Vtbl,
0x1f9afbf5_11a3_5e68_aa1b_72febfa0ab23
);
impl windows_core::RuntimeType for IPointer {
const SIGNATURE: windows_core::imp::ConstBuffer =
windows_core::imp::ConstBuffer::for_interface::<Self>();
}
#[cfg(feature = "UI_Input")]
impl windows_core::RuntimeName for IPointer {
const NAME: &'static str = "Microsoft.UI.Xaml.Input.IPointer";
}
#[cfg(feature = "UI_Input")]
pub trait IPointer_Impl: windows_core::IUnknownImpl {
fn PointerId(&self) -> windows_core::Result<u32>;
fn PointerDeviceType(&self) -> windows_core::Result<super::super::Input::PointerDeviceType>;
fn IsInContact(&self) -> windows_core::Result<bool>;
fn IsInRange(&self) -> windows_core::Result<bool>;
}
#[cfg(feature = "UI_Input")]
impl IPointer_Vtbl {
pub const fn new<Identity: IPointer_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn PointerId<Identity: IPointer_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
result__: *mut u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IPointer_Impl::PointerId(this) {
Ok(ok__) => {
result__.write(core::mem::transmute_copy(&ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn PointerDeviceType<
Identity: IPointer_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
result__: *mut super::super::Input::PointerDeviceType,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IPointer_Impl::PointerDeviceType(this) {
Ok(ok__) => {
result__.write(core::mem::transmute_copy(&ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn IsInContact<Identity: IPointer_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
result__: *mut bool,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IPointer_Impl::IsInContact(this) {
Ok(ok__) => {
result__.write(core::mem::transmute_copy(&ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn IsInRange<Identity: IPointer_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
result__: *mut bool,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IPointer_Impl::IsInRange(this) {
Ok(ok__) => {
result__.write(core::mem::transmute_copy(&ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
Self {
base__: windows_core::IInspectable_Vtbl::new::<Identity, IPointer, OFFSET>(),
PointerId: PointerId::<Identity, OFFSET>,
PointerDeviceType: PointerDeviceType::<Identity, OFFSET>,
IsInContact: IsInContact::<Identity, OFFSET>,
IsInRange: IsInRange::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IPointer as windows_core::Interface>::IID
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IPointer_Vtbl {
pub base__: windows_core::IInspectable_Vtbl,
pub PointerId:
unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
#[cfg(feature = "UI_Input")]
pub PointerDeviceType: unsafe extern "system" fn(
*mut core::ffi::c_void,
*mut super::super::Input::PointerDeviceType,
) -> windows_core::HRESULT,
#[cfg(not(feature = "UI_Input"))]
PointerDeviceType: usize,
pub IsInContact:
unsafe extern "system" fn(*mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
pub IsInRange:
unsafe extern "system" fn(*mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
}
windows_core::imp::define_interface!(
IPointerRoutedEventArgs,
IPointerRoutedEventArgs_Vtbl,
0x66e78a9a_1bec_5f92_b1a1_ea6334ee511c
);
impl windows_core::RuntimeType for IPointerRoutedEventArgs {
const SIGNATURE: windows_core::imp::ConstBuffer =
windows_core::imp::ConstBuffer::for_interface::<Self>();
}
#[cfg(all(feature = "UI_Composition", feature = "UI_Input"))]
impl windows_core::RuntimeName for IPointerRoutedEventArgs {
const NAME: &'static str = "Microsoft.UI.Xaml.Input.IPointerRoutedEventArgs";
}
#[cfg(all(feature = "UI_Composition", feature = "UI_Input"))]
pub trait IPointerRoutedEventArgs_Impl: windows_core::IUnknownImpl {
fn Pointer(&self) -> windows_core::Result<Pointer>;
fn KeyModifiers(&self) -> windows_core::Result<windows::System::VirtualKeyModifiers>;
fn Handled(&self) -> windows_core::Result<bool>;
fn SetHandled(&self, value: bool) -> windows_core::Result<()>;
fn IsGenerated(&self) -> windows_core::Result<bool>;
fn GetCurrentPoint(
&self,
relativeTo: windows_core::Ref<super::UIElement>,
) -> windows_core::Result<super::super::Input::PointerPoint>;
fn GetIntermediatePoints(
&self,
relativeTo: windows_core::Ref<super::UIElement>,
) -> windows_core::Result<windows_collections::IVector<super::super::Input::PointerPoint>>;
}
#[cfg(all(feature = "UI_Composition", feature = "UI_Input"))]
impl IPointerRoutedEventArgs_Vtbl {
pub const fn new<Identity: IPointerRoutedEventArgs_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn Pointer<
Identity: IPointerRoutedEventArgs_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
result__: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IPointerRoutedEventArgs_Impl::Pointer(this) {
Ok(ok__) => {
result__.write(core::mem::transmute_copy(&ok__));
core::mem::forget(ok__);
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn KeyModifiers<
Identity: IPointerRoutedEventArgs_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
result__: *mut windows::System::VirtualKeyModifiers,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IPointerRoutedEventArgs_Impl::KeyModifiers(this) {
Ok(ok__) => {
result__.write(core::mem::transmute_copy(&ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn Handled<
Identity: IPointerRoutedEventArgs_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
result__: *mut bool,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IPointerRoutedEventArgs_Impl::Handled(this) {
Ok(ok__) => {
result__.write(core::mem::transmute_copy(&ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn SetHandled<
Identity: IPointerRoutedEventArgs_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
value: bool,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IPointerRoutedEventArgs_Impl::SetHandled(this, value).into()
}
}
unsafe extern "system" fn IsGenerated<
Identity: IPointerRoutedEventArgs_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
result__: *mut bool,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IPointerRoutedEventArgs_Impl::IsGenerated(this) {
Ok(ok__) => {
result__.write(core::mem::transmute_copy(&ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn GetCurrentPoint<
Identity: IPointerRoutedEventArgs_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
relativeto: *mut core::ffi::c_void,
result__: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IPointerRoutedEventArgs_Impl::GetCurrentPoint(
this,
core::mem::transmute_copy(&relativeto),
) {
Ok(ok__) => {
result__.write(core::mem::transmute_copy(&ok__));
core::mem::forget(ok__);
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn GetIntermediatePoints<
Identity: IPointerRoutedEventArgs_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
relativeto: *mut core::ffi::c_void,
result__: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IPointerRoutedEventArgs_Impl::GetIntermediatePoints(
this,
core::mem::transmute_copy(&relativeto),
) {
Ok(ok__) => {
result__.write(core::mem::transmute_copy(&ok__));
core::mem::forget(ok__);
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
Self {
base__: windows_core::IInspectable_Vtbl::new::<Identity, IPointerRoutedEventArgs, OFFSET>(
),
Pointer: Pointer::<Identity, OFFSET>,
KeyModifiers: KeyModifiers::<Identity, OFFSET>,
Handled: Handled::<Identity, OFFSET>,
SetHandled: SetHandled::<Identity, OFFSET>,
IsGenerated: IsGenerated::<Identity, OFFSET>,
GetCurrentPoint: GetCurrentPoint::<Identity, OFFSET>,
GetIntermediatePoints: GetIntermediatePoints::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IPointerRoutedEventArgs as windows_core::Interface>::IID
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IPointerRoutedEventArgs_Vtbl {
pub base__: windows_core::IInspectable_Vtbl,
pub Pointer: unsafe extern "system" fn(
*mut core::ffi::c_void,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
pub KeyModifiers: unsafe extern "system" fn(
*mut core::ffi::c_void,
*mut windows::System::VirtualKeyModifiers,
) -> windows_core::HRESULT,
pub Handled:
unsafe extern "system" fn(*mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
pub SetHandled:
unsafe extern "system" fn(*mut core::ffi::c_void, bool) -> windows_core::HRESULT,
pub IsGenerated:
unsafe extern "system" fn(*mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
#[cfg(all(feature = "UI_Composition", feature = "UI_Input"))]
pub GetCurrentPoint: unsafe extern "system" fn(
*mut core::ffi::c_void,
*mut core::ffi::c_void,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
#[cfg(not(all(feature = "UI_Composition", feature = "UI_Input")))]
GetCurrentPoint: usize,
#[cfg(all(feature = "UI_Composition", feature = "UI_Input"))]
pub GetIntermediatePoints: unsafe extern "system" fn(
*mut core::ffi::c_void,
*mut core::ffi::c_void,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
#[cfg(not(all(feature = "UI_Composition", feature = "UI_Input")))]
GetIntermediatePoints: usize,
}
#[repr(transparent)]
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Pointer(windows_core::IUnknown);
windows_core::imp::interface_hierarchy!(
Pointer,
windows_core::IUnknown,
windows_core::IInspectable
);
impl Pointer {
pub fn PointerId(&self) -> windows_core::Result<u32> {
let this = self;
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(this).PointerId)(
windows_core::Interface::as_raw(this),
&mut result__,
)
.map(|| result__)
}
}
#[cfg(feature = "UI_Input")]
pub fn PointerDeviceType(
&self,
) -> windows_core::Result<super::super::Input::PointerDeviceType> {
let this = self;
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(this).PointerDeviceType)(
windows_core::Interface::as_raw(this),
&mut result__,
)
.map(|| result__)
}
}
pub fn IsInContact(&self) -> windows_core::Result<bool> {
let this = self;
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(this).IsInContact)(
windows_core::Interface::as_raw(this),
&mut result__,
)
.map(|| result__)
}
}
pub fn IsInRange(&self) -> windows_core::Result<bool> {
let this = self;
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(this).IsInRange)(
windows_core::Interface::as_raw(this),
&mut result__,
)
.map(|| result__)
}
}
}
impl windows_core::RuntimeType for Pointer {
const SIGNATURE: windows_core::imp::ConstBuffer =
windows_core::imp::ConstBuffer::for_class::<Self, IPointer>();
}
unsafe impl windows_core::Interface for Pointer {
type Vtable = <IPointer as windows_core::Interface>::Vtable;
const IID: windows_core::GUID = <IPointer as windows_core::Interface>::IID;
}
impl windows_core::RuntimeName for Pointer {
const NAME: &'static str = "Microsoft.UI.Xaml.Input.Pointer";
}
unsafe impl Send for Pointer {}
unsafe impl Sync for Pointer {}
windows_core::imp::define_interface!(
PointerEventHandler,
PointerEventHandler_Vtbl,
0xa48a71e1_8bb4_5597_9e31_903a3f6a04fb
);
impl windows_core::RuntimeType for PointerEventHandler {
const SIGNATURE: windows_core::imp::ConstBuffer =
windows_core::imp::ConstBuffer::for_interface::<Self>();
}
impl PointerEventHandler {
pub fn new<
F: Fn(
windows_core::Ref<windows_core::IInspectable>,
windows_core::Ref<PointerRoutedEventArgs>,
) -> windows_core::Result<()>
+ Send
+ 'static,
>(
invoke: F,
) -> Self {
let com = PointerEventHandlerBox {
vtable: &PointerEventHandlerBox::<F>::VTABLE,
count: windows_core::imp::RefCount::new(1),
invoke,
};
unsafe { core::mem::transmute(windows_core::imp::Box::new(com)) }
}
pub fn Invoke<P0, P1>(&self, sender: P0, e: P1) -> windows_core::Result<()>
where
P0: windows_core::Param<windows_core::IInspectable>,
P1: windows_core::Param<PointerRoutedEventArgs>,
{
let this = self;
unsafe {
(windows_core::Interface::vtable(this).Invoke)(
windows_core::Interface::as_raw(this),
sender.param().abi(),
e.param().abi(),
)
.ok()
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct PointerEventHandler_Vtbl {
base__: windows_core::IUnknown_Vtbl,
Invoke: unsafe extern "system" fn(
this: *mut core::ffi::c_void,
sender: *mut core::ffi::c_void,
e: *mut core::ffi::c_void,
) -> windows_core::HRESULT,
}
#[repr(C)]
struct PointerEventHandlerBox<
F: Fn(
windows_core::Ref<windows_core::IInspectable>,
windows_core::Ref<PointerRoutedEventArgs>,
) -> windows_core::Result<()>
+ Send
+ 'static,
> {
vtable: *const PointerEventHandler_Vtbl,
invoke: F,
count: windows_core::imp::RefCount,
}
impl<
F: Fn(
windows_core::Ref<windows_core::IInspectable>,
windows_core::Ref<PointerRoutedEventArgs>,
) -> windows_core::Result<()>
+ Send
+ 'static,
> PointerEventHandlerBox<F>
{
const VTABLE: PointerEventHandler_Vtbl = PointerEventHandler_Vtbl {
base__: windows_core::IUnknown_Vtbl {
QueryInterface: Self::QueryInterface,
AddRef: Self::AddRef,
Release: Self::Release,
},
Invoke: Self::Invoke,
};
unsafe extern "system" fn QueryInterface(
this: *mut core::ffi::c_void,
iid: *const windows_core::GUID,
interface: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this = this as *mut *mut core::ffi::c_void as *mut Self;
if iid.is_null() || interface.is_null() {
return windows_core::HRESULT(-2147467261);
}
*interface = if *iid == <PointerEventHandler as windows_core::Interface>::IID
|| *iid == <windows_core::IUnknown as windows_core::Interface>::IID
|| *iid == <windows_core::imp::IAgileObject as windows_core::Interface>::IID
{
&mut (*this).vtable as *mut _ as _
} else if *iid == <windows_core::imp::IMarshal as windows_core::Interface>::IID {
(*this).count.add_ref();
return windows_core::imp::marshaler(
core::mem::transmute(&mut (*this).vtable as *mut _ as *mut core::ffi::c_void),
interface,
);
} else {
core::ptr::null_mut()
};
if (*interface).is_null() {
windows_core::HRESULT(-2147467262)
} else {
(*this).count.add_ref();
windows_core::HRESULT(0)
}
}
}
unsafe extern "system" fn AddRef(this: *mut core::ffi::c_void) -> u32 {
unsafe {
let this = this as *mut *mut core::ffi::c_void as *mut Self;
(*this).count.add_ref()
}
}
unsafe extern "system" fn Release(this: *mut core::ffi::c_void) -> u32 {
unsafe {
let this = this as *mut *mut core::ffi::c_void as *mut Self;
let remaining = (*this).count.release();
if remaining == 0 {
let _ = windows_core::imp::Box::from_raw(this);
}
remaining
}
}
unsafe extern "system" fn Invoke(
this: *mut core::ffi::c_void,
sender: *mut core::ffi::c_void,
e: *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this = &mut *(this as *mut *mut core::ffi::c_void as *mut Self);
(this.invoke)(
core::mem::transmute_copy(&sender),
core::mem::transmute_copy(&e),
)
.into()
}
}
}
#[repr(transparent)]
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct PointerRoutedEventArgs(windows_core::IUnknown);
windows_core::imp::interface_hierarchy!(
PointerRoutedEventArgs,
windows_core::IUnknown,
windows_core::IInspectable
);
windows_core::imp::required_hierarchy!(PointerRoutedEventArgs, super::RoutedEventArgs);
impl PointerRoutedEventArgs {
pub fn Pointer(&self) -> windows_core::Result<Pointer> {
let this = self;
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(this).Pointer)(
windows_core::Interface::as_raw(this),
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
pub fn KeyModifiers(&self) -> windows_core::Result<windows::System::VirtualKeyModifiers> {
let this = self;
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(this).KeyModifiers)(
windows_core::Interface::as_raw(this),
&mut result__,
)
.map(|| result__)
}
}
pub fn Handled(&self) -> windows_core::Result<bool> {
let this = self;
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(this).Handled)(
windows_core::Interface::as_raw(this),
&mut result__,
)
.map(|| result__)
}
}
pub fn SetHandled(&self, value: bool) -> windows_core::Result<()> {
let this = self;
unsafe {
(windows_core::Interface::vtable(this).SetHandled)(
windows_core::Interface::as_raw(this),
value,
)
.ok()
}
}
pub fn IsGenerated(&self) -> windows_core::Result<bool> {
let this = self;
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(this).IsGenerated)(
windows_core::Interface::as_raw(this),
&mut result__,
)
.map(|| result__)
}
}
#[cfg(all(feature = "UI_Composition", feature = "UI_Input"))]
pub fn GetCurrentPoint<P0>(
&self,
relativeto: P0,
) -> windows_core::Result<super::super::Input::PointerPoint>
where
P0: windows_core::Param<super::UIElement>,
{
let this = self;
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(this).GetCurrentPoint)(
windows_core::Interface::as_raw(this),
relativeto.param().abi(),
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
#[cfg(all(feature = "UI_Composition", feature = "UI_Input"))]
pub fn GetIntermediatePoints<P0>(
&self,
relativeto: P0,
) -> windows_core::Result<windows_collections::IVector<super::super::Input::PointerPoint>>
where
P0: windows_core::Param<super::UIElement>,
{
let this = self;
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(this).GetIntermediatePoints)(
windows_core::Interface::as_raw(this),
relativeto.param().abi(),
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
pub fn OriginalSource(&self) -> windows_core::Result<windows_core::IInspectable> {
let this = &windows_core::Interface::cast::<super::IRoutedEventArgs>(self)?;
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(this).OriginalSource)(
windows_core::Interface::as_raw(this),
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
}
impl windows_core::RuntimeType for PointerRoutedEventArgs {
const SIGNATURE: windows_core::imp::ConstBuffer =
windows_core::imp::ConstBuffer::for_class::<Self, IPointerRoutedEventArgs>();
}
unsafe impl windows_core::Interface for PointerRoutedEventArgs {
type Vtable = <IPointerRoutedEventArgs as windows_core::Interface>::Vtable;
const IID: windows_core::GUID = <IPointerRoutedEventArgs as windows_core::Interface>::IID;
}
impl windows_core::RuntimeName for PointerRoutedEventArgs {
const NAME: &'static str = "Microsoft.UI.Xaml.Input.PointerRoutedEventArgs";
}
unsafe impl Send for PointerRoutedEventArgs {}
unsafe impl Sync for PointerRoutedEventArgs {}