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

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

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace DirectX
        {
            typedef enum DirectXPixelFormat DirectXPixelFormat;
        }
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace DirectX
        {
            namespace Direct3D11
            {
                typedef enum Direct3DBindings Direct3DBindings;

                typedef enum Direct3DUsage Direct3DUsage;

                typedef struct Direct3DMultisampleDescription Direct3DMultisampleDescription;

                typedef struct Direct3DSurfaceDescription Direct3DSurfaceDescription;

                interface IDirect3DDevice;

                interface IDirect3DSurface;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Graphics
    {
        namespace DirectX
        {
            namespace Direct3D11
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Graphics
    {
        namespace DirectX
        {
            namespace Direct3D11
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [flags]
                enum Direct3DBindings
                {
                    VertexBuffer    = 0x1,
                    IndexBuffer     = 0x2,
                    ConstantBuffer  = 0x4,
                    ShaderResource  = 0x8,
                    StreamOutput    = 0x10,
                    RenderTarget    = 0x20,
                    DepthStencil    = 0x40,
                    UnorderedAccess = 0x80,
                    Decoder         = 0x200,
                    VideoEncoder    = 0x400
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum Direct3DUsage
                {
                    Default   = 0,
                    Immutable = 1,
                    Dynamic   = 2,
                    Staging   = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                struct Direct3DMultisampleDescription
                {
                    INT32 Count;
                    INT32 Quality;
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                struct Direct3DSurfaceDescription
                {
                    INT32 Width;
                    INT32 Height;
                    Windows.Graphics.DirectX.DirectXPixelFormat Format;
                    Windows.Graphics.DirectX.Direct3D11.Direct3DMultisampleDescription MultisampleDescription;
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [uuid(A37624AB-8D5F-4650-9D3E-9EAE3D9BC670)]
                interface IDirect3DDevice : IInspectable
                    requires
                        Windows.Foundation.IClosable
                {
                    HRESULT Trim();
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [uuid(0BF4A146-13C1-4694-BEE3-7ABF15EAF586)]
                interface IDirect3DSurface : IInspectable
                    requires
                        Windows.Foundation.IClosable
                {
                    [propget] HRESULT Description([out] [retval] Windows.Graphics.DirectX.Direct3D11.Direct3DSurfaceDescription* value);
                }
            }
        }
    }
}
