//
// 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";

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

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace ViewManagement
        {
            namespace Core
            {
                typedef enum CoreInputViewKind CoreInputViewKind;

                typedef enum CoreInputViewOcclusionKind CoreInputViewOcclusionKind;

                typedef enum CoreInputViewXYFocusTransferDirection CoreInputViewXYFocusTransferDirection;

                interface ICoreInputView;

                interface ICoreInputView2;

                interface ICoreInputView3;

                interface ICoreInputViewOcclusion;

                interface ICoreInputViewOcclusionsChangedEventArgs;

                interface ICoreInputViewStatics;

                interface ICoreInputViewTransferringXYFocusEventArgs;

                runtimeclass CoreInputView;

                runtimeclass CoreInputViewOcclusion;

                runtimeclass CoreInputViewOcclusionsChangedEventArgs;

                runtimeclass CoreInputViewTransferringXYFocusEventArgs;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace UI
    {
        namespace ViewManagement
        {
            namespace Core
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.UI.ViewManagement.Core.CoreInputViewOcclusion*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.UI.ViewManagement.Core.CoreInputViewOcclusion*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.UI.ViewManagement.Core.CoreInputViewOcclusion*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.UI.ViewManagement.Core.CoreInputView*, IInspectable*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.UI.ViewManagement.Core.CoreInputView*, Windows.UI.ViewManagement.Core.CoreInputViewOcclusionsChangedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.UI.ViewManagement.Core.CoreInputView*, Windows.UI.ViewManagement.Core.CoreInputViewTransferringXYFocusEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace ViewManagement
        {
            namespace Core
            {
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                enum CoreInputViewKind
                {
                    Default     = 0,
                    Keyboard    = 1,
                    Handwriting = 2,
                    Emoji       = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                enum CoreInputViewOcclusionKind
                {
                    Docked   = 0,
                    Floating = 1,
                    Overlay  = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                enum CoreInputViewXYFocusTransferDirection
                {
                    Up    = 0,
                    Right = 1,
                    Down  = 2,
                    Left  = 3
                };

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [exclusiveto(Windows.UI.ViewManagement.Core.CoreInputView)]
                [uuid(C770CD7A-7001-4C32-BF94-25C1F554CBF1)]
                interface ICoreInputView : IInspectable
                {
                    [eventadd] HRESULT OcclusionsChanged([in] Windows.Foundation.TypedEventHandler<Windows.UI.ViewManagement.Core.CoreInputView*, Windows.UI.ViewManagement.Core.CoreInputViewOcclusionsChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT OcclusionsChanged([in] EventRegistrationToken token);
                    HRESULT GetCoreInputViewOcclusions([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.UI.ViewManagement.Core.CoreInputViewOcclusion*>** result);
                    HRESULT TryShowPrimaryView([out] [retval] boolean* result);
                    HRESULT TryHidePrimaryView([out] [retval] boolean* result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.UI.ViewManagement.Core.CoreInputView)]
                [uuid(0ED726C1-E09A-4AE8-AEDF-DFA4857D1A01)]
                interface ICoreInputView2 : IInspectable
                {
                    [eventadd] HRESULT XYFocusTransferringFromPrimaryView([in] Windows.Foundation.TypedEventHandler<Windows.UI.ViewManagement.Core.CoreInputView*, Windows.UI.ViewManagement.Core.CoreInputViewTransferringXYFocusEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT XYFocusTransferringFromPrimaryView([in] EventRegistrationToken token);
                    [eventadd] HRESULT XYFocusTransferredToPrimaryView([in] Windows.Foundation.TypedEventHandler<Windows.UI.ViewManagement.Core.CoreInputView*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT XYFocusTransferredToPrimaryView([in] EventRegistrationToken token);
                    HRESULT TryTransferXYFocusToPrimaryView([in] Windows.Foundation.Rect origin, [in] Windows.UI.ViewManagement.Core.CoreInputViewXYFocusTransferDirection direction, [out] [retval] boolean* result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.UI.ViewManagement.Core.CoreInputView)]
                [uuid(BC941653-3AB9-4849-8F58-46E7F0353CFC)]
                interface ICoreInputView3 : IInspectable
                {
                    [overload("TryShow")] HRESULT TryShow([out] [retval] boolean* result);
                    [overload("TryShow")] HRESULT TryShowWithKind([in] Windows.UI.ViewManagement.Core.CoreInputViewKind type, [out] [retval] boolean* result);
                    HRESULT TryHide([out] [retval] boolean* result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [exclusiveto(Windows.UI.ViewManagement.Core.CoreInputViewOcclusion)]
                [uuid(CC36CE06-3865-4177-B5F5-8B65E0B9CE84)]
                interface ICoreInputViewOcclusion : IInspectable
                {
                    [propget] HRESULT OccludingRect([out] [retval] Windows.Foundation.Rect* value);
                    [propget] HRESULT OcclusionKind([out] [retval] Windows.UI.ViewManagement.Core.CoreInputViewOcclusionKind* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [exclusiveto(Windows.UI.ViewManagement.Core.CoreInputViewOcclusionsChangedEventArgs)]
                [uuid(BE1027E8-B3EE-4DF7-9554-89CDC66082C2)]
                interface ICoreInputViewOcclusionsChangedEventArgs : IInspectable
                {
                    [propget] HRESULT Occlusions([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.UI.ViewManagement.Core.CoreInputViewOcclusion*>** value);
                    [propget] HRESULT Handled([out] [retval] boolean* value);
                    [propput] HRESULT Handled([in] boolean value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [exclusiveto(Windows.UI.ViewManagement.Core.CoreInputView)]
                [uuid(7D9B97CD-EDBE-49CF-A54F-337DE052907F)]
                interface ICoreInputViewStatics : IInspectable
                {
                    HRESULT GetForCurrentView([out] [retval] Windows.UI.ViewManagement.Core.CoreInputView** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.UI.ViewManagement.Core.CoreInputViewTransferringXYFocusEventArgs)]
                [uuid(04DE169F-BA02-4850-8B55-D82D03BA6D7F)]
                interface ICoreInputViewTransferringXYFocusEventArgs : IInspectable
                {
                    [propget] HRESULT Origin([out] [retval] Windows.Foundation.Rect* value);
                    [propget] HRESULT Direction([out] [retval] Windows.UI.ViewManagement.Core.CoreInputViewXYFocusTransferDirection* value);
                    [propput] HRESULT TransferHandled([in] boolean value);
                    [propget] HRESULT TransferHandled([out] [retval] boolean* value);
                    [propput] HRESULT KeepPrimaryViewVisible([in] boolean value);
                    [propget] HRESULT KeepPrimaryViewVisible([out] [retval] boolean* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.ViewManagement.Core.ICoreInputViewStatics, Windows.Foundation.UniversalApiContract, 5.0)]
                runtimeclass CoreInputView
                {
                    [default] interface Windows.UI.ViewManagement.Core.ICoreInputView;
                    [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.UI.ViewManagement.Core.ICoreInputView2;
                    [contract(Windows.Foundation.UniversalApiContract, 7.0)] interface Windows.UI.ViewManagement.Core.ICoreInputView3;
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [marshaling_behavior(agile)]
                runtimeclass CoreInputViewOcclusion
                {
                    [default] interface Windows.UI.ViewManagement.Core.ICoreInputViewOcclusion;
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [marshaling_behavior(agile)]
                runtimeclass CoreInputViewOcclusionsChangedEventArgs
                {
                    [default] interface Windows.UI.ViewManagement.Core.ICoreInputViewOcclusionsChangedEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(agile)]
                runtimeclass CoreInputViewTransferringXYFocusEventArgs
                {
                    [default] interface Windows.UI.ViewManagement.Core.ICoreInputViewTransferringXYFocusEventArgs;
                }
            }
        }
    }
}
