//
// 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";
import "Windows.Graphics.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct Point Point;

        typedef struct Size Size;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        typedef struct DisplayAdapterId DisplayAdapterId;

        typedef struct SizeInt32 SizeInt32;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Display
        {
            typedef enum DisplayMonitorConnectionKind DisplayMonitorConnectionKind;

            typedef enum DisplayMonitorDescriptorKind DisplayMonitorDescriptorKind;

            typedef enum DisplayMonitorPhysicalConnectorKind DisplayMonitorPhysicalConnectorKind;

            typedef enum DisplayMonitorUsageKind DisplayMonitorUsageKind;

            interface IDisplayMonitor;

            interface IDisplayMonitor2;

            interface IDisplayMonitorStatics;

            runtimeclass DisplayMonitor;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Display
        {
            declare
            {
                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Display.DisplayMonitor*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Display
        {
            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            enum DisplayMonitorConnectionKind
            {
                Internal = 0,
                Wired    = 1,
                Wireless = 2,
                Virtual  = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            enum DisplayMonitorDescriptorKind
            {
                Edid      = 0,
                DisplayId = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            enum DisplayMonitorPhysicalConnectorKind
            {
                Unknown     = 0,
                HD15        = 1,
                AnalogTV    = 2,
                Dvi         = 3,
                Hdmi        = 4,
                Lvds        = 5,
                Sdi         = 6,
                DisplayPort = 7
            };

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            enum DisplayMonitorUsageKind
            {
                Standard       = 0,
                HeadMounted    = 1,
                SpecialPurpose = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Devices.Display.DisplayMonitor)]
            [uuid(1F6B15D4-1D01-4C51-87E2-6F954A772B59)]
            interface IDisplayMonitor : IInspectable
            {
                [propget] HRESULT DeviceId([out] [retval] HSTRING* value);
                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                [propget] HRESULT ConnectionKind([out] [retval] Windows.Devices.Display.DisplayMonitorConnectionKind* value);
                [propget] HRESULT PhysicalConnector([out] [retval] Windows.Devices.Display.DisplayMonitorPhysicalConnectorKind* value);
                [propget] HRESULT DisplayAdapterDeviceId([out] [retval] HSTRING* value);
                [propget] HRESULT DisplayAdapterId([out] [retval] Windows.Graphics.DisplayAdapterId* value);
                [propget] HRESULT DisplayAdapterTargetId([out] [retval] UINT32* value);
                [propget] HRESULT UsageKind([out] [retval] Windows.Devices.Display.DisplayMonitorUsageKind* value);
                [propget] HRESULT NativeResolutionInRawPixels([out] [retval] Windows.Graphics.SizeInt32* value);
                [propget] HRESULT PhysicalSizeInInches([out] [retval] Windows.Foundation.IReference<Windows.Foundation.Size>** value);
                [propget] HRESULT RawDpiX([out] [retval] FLOAT* value);
                [propget] HRESULT RawDpiY([out] [retval] FLOAT* 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);
                HRESULT GetDescriptor([in] Windows.Devices.Display.DisplayMonitorDescriptorKind descriptorKind, [out] UINT32* __resultSize, [out] [retval] [size_is(, *__resultSize)] BYTE** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Devices.Display.DisplayMonitor)]
            [uuid(023018E6-CB23-5830-96DF-A7BF6E602577)]
            interface IDisplayMonitor2 : IInspectable
            {
                [propget] HRESULT IsDolbyVisionSupportedInHdrMode([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Devices.Display.DisplayMonitor)]
            [uuid(6EAE698F-A228-4C05-821D-B695D667DE8E)]
            interface IDisplayMonitorStatics : IInspectable
            {
                HRESULT GetDeviceSelector([out] [retval] HSTRING* result);
                HRESULT FromIdAsync([in] HSTRING deviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Display.DisplayMonitor*>** operation);
                HRESULT FromInterfaceIdAsync([in] HSTRING deviceInterfaceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Display.DisplayMonitor*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Display.IDisplayMonitorStatics, Windows.Foundation.UniversalApiContract, 6.0)]
            [threading(both)]
            runtimeclass DisplayMonitor
            {
                [default] interface Windows.Devices.Display.IDisplayMonitor;
                [contract(Windows.Foundation.UniversalApiContract, 10.0)] interface Windows.Devices.Display.IDisplayMonitor2;
            }
        }
    }
}
