From: Ignacy Kuchciński ignacykuchcinski@gmail.com
--- include/Makefile.in | 2 + .../radialcontrollerconfigurationinterop.idl | 27 ++++++++ include/radialcontrollerinterop.idl | 27 ++++++++ include/windows.ui.input.idl | 63 +++++++++++++++++++ 4 files changed, 119 insertions(+) create mode 100644 include/radialcontrollerconfigurationinterop.idl create mode 100644 include/radialcontrollerinterop.idl
diff --git a/include/Makefile.in b/include/Makefile.in index 650d69815f8..cb2c12fef7f 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -663,6 +663,8 @@ SOURCES = \ pstore.idl \ qedit.idl \ qos2.h \ + radialcontrollerinterop.idl \ + radialcontrollerconfigurationinterop.idl \ ras.h \ rasdlg.h \ raserror.h \ diff --git a/include/radialcontrollerconfigurationinterop.idl b/include/radialcontrollerconfigurationinterop.idl new file mode 100644 index 00000000000..3d427b9f3ab --- /dev/null +++ b/include/radialcontrollerconfigurationinterop.idl @@ -0,0 +1,27 @@ +/* + * Copyright 2025 Ignacy Kuchciński + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "inspectable.idl"; + +[ + uuid(787cdaac-3186-476d-87e4-b9374a7b9970) +] +interface IRadialControllerConfigurationInterop : IInspectable +{ + HRESULT GetForWindow([in] HWND window, [in] REFIID riid, [out, retval, iid_is(riid)] void **radialcontrollerconfiguration); +} diff --git a/include/radialcontrollerinterop.idl b/include/radialcontrollerinterop.idl new file mode 100644 index 00000000000..d5ba5f54922 --- /dev/null +++ b/include/radialcontrollerinterop.idl @@ -0,0 +1,27 @@ +/* + * Copyright 2025 Ignacy Kuchciński + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "inspectable.idl"; + +[ + uuid(1b0535c9-57ad-45c1-9d79-ad5c34360513) +] +interface IRadialControllerInterop : IInspectable +{ + HRESULT GetForWindow([in] HWND window, [in] REFIID riid, [out, retval, iid_is(riid)] void **radialcontroller); +} diff --git a/include/windows.ui.input.idl b/include/windows.ui.input.idl index f160671f232..256d8bc243a 100644 --- a/include/windows.ui.input.idl +++ b/include/windows.ui.input.idl @@ -40,9 +40,17 @@ namespace Windows.UI.Input { interface IPointerPointStatics; interface IPointerPointTransform;
+ interface IRadialControllerConfigurationStatics; + interface IRadialControllerMenuItemStatics; + interface IRadialControllerStatics; + runtimeclass PointerPoint; runtimeclass PointerPointProperties;
+ runtimeclass RadialController; + runtimeclass RadialControllerConfiguration; + runtimeclass RadialControllerMenuItem; + declare { interface Windows.Foundation.Collections.IVectorView<Windows.UI.Input.PointerPoint *>; interface Windows.Foundation.Collections.IVector<Windows.UI.Input.PointerPoint *>; @@ -150,6 +158,33 @@ namespace Windows.UI.Input { HRESULT TransformBounds([in] Windows.Foundation.Rect rect, [out, retval] Windows.Foundation.Rect *value); }
+ [ + contract(Windows.Foundation.UniversalApiContract, 3.0), + exclusiveto(Windows.UI.Input.RadialControllerConfiguration), + uuid(79b6b0e5-069a-4486-a99d-8db772b9642f) + ] + interface IRadialControllerConfigurationStatics : IInspectable + { + } + + [ + contract(Windows.Foundation.UniversalApiContract, 3.0), + exclusiveto(Windows.UI.Input.RadialControllerMenuItem), + uuid(249e0887-d842-4524-9df8-e0d647edc887) + ] + interface IRadialControllerMenuItemStatics : IInspectable + { + } + + [ + contract(Windows.Foundation.UniversalApiContract, 3.0), + exclusiveto(Windows.UI.Input.RadialController), + uuid(faded0b7-b84c-4894-87aa-8f25aa5f288b) + ] + interface IRadialControllerStatics : IInspectable + { + } + [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(none), @@ -169,4 +204,32 @@ namespace Windows.UI.Input { [default] interface Windows.UI.Input.IPointerPointProperties; [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.UI.Input.IPointerPointProperties2; } + + [ + static(Windows.UI.Input.IRadialControllerStatics, Windows.Foundation.UniversalApiContract, 3.0), + contract(Windows.Foundation.UniversalApiContract, 3.0), + marshaling_behavior(agile) + ] + runtimeclass RadialController + { + } + + [ + static(Windows.UI.Input.IRadialControllerConfigurationStatics, Windows.Foundation.UniversalApiContract, 3.0), + contract(Windows.Foundation.UniversalApiContract, 3.0), + marshaling_behavior(agile) + ] + runtimeclass RadialControllerConfiguration + { + } + + + [ + static(Windows.UI.Input.IRadialControllerMenuItemStatics, Windows.Foundation.UniversalApiContract, 3.0), + contract(Windows.Foundation.UniversalApiContract, 3.0), + marshaling_behavior(agile) + ] + runtimeclass RadialControllerMenuItem + { + } }