From: Zhiyi Zhang <zzhang@codeweavers.com> --- include/Makefile.in | 1 + include/windows.graphics.display.idl | 229 +++++++++++++++++++++++++++ 2 files changed, 230 insertions(+) create mode 100644 include/windows.graphics.display.idl diff --git a/include/Makefile.in b/include/Makefile.in index 626091317f9..fb2c59bfcb2 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -911,6 +911,7 @@ SOURCES = \ windows.graphics.capture.interop.idl \ windows.graphics.directx.direct3d11.idl \ windows.graphics.directx.idl \ + windows.graphics.display.idl \ windows.graphics.effects.idl \ windows.graphics.holographic.idl \ windows.graphics.idl \ diff --git a/include/windows.graphics.display.idl b/include/windows.graphics.display.idl new file mode 100644 index 00000000000..7a9750cc9d4 --- /dev/null +++ b/include/windows.graphics.display.idl @@ -0,0 +1,229 @@ +/* + * Copyright 2026 Zhiyi Zhang for CodeWeavers + * + * 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 + */ + +#ifdef __WIDL__ +#pragma winrt ns_prefix +#endif + +import "inspectable.idl"; +import "asyncinfo.idl"; +import "eventtoken.idl"; +import "windowscontracts.idl"; +import "windows.foundation.idl"; +import "windows.graphics.idl"; +import "windows.storage.streams.idl"; + +namespace Windows.Graphics.Display { + typedef enum AdvancedColorKind AdvancedColorKind; + typedef enum DisplayOrientations DisplayOrientations; + typedef enum HdrMetadataFormat HdrMetadataFormat; + typedef enum ResolutionScale ResolutionScale; + + interface IAdvancedColorInfo; + interface IDisplayInformationStatics; + + runtimeclass AdvancedColorInfo; + runtimeclass DisplayInformation; + + declare { + interface Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.DisplayInformation *, IInspectable *>; + } + + [ + contract(Windows.Foundation.UniversalApiContract, 6.0) + ] + enum AdvancedColorKind + { + StandardDynamicRange = 0, + WideColorGamut = 1, + HighDynamicRange = 2 + }; + + [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + flags + ] + enum DisplayOrientations + { + None = 0x0, + Landscape = 0x1, + Portrait = 0x2, + LandscapeFlipped = 0x4, + PortraitFlipped = 0x8 + }; + + [ + contract(Windows.Foundation.UniversalApiContract, 6.0) + ] + enum HdrMetadataFormat + { + Hdr10 = 0, + Hdr10Plus = 1 + }; + + [ + contract(Windows.Foundation.UniversalApiContract, 1.0) + ] + enum ResolutionScale + { + Invalid = 0, + Scale100Percent = 100, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale120Percent = 120, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale125Percent = 125, + Scale140Percent = 140, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale150Percent = 150, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale160Percent = 160, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale175Percent = 175, + Scale180Percent = 180, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale200Percent = 200, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale225Percent = 225, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale250Percent = 250, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale300Percent = 300, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale350Percent = 350, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale400Percent = 400, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale450Percent = 450, + [contract(Windows.Foundation.UniversalApiContract, 1.0)] Scale500Percent = 500 + }; + + [ + contract(Windows.Foundation.UniversalApiContract, 6.0), + exclusiveto(Windows.Graphics.Display.AdvancedColorInfo), + uuid(8797dcfb-b229-4081-ae9a-2cc85e34ad6a) + ] + interface IAdvancedColorInfo : IInspectable + { + [propget] HRESULT CurrentAdvancedColorKind([out, retval] Windows.Graphics.Display.AdvancedColorKind *value); + [propget] HRESULT RedPrimary([out, retval] Windows.Foundation.Point *value); + [propget] HRESULT GreenPrimary([out, retval] Windows.Foundation.Point *value); + [propget] HRESULT BluePrimary([out, retval] Windows.Foundation.Point *value); + [propget] HRESULT WhitePoint([out, retval] Windows.Foundation.Point *value); + [propget] HRESULT MaxLuminanceInNits([out, retval] FLOAT *value); + [propget] HRESULT MinLuminanceInNits([out, retval] FLOAT *value); + [propget] HRESULT MaxAverageFullFrameLuminanceInNits([out, retval] FLOAT *value); + [propget] HRESULT SdrWhiteLevelInNits([out, retval] FLOAT *value); + HRESULT IsHdrMetadataFormatCurrentlySupported([in] Windows.Graphics.Display.HdrMetadataFormat format, [out, retval] boolean *result); + HRESULT IsAdvancedColorKindAvailable([in] Windows.Graphics.Display.AdvancedColorKind kind, [out, retval] boolean *result); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + exclusiveto(Windows.Graphics.Display.DisplayInformation), + uuid(bed112ae-adc3-4dc9-ae65-851f4d7d4799) + ] + interface IDisplayInformation : IInspectable + { + [propget] HRESULT CurrentOrientation([out, retval] Windows.Graphics.Display.DisplayOrientations *value); + [propget] HRESULT NativeOrientation([out, retval] Windows.Graphics.Display.DisplayOrientations *value); + [eventadd] HRESULT OrientationChanged([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.DisplayInformation *, IInspectable *> *handler, [out, retval] EventRegistrationToken *token); + [eventremove] HRESULT OrientationChanged([in] EventRegistrationToken token); + [propget] HRESULT ResolutionScale([out, retval] Windows.Graphics.Display.ResolutionScale *value); + [propget] HRESULT LogicalDpi([out, retval] FLOAT *value); + [propget] HRESULT RawDpiX([out, retval] FLOAT *value); + [propget] HRESULT RawDpiY([out, retval] FLOAT *value); + [eventadd] HRESULT DpiChanged([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.DisplayInformation *, IInspectable *> *handler, [out, retval] EventRegistrationToken *token); + [eventremove] HRESULT DpiChanged([in] EventRegistrationToken token); + [propget] HRESULT StereoEnabled([out, retval] boolean *value); + [eventadd] HRESULT StereoEnabledChanged([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.DisplayInformation *, IInspectable *> *handler, [out, retval] EventRegistrationToken *token); + [eventremove] HRESULT StereoEnabledChanged([in] EventRegistrationToken token); + HRESULT GetColorProfileAsync([out, retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IRandomAccessStream *> **async_info); + [eventadd] HRESULT ColorProfileChanged([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.DisplayInformation *, IInspectable *> *handler, [out, retval] EventRegistrationToken *token); + [eventremove] HRESULT ColorProfileChanged([in] EventRegistrationToken token); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + exclusiveto(Windows.Graphics.Display.DisplayInformation), + uuid(4dcd0021-fad1-4b8e-8edf-775887b8bf19) + ] + interface IDisplayInformation2 : IInspectable + requires Windows.Graphics.Display.IDisplayInformation + { + [propget] HRESULT RawPixelsPerViewPixel([out, retval] DOUBLE *value); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + exclusiveto(Windows.Graphics.Display.DisplayInformation), + uuid(db15011d-0f09-4466-8ff3-11de9a3c929a) + ] + interface IDisplayInformation3 : IInspectable + { + [propget] HRESULT DiagonalSizeInInches([out, retval] Windows.Foundation.IReference<DOUBLE> **value); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 3.0), + exclusiveto(Windows.Graphics.Display.DisplayInformation), + uuid(c972ce2f-1242-46be-b536-e1aafe9e7acf) + ] + interface IDisplayInformation4 : IInspectable + { + [propget] HRESULT ScreenWidthInRawPixels([out, retval] UINT32 *value); + [propget] HRESULT ScreenHeightInRawPixels([out, retval] UINT32 *value); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 6.0), + exclusiveto(Windows.Graphics.Display.DisplayInformation), + uuid(3a5442dc-2cde-4a8d-80d1-21dc5adcc1aa) + ] + interface IDisplayInformation5 : IInspectable + { + HRESULT GetAdvancedColorInfo([out, retval] Windows.Graphics.Display.AdvancedColorInfo **value); + [eventadd] HRESULT AdvancedColorInfoChanged([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.DisplayInformation *, IInspectable *> *handler, [out, retval] EventRegistrationToken *token); + [eventremove] HRESULT AdvancedColorInfoChanged([in] EventRegistrationToken token); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + exclusiveto(Windows.Graphics.Display.DisplayInformation), + uuid(c6a02a6c-d452-44dc-ba07-96f3c6adf9d1) + ] + interface IDisplayInformationStatics : IInspectable + { + HRESULT GetForCurrentView([out, retval] Windows.Graphics.Display.DisplayInformation **current); + [propget] HRESULT AutoRotationPreferences([out, retval] Windows.Graphics.Display.DisplayOrientations *value); + [propput] HRESULT AutoRotationPreferences([in] Windows.Graphics.Display.DisplayOrientations value); + [eventadd] HRESULT DisplayContentsInvalidated([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.DisplayInformation *, IInspectable *> *handler, [out, retval] EventRegistrationToken *token); + [eventremove] HRESULT DisplayContentsInvalidated([in] EventRegistrationToken token); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 6.0), + marshaling_behavior(agile), + threading(both) + ] + runtimeclass AdvancedColorInfo + { + [default] interface Windows.Graphics.Display.IAdvancedColorInfo; + } + + [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + marshaling_behavior(agile), + static(Windows.Graphics.Display.IDisplayInformationStatics, Windows.Foundation.UniversalApiContract, 1.0) + ] + runtimeclass DisplayInformation + { + [default] interface Windows.Graphics.Display.IDisplayInformation; + [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Graphics.Display.IDisplayInformation2; + [contract(Windows.Foundation.UniversalApiContract, 2.0)] interface Windows.Graphics.Display.IDisplayInformation3; + [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Graphics.Display.IDisplayInformation4; + [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Graphics.Display.IDisplayInformation5; + } +} -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10234