//
// 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.UI.Composition.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            runtimeclass Compositor;

            runtimeclass Visual;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            namespace Diagnostics
            {
                typedef enum CompositionDebugOverdrawContentKinds CompositionDebugOverdrawContentKinds;

                interface ICompositionDebugHeatMaps;

                interface ICompositionDebugSettings;

                interface ICompositionDebugSettingsStatics;

                runtimeclass CompositionDebugHeatMaps;

                runtimeclass CompositionDebugSettings;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            namespace Diagnostics
            {
                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [flags]
                enum CompositionDebugOverdrawContentKinds
                {
                    None              = 0x0,
                    OffscreenRendered = 0x1,
                    Colors            = 0x2,
                    Effects           = 0x4,
                    Shadows           = 0x8,
                    Lights            = 0x10,
                    Surfaces          = 0x20,
                    SwapChains        = 0x40,
                    All               = 0xFFFFFFFF
                };

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.UI.Composition.Diagnostics.CompositionDebugHeatMaps)]
                [uuid(E49C90AC-2FF3-5805-718C-B725EE07650F)]
                interface ICompositionDebugHeatMaps : IInspectable
                {
                    HRESULT Hide([in] Windows.UI.Composition.Visual* subtree);
                    HRESULT ShowMemoryUsage([in] Windows.UI.Composition.Visual* subtree);
                    HRESULT ShowOverdraw([in] Windows.UI.Composition.Visual* subtree, [in] Windows.UI.Composition.Diagnostics.CompositionDebugOverdrawContentKinds contentKinds);
                    HRESULT ShowRedraw([in] Windows.UI.Composition.Visual* subtree);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.UI.Composition.Diagnostics.CompositionDebugSettings)]
                [uuid(2831987E-1D82-4D38-B7B7-EFD11C7BC3D1)]
                interface ICompositionDebugSettings : IInspectable
                {
                    [propget] HRESULT HeatMaps([out] [retval] Windows.UI.Composition.Diagnostics.CompositionDebugHeatMaps** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.UI.Composition.Diagnostics.CompositionDebugSettings)]
                [uuid(64EC1F1E-6AF8-4AF8-B814-C870FD5A9505)]
                interface ICompositionDebugSettingsStatics : IInspectable
                {
                    HRESULT TryGetSettings([in] Windows.UI.Composition.Compositor* compositor, [out] [retval] Windows.UI.Composition.Diagnostics.CompositionDebugSettings** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                runtimeclass CompositionDebugHeatMaps
                {
                    [default] interface Windows.UI.Composition.Diagnostics.ICompositionDebugHeatMaps;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Composition.Diagnostics.ICompositionDebugSettingsStatics, Windows.Foundation.UniversalApiContract, 6.0)]
                [threading(both)]
                runtimeclass CompositionDebugSettings
                {
                    [default] interface Windows.UI.Composition.Diagnostics.ICompositionDebugSettings;
                }
            }
        }
    }
}
