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

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace DataTransfer
        {
            runtimeclass DataPackage;

            typedef enum DataPackageOperation DataPackageOperation;

            runtimeclass DataPackageView;
        }
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace DataTransfer
        {
            namespace DragDrop
            {
                typedef enum DragDropModifiers DragDropModifiers;
            }
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        typedef struct Point Point;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Imaging
        {
            runtimeclass SoftwareBitmap;
        }
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace DataTransfer
        {
            namespace DragDrop
            {
                namespace Core
                {
                    typedef enum CoreDragUIContentMode CoreDragUIContentMode;

                    interface ICoreDragDropManager;

                    interface ICoreDragDropManagerStatics;

                    interface ICoreDragInfo;

                    interface ICoreDragInfo2;

                    interface ICoreDragOperation;

                    interface ICoreDragOperation2;

                    interface ICoreDragUIOverride;

                    interface ICoreDropOperationTarget;

                    interface ICoreDropOperationTargetRequestedEventArgs;

                    runtimeclass CoreDragDropManager;

                    runtimeclass CoreDragInfo;

                    runtimeclass CoreDragOperation;

                    runtimeclass CoreDragUIOverride;

                    runtimeclass CoreDropOperationTargetRequestedEventArgs;
                }
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace ApplicationModel
    {
        namespace DataTransfer
        {
            namespace DragDrop
            {
                namespace Core
                {
                    declare
                    {
                        interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragDropManager*, Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDropOperationTargetRequestedEventArgs*>;
                    }
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace DataTransfer
        {
            namespace DragDrop
            {
                namespace Core
                {
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [flags]
                    enum CoreDragUIContentMode
                    {
                        Auto     = 0x0,
                        Deferred = 0x1
                    };

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragDropManager)]
                    [uuid(7D56D344-8464-4FAF-AA49-37EA6E2D7BD1)]
                    interface ICoreDragDropManager : IInspectable
                    {
                        [eventadd] HRESULT TargetRequested([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragDropManager*, Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDropOperationTargetRequestedEventArgs*>* value, [out] [retval] EventRegistrationToken* returnValue);
                        [eventremove] HRESULT TargetRequested([in] EventRegistrationToken value);
                        [propget] HRESULT AreConcurrentOperationsEnabled([out] [retval] boolean* value);
                        [propput] HRESULT AreConcurrentOperationsEnabled([in] boolean value);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragDropManager)]
                    [uuid(9542FDCA-DA12-4C1C-8D06-041DB29733C3)]
                    interface ICoreDragDropManagerStatics : IInspectable
                    {
                        HRESULT GetForCurrentView([out] [retval] Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragDropManager** value);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragInfo)]
                    [uuid(48353A8B-CB50-464E-9575-CD4E3A7AB028)]
                    interface ICoreDragInfo : IInspectable
                    {
                        [propget] HRESULT Data([out] [retval] Windows.ApplicationModel.DataTransfer.DataPackageView** value);
                        [propget] HRESULT Modifiers([out] [retval] Windows.ApplicationModel.DataTransfer.DragDrop.DragDropModifiers* value);
                        [propget] HRESULT Position([out] [retval] Windows.Foundation.Point* value);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                    [exclusiveto(Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragInfo)]
                    [uuid(C54691E5-E6FB-4D74-B4B1-8A3C17F25E9E)]
                    interface ICoreDragInfo2 : IInspectable
                        requires
                            Windows.ApplicationModel.DataTransfer.DragDrop.Core.ICoreDragInfo
                    {
                        [propget] HRESULT AllowedOperations([out] [retval] Windows.ApplicationModel.DataTransfer.DataPackageOperation* value);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragOperation)]
                    [uuid(CC06DE4F-6DB0-4E62-AB1B-A74A02DC6D85)]
                    interface ICoreDragOperation : IInspectable
                    {
                        [propget] HRESULT Data([out] [retval] Windows.ApplicationModel.DataTransfer.DataPackage** value);
                        HRESULT SetPointerId([in] UINT32 pointerId);
                        [overload("SetDragUIContentFromSoftwareBitmap")] HRESULT SetDragUIContentFromSoftwareBitmap([in] Windows.Graphics.Imaging.SoftwareBitmap* softwareBitmap);
                        [overload("SetDragUIContentFromSoftwareBitmap")] HRESULT SetDragUIContentFromSoftwareBitmapWithAnchorPoint([in] Windows.Graphics.Imaging.SoftwareBitmap* softwareBitmap, [in] Windows.Foundation.Point anchorPoint);
                        [propget] HRESULT DragUIContentMode([out] [retval] Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragUIContentMode* value);
                        [propput] HRESULT DragUIContentMode([in] Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragUIContentMode value);
                        HRESULT StartAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.DataTransfer.DataPackageOperation>** value);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                    [exclusiveto(Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragOperation)]
                    [uuid(824B1E2C-D99A-4FC3-8507-6C182F33B46A)]
                    interface ICoreDragOperation2 : IInspectable
                        requires
                            Windows.ApplicationModel.DataTransfer.DragDrop.Core.ICoreDragOperation
                    {
                        [propget] HRESULT AllowedOperations([out] [retval] Windows.ApplicationModel.DataTransfer.DataPackageOperation* value);
                        [propput] HRESULT AllowedOperations([in] Windows.ApplicationModel.DataTransfer.DataPackageOperation value);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragUIOverride)]
                    [uuid(89A85064-3389-4F4F-8897-7E8A3FFB3C93)]
                    interface ICoreDragUIOverride : IInspectable
                    {
                        [overload("SetContentFromSoftwareBitmap")] HRESULT SetContentFromSoftwareBitmap([in] Windows.Graphics.Imaging.SoftwareBitmap* softwareBitmap);
                        [overload("SetContentFromSoftwareBitmap")] HRESULT SetContentFromSoftwareBitmapWithAnchorPoint([in] Windows.Graphics.Imaging.SoftwareBitmap* softwareBitmap, [in] Windows.Foundation.Point anchorPoint);
                        [propget] HRESULT IsContentVisible([out] [retval] boolean* value);
                        [propput] HRESULT IsContentVisible([in] boolean value);
                        [propget] HRESULT Caption([out] [retval] HSTRING* value);
                        [propput] HRESULT Caption([in] HSTRING value);
                        [propget] HRESULT IsCaptionVisible([out] [retval] boolean* value);
                        [propput] HRESULT IsCaptionVisible([in] boolean value);
                        [propget] HRESULT IsGlyphVisible([out] [retval] boolean* value);
                        [propput] HRESULT IsGlyphVisible([in] boolean value);
                        HRESULT Clear();
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [uuid(D9126196-4C5B-417D-BB37-76381DEF8DB4)]
                    interface ICoreDropOperationTarget : IInspectable
                    {
                        HRESULT EnterAsync([in] Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragInfo* dragInfo, [in] Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragUIOverride* dragUIOverride, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.DataTransfer.DataPackageOperation>** returnValue);
                        HRESULT OverAsync([in] Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragInfo* dragInfo, [in] Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragUIOverride* dragUIOverride, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.DataTransfer.DataPackageOperation>** returnValue);
                        HRESULT LeaveAsync([in] Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragInfo* dragInfo, [out] [retval] Windows.Foundation.IAsyncAction** returnValue);
                        HRESULT DropAsync([in] Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDragInfo* dragInfo, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.DataTransfer.DataPackageOperation>** returnValue);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.ApplicationModel.DataTransfer.DragDrop.Core.CoreDropOperationTargetRequestedEventArgs)]
                    [uuid(2ACA929A-5E28-4EA6-829E-29134E665D6D)]
                    interface ICoreDropOperationTargetRequestedEventArgs : IInspectable
                    {
                        HRESULT SetTarget([in] Windows.ApplicationModel.DataTransfer.DragDrop.Core.ICoreDropOperationTarget* target);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [marshaling_behavior(agile)]
                    [static(Windows.ApplicationModel.DataTransfer.DragDrop.Core.ICoreDragDropManagerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                    [threading(both)]
                    runtimeclass CoreDragDropManager
                    {
                        [default] interface Windows.ApplicationModel.DataTransfer.DragDrop.Core.ICoreDragDropManager;
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [marshaling_behavior(agile)]
                    [threading(both)]
                    runtimeclass CoreDragInfo
                    {
                        [default] interface Windows.ApplicationModel.DataTransfer.DragDrop.Core.ICoreDragInfo;
                        [contract(Windows.Foundation.UniversalApiContract, 2.0)] interface Windows.ApplicationModel.DataTransfer.DragDrop.Core.ICoreDragInfo2;
                    }

                    [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [marshaling_behavior(agile)]
                    [threading(both)]
                    runtimeclass CoreDragOperation
                    {
                        [default] interface Windows.ApplicationModel.DataTransfer.DragDrop.Core.ICoreDragOperation;
                        [contract(Windows.Foundation.UniversalApiContract, 2.0)] interface Windows.ApplicationModel.DataTransfer.DragDrop.Core.ICoreDragOperation2;
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [marshaling_behavior(agile)]
                    [threading(both)]
                    runtimeclass CoreDragUIOverride
                    {
                        [default] interface Windows.ApplicationModel.DataTransfer.DragDrop.Core.ICoreDragUIOverride;
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [marshaling_behavior(agile)]
                    [threading(both)]
                    runtimeclass CoreDropOperationTargetRequestedEventArgs
                    {
                        [default] interface Windows.ApplicationModel.DataTransfer.DragDrop.Core.ICoreDropOperationTargetRequestedEventArgs;
                    }
                }
            }
        }
    }
}
