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

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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStream;
        }
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Display
        {
            typedef enum DisplayBrightnessOverrideOptions DisplayBrightnessOverrideOptions;

            typedef enum DisplayBrightnessScenario DisplayBrightnessScenario;

            typedef enum DisplayOrientations DisplayOrientations;

            typedef enum ResolutionScale ResolutionScale;

            delegate DisplayPropertiesEventHandler;

            interface IBrightnessOverride;

            interface IBrightnessOverrideStatics;

            interface IDisplayInformation;

            interface IDisplayInformation2;

            interface IDisplayInformation3;

            interface IDisplayInformation4;

            interface IDisplayInformationStatics;

            interface IDisplayPropertiesStatics;

            runtimeclass BrightnessOverride;

            runtimeclass DisplayInformation;

            runtimeclass DisplayProperties;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Graphics
    {
        namespace Display
        {
            declare
            {
                interface Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.BrightnessOverride*, IInspectable*>;

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

// Type definition
namespace Windows
{
    namespace Graphics
    {
        namespace Display
        {
            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [flags]
            enum DisplayBrightnessOverrideOptions
            {
                None                            = 0x0,
                UseDimmedPolicyWhenBatteryIsLow = 0x1
            };

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            enum DisplayBrightnessScenario
            {
                DefaultBrightness        = 0,
                IdleBrightness           = 1,
                BarcodeReadingBrightness = 2,
                FullBrightness           = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [flags]
            enum DisplayOrientations
            {
                None             = 0x0,
                Landscape        = 0x1,
                Portrait         = 0x2,
                LandscapeFlipped = 0x4,
                PortraitFlipped  = 0x8
            };

            [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, 1.0)]
            [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(DBDD8B01-F1A1-46D1-9EE3-543BCC995980)]
            delegate
                HRESULT DisplayPropertiesEventHandler([in] IInspectable* sender);

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Graphics.Display.BrightnessOverride)]
            [uuid(96C9621A-C143-4392-BEDD-4A7E9574C8FD)]
            interface IBrightnessOverride : IInspectable
            {
                [propget] HRESULT IsSupported([out] [retval] boolean* value);
                [propget] HRESULT IsOverrideActive([out] [retval] boolean* value);
                [propget] HRESULT BrightnessLevel([out] [retval] DOUBLE* level);
                HRESULT SetBrightnessLevel([in] DOUBLE brightnessLevel, [in] Windows.Graphics.Display.DisplayBrightnessOverrideOptions options);
                HRESULT SetBrightnessScenario([in] Windows.Graphics.Display.DisplayBrightnessScenario scenario, [in] Windows.Graphics.Display.DisplayBrightnessOverrideOptions options);
                HRESULT GetLevelForScenario([in] Windows.Graphics.Display.DisplayBrightnessScenario scenario, [out] [retval] DOUBLE* brightnessLevel);
                HRESULT StartOverride();
                HRESULT StopOverride();
                [eventadd] HRESULT IsSupportedChanged([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.BrightnessOverride*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT IsSupportedChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT IsOverrideActiveChanged([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.BrightnessOverride*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT IsOverrideActiveChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT BrightnessLevelChanged([in] Windows.Foundation.TypedEventHandler<Windows.Graphics.Display.BrightnessOverride*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT BrightnessLevelChanged([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Graphics.Display.BrightnessOverride)]
            [uuid(03A7B9ED-E1F1-4A68-A11F-946AD8CE5393)]
            interface IBrightnessOverrideStatics : IInspectable
            {
                HRESULT GetDefaultForSystem([out] [retval] Windows.Graphics.Display.BrightnessOverride** value);
                HRESULT GetForCurrentView([out] [retval] Windows.Graphics.Display.BrightnessOverride** value);
                HRESULT SaveForSystemAsync([in] Windows.Graphics.Display.BrightnessOverride* value, [out] [retval] Windows.Foundation.IAsyncOperation<boolean>** operation);
            }

            [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*>** asyncInfo);
                [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, 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, 1.0)]
            [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Graphics.Display.DisplayProperties)]
            [uuid(6937ED8D-30EA-4DED-8271-4553FF02F68A)]
            interface IDisplayPropertiesStatics : IInspectable
            {
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT CurrentOrientation([out] [retval] Windows.Graphics.Display.DisplayOrientations* value);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT NativeOrientation([out] [retval] Windows.Graphics.Display.DisplayOrientations* value);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT AutoRotationPreferences([out] [retval] Windows.Graphics.Display.DisplayOrientations* value);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propput] HRESULT AutoRotationPreferences([in] Windows.Graphics.Display.DisplayOrientations value);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [eventadd] HRESULT OrientationChanged([in] Windows.Graphics.Display.DisplayPropertiesEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [eventremove] HRESULT OrientationChanged([in] EventRegistrationToken token);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT ResolutionScale([out] [retval] Windows.Graphics.Display.ResolutionScale* value);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT LogicalDpi([out] [retval] FLOAT* value);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [eventadd] HRESULT LogicalDpiChanged([in] Windows.Graphics.Display.DisplayPropertiesEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [eventremove] HRESULT LogicalDpiChanged([in] EventRegistrationToken token);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT StereoEnabled([out] [retval] boolean* value);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [eventadd] HRESULT StereoEnabledChanged([in] Windows.Graphics.Display.DisplayPropertiesEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [eventremove] HRESULT StereoEnabledChanged([in] EventRegistrationToken token);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] HRESULT GetColorProfileAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IRandomAccessStream*>** asyncInfo);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [eventadd] HRESULT ColorProfileChanged([in] Windows.Graphics.Display.DisplayPropertiesEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [eventremove] HRESULT ColorProfileChanged([in] EventRegistrationToken token);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [eventadd] HRESULT DisplayContentsInvalidated([in] Windows.Graphics.Display.DisplayPropertiesEventHandler* handler, [out] [retval] EventRegistrationToken* token);
                [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [eventremove] HRESULT DisplayContentsInvalidated([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Graphics.Display.IBrightnessOverrideStatics, Windows.Foundation.UniversalApiContract, 4.0)]
            [threading(both)]
            runtimeclass BrightnessOverride
            {
                [default] interface Windows.Graphics.Display.IBrightnessOverride;
            }

            [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, 1.0)]
            [deprecated("DisplayProperties may be altered or unavailable for releases after Windows Phone 8.1. Instead, use DisplayInformation.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Graphics.Display.IDisplayPropertiesStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            runtimeclass DisplayProperties
            {
            }
        }
    }
}
