From: Ignacy Kuchciński <ignacykuchcinski@gmail.com> --- include/Makefile.in | 1 + include/radialcontrollerinterop.idl | 39 +++++++++++++++ include/windows.ui.input.idl | 74 +++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 include/radialcontrollerinterop.idl diff --git a/include/Makefile.in b/include/Makefile.in index 9a4a00ceed8..ad11e4b6ab6 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -677,6 +677,7 @@ SOURCES = \ pstore.idl \ qedit.idl \ qos2.h \ + radialcontrollerinterop.idl \ ras.h \ rasdlg.h \ raserror.h \ diff --git a/include/radialcontrollerinterop.idl b/include/radialcontrollerinterop.idl new file mode 100644 index 00000000000..de54b5ec095 --- /dev/null +++ b/include/radialcontrollerinterop.idl @@ -0,0 +1,39 @@ +/* + * 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), + object, + local +] +interface IRadialControllerInterop : IInspectable +{ + HRESULT CreateForWindow([in, annotation("__in")] HWND window, [in, annotation("__in")] REFIID riid, [out, retval, iid_is(riid), annotation("__com_outptr")] void **radialcontroller); +} + +[ + uuid(787cdaac-3186-476d-87e4-b9374a7b9970), + object, + local +] +interface IRadialControllerConfigurationInterop : IInspectable +{ + HRESULT GetForWindow([in, annotation("__in")] HWND window, [in, annotation("__in")] REFIID riid, [out, retval, iid_is(riid), annotation("__com_outptr")] void **radialcontrollerconfiguration); +} diff --git a/include/windows.ui.input.idl b/include/windows.ui.input.idl index f396a3ce8a7..df05acadb6b 100644 --- a/include/windows.ui.input.idl +++ b/include/windows.ui.input.idl @@ -38,9 +38,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 *>; @@ -148,6 +156,38 @@ 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 + { + /* HRESULT GetForCurrentView([out, retval] Windows.UI.Input.RadialControllerConfiguration **configuration); */ + } + + [ + contract(Windows.Foundation.UniversalApiContract, 3.0), + exclusiveto(Windows.UI.Input.RadialControllerMenuItem), + uuid(249e0887-d842-4524-9df8-e0d647edc887) + ] + interface IRadialControllerMenuItemStatics : IInspectable + { + /* HRESULT CreateFromIcon([in] HSTRING display_text, [in] Windows.Storage.Streams.RandomAccessStreamReference *icon, [out, retval] Windows.UI.Input.RadialControllerMenuItem **result); */ + /* HRESULT CreateFromKnownIcon([in] HSTRING display_text, [in] Windows.UI.Input.RadialControllerMenuKnownIcon value, [out, retval] Windows.UI.Input.RadialControllerMenuItem **result); */ + } + + [ + contract(Windows.Foundation.UniversalApiContract, 3.0), + exclusiveto(Windows.UI.Input.RadialController), + uuid(faded0b7-b84c-4894-87aa-8f25aa5f288b) + ] + interface IRadialControllerStatics : IInspectable + { + /* HRESULT IsSupported([out, retval] boolean *result); */ + /* HRESULT CreateForCurrentView([out, retval] Windows.UI.Input.RadialController **result); */ + } + [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(none), @@ -167,4 +207,38 @@ namespace Windows.UI.Input { [default] interface Windows.UI.Input.IPointerPointProperties; [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.UI.Input.IPointerPointProperties2; } + + [ + contract(Windows.Foundation.UniversalApiContract, 3.0), + marshaling_behavior(agile), + static(Windows.UI.Input.IRadialControllerStatics, Windows.Foundation.UniversalApiContract, 3.0) + ] + runtimeclass RadialController + { + /* [default] interface Windows.UI.Input.IRadialController; */ + /* [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.UI.Input.IRadialController2; */ + } + + [ + contract(Windows.Foundation.UniversalApiContract, 3.0), + marshaling_behavior(agile), + static(Windows.UI.Input.IRadialControllerConfigurationStatics, Windows.Foundation.UniversalApiContract, 3.0), + /* static(Windows.UI.Input.IRadialControllerConfigurationStatics2, Windows.Foundation.UniversalApiContract, 5.0) */ + ] + runtimeclass RadialControllerConfiguration + { + /* [default] interface Windows.UI.Input.IRadialControllerConfiguration; */ + /* [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.UI.Input.IRadialControllerConfiguration2; */ + } + + [ + contract(Windows.Foundation.UniversalApiContract, 3.0), + marshaling_behavior(agile), + static(Windows.UI.Input.IRadialControllerMenuItemStatics, Windows.Foundation.UniversalApiContract, 3.0), + /* static(Windows.UI.Input.IRadialControllerMenuItemStatics2, Windows.Foundation.UniversalApiContract, 4.0) */ + ] + runtimeclass RadialControllerMenuItem + { + /* [default] interface Windows.UI.Input.IRadialControllerMenuItem; */ + } } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/8394