//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Display
        {
            namespace Core
            {
                typedef enum HdmiDisplayColorSpace HdmiDisplayColorSpace;

                typedef enum HdmiDisplayHdrOption HdmiDisplayHdrOption;

                typedef enum HdmiDisplayPixelEncoding HdmiDisplayPixelEncoding;

                typedef struct HdmiDisplayHdr2086Metadata HdmiDisplayHdr2086Metadata;

                interface IHdmiDisplayInformation;

                interface IHdmiDisplayInformationStatics;

                interface IHdmiDisplayMode;

                interface IHdmiDisplayMode2;

                runtimeclass HdmiDisplayInformation;

                runtimeclass HdmiDisplayMode;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Graphics
    {
        namespace Display
        {
            namespace Core
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Graphics.Display.Core.HdmiDisplayMode*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Graphics.Display.Core.HdmiDisplayMode*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Graphics.Display.Core.HdmiDisplayMode*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.Core.HdmiDisplayInformation*, IInspectable*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Graphics
    {
        namespace Display
        {
            namespace Core
            {
                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum HdmiDisplayColorSpace
                {
                    RgbLimited = 0,
                    RgbFull    = 1,
                    BT2020     = 2,
                    BT709      = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum HdmiDisplayHdrOption
                {
                    None                  = 0,
                    EotfSdr               = 1,
                    Eotf2084              = 2,
                    [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                    DolbyVisionLowLatency = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                enum HdmiDisplayPixelEncoding
                {
                    Rgb444 = 0,
                    Ycc444 = 1,
                    Ycc422 = 2,
                    Ycc420 = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                struct HdmiDisplayHdr2086Metadata
                {
                    UINT16 RedPrimaryX;
                    UINT16 RedPrimaryY;
                    UINT16 GreenPrimaryX;
                    UINT16 GreenPrimaryY;
                    UINT16 BluePrimaryX;
                    UINT16 BluePrimaryY;
                    UINT16 WhitePointX;
                    UINT16 WhitePointY;
                    UINT16 MaxMasteringLuminance;
                    UINT16 MinMasteringLuminance;
                    UINT16 MaxContentLightLevel;
                    UINT16 MaxFrameAverageLightLevel;
                };

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Graphics.Display.Core.HdmiDisplayInformation)]
                [uuid(130B3C0A-F565-476E-ABD5-EA05AEE74C69)]
                interface IHdmiDisplayInformation : IInspectable
                {
                    HRESULT GetSupportedDisplayModes([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Graphics.Display.Core.HdmiDisplayMode*>** result);
                    HRESULT GetCurrentDisplayMode([out] [retval] Windows.Graphics.Display.Core.HdmiDisplayMode** result);
                    HRESULT SetDefaultDisplayModeAsync([out] [retval] Windows.Foundation.IAsyncAction** operation);
                    [overload("RequestSetCurrentDisplayModeAsync")] HRESULT RequestSetCurrentDisplayModeAsync([in] Windows.Graphics.Display.Core.HdmiDisplayMode* mode, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                    [overload("RequestSetCurrentDisplayModeAsync")] HRESULT RequestSetCurrentDisplayModeWithHdrAsync([in] Windows.Graphics.Display.Core.HdmiDisplayMode* mode, [in] Windows.Graphics.Display.Core.HdmiDisplayHdrOption hdrOption, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                    [overload("RequestSetCurrentDisplayModeAsync")] HRESULT RequestSetCurrentDisplayModeWithHdrAndMetadataAsync([in] Windows.Graphics.Display.Core.HdmiDisplayMode* mode, [in] Windows.Graphics.Display.Core.HdmiDisplayHdrOption hdrOption, [in] Windows.Graphics.Display.Core.HdmiDisplayHdr2086Metadata hdrMetadata, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
                    [eventadd] HRESULT DisplayModesChanged([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.Core.HdmiDisplayInformation*, IInspectable*>* value, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT DisplayModesChanged([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Graphics.Display.Core.HdmiDisplayInformation)]
                [uuid(6CE6B260-F42A-4A15-914C-7B8E2A5A65DF)]
                interface IHdmiDisplayInformationStatics : IInspectable
                {
                    HRESULT GetForCurrentView([out] [retval] Windows.Graphics.Display.Core.HdmiDisplayInformation** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [exclusiveto(Windows.Graphics.Display.Core.HdmiDisplayMode)]
                [uuid(0C06D5AD-1B90-4F51-9981-EF5A1C0DDF66)]
                interface IHdmiDisplayMode : IInspectable
                {
                    [propget] HRESULT ResolutionWidthInRawPixels([out] [retval] UINT32* value);
                    [propget] HRESULT ResolutionHeightInRawPixels([out] [retval] UINT32* value);
                    [propget] HRESULT RefreshRate([out] [retval] DOUBLE* value);
                    [propget] HRESULT StereoEnabled([out] [retval] boolean* value);
                    [propget] HRESULT BitsPerPixel([out] [retval] UINT16* value);
                    HRESULT IsEqual([in] Windows.Graphics.Display.Core.HdmiDisplayMode* mode, [out] [retval] boolean* result);
                    [propget] HRESULT ColorSpace([out] [retval] Windows.Graphics.Display.Core.HdmiDisplayColorSpace* value);
                    [propget] HRESULT PixelEncoding([out] [retval] Windows.Graphics.Display.Core.HdmiDisplayPixelEncoding* value);
                    [propget] HRESULT IsSdrLuminanceSupported([out] [retval] boolean* value);
                    [propget] HRESULT IsSmpte2084Supported([out] [retval] boolean* value);
                    [propget] HRESULT Is2086MetadataSupported([out] [retval] boolean* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Graphics.Display.Core.HdmiDisplayMode)]
                [uuid(07CD4E9F-4B3C-42B8-84E7-895368718AF2)]
                interface IHdmiDisplayMode2 : IInspectable
                {
                    [propget] HRESULT IsDolbyVisionLowLatencySupported([out] [retval] boolean* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Graphics.Display.Core.IHdmiDisplayInformationStatics, Windows.Foundation.UniversalApiContract, 4.0)]
                [threading(both)]
                runtimeclass HdmiDisplayInformation
                {
                    [default] interface Windows.Graphics.Display.Core.IHdmiDisplayInformation;
                }

                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass HdmiDisplayMode
                {
                    [default] interface Windows.Graphics.Display.Core.IHdmiDisplayMode;
                    [contract(Windows.Foundation.UniversalApiContract, 7.0)] interface Windows.Graphics.Display.Core.IHdmiDisplayMode2;
                }
            }
        }
    }
}
