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

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

        typedef struct TimeSpan TimeSpan;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Core
        {
            namespace AnimationMetrics
            {
                apicontract AnimationMetricsContract;

                typedef enum AnimationEffect AnimationEffect;

                typedef enum AnimationEffectTarget AnimationEffectTarget;

                typedef enum PropertyAnimationType PropertyAnimationType;

                interface IAnimationDescription;

                interface IAnimationDescriptionFactory;

                interface IOpacityAnimation;

                interface IPropertyAnimation;

                interface IScaleAnimation;

                runtimeclass AnimationDescription;

                runtimeclass OpacityAnimation;

                runtimeclass PropertyAnimation;

                runtimeclass ScaleAnimation;

                runtimeclass TranslationAnimation;
            }
        }
    }
}

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

                    interface Windows.Foundation.Collections.IIterator<Windows.UI.Core.AnimationMetrics.IPropertyAnimation*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.UI.Core.AnimationMetrics.IPropertyAnimation*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Core
        {
            namespace AnimationMetrics
            {
                [contractversion(1.0)]
                apicontract AnimationMetricsContract
                {
                }

                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                enum AnimationEffect
                {
                    Expand               = 0,
                    Collapse             = 1,
                    Reposition           = 2,
                    FadeIn               = 3,
                    FadeOut              = 4,
                    AddToList            = 5,
                    DeleteFromList       = 6,
                    AddToGrid            = 7,
                    DeleteFromGrid       = 8,
                    AddToSearchGrid      = 9,
                    DeleteFromSearchGrid = 10,
                    AddToSearchList      = 11,
                    DeleteFromSearchList = 12,
                    ShowEdgeUI           = 13,
                    ShowPanel            = 14,
                    HideEdgeUI           = 15,
                    HidePanel            = 16,
                    ShowPopup            = 17,
                    HidePopup            = 18,
                    PointerDown          = 19,
                    PointerUp            = 20,
                    DragSourceStart      = 21,
                    DragSourceEnd        = 22,
                    TransitionContent    = 23,
                    Reveal               = 24,
                    Hide                 = 25,
                    DragBetweenEnter     = 26,
                    DragBetweenLeave     = 27,
                    SwipeSelect          = 28,
                    SwipeDeselect        = 29,
                    SwipeReveal          = 30,
                    EnterPage            = 31,
                    TransitionPage       = 32,
                    CrossFade            = 33,
                    Peek                 = 34,
                    UpdateBadge          = 35
                };

                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                enum AnimationEffectTarget
                {
                    Primary    = 0,
                    Added      = 1,
                    Affected   = 2,
                    Background = 3,
                    Content    = 4,
                    Deleted    = 5,
                    Deselected = 6,
                    DragSource = 7,
                    Hidden     = 8,
                    Incoming   = 9,
                    Outgoing   = 10,
                    Outline    = 11,
                    Remaining  = 12,
                    Revealed   = 13,
                    RowIn      = 14,
                    RowOut     = 15,
                    Selected   = 16,
                    Selection  = 17,
                    Shown      = 18,
                    Tapped     = 19
                };

                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                enum PropertyAnimationType
                {
                    Scale       = 0,
                    Translation = 1,
                    Opacity     = 2
                };

                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                [exclusiveto(Windows.UI.Core.AnimationMetrics.AnimationDescription)]
                [uuid(7D11A549-BE3D-41DE-B081-05C149962F9B)]
                interface IAnimationDescription : IInspectable
                {
                    [propget] HRESULT Animations([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.UI.Core.AnimationMetrics.IPropertyAnimation*>** value);
                    [propget] HRESULT StaggerDelay([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propget] HRESULT StaggerDelayFactor([out] [retval] FLOAT* value);
                    [propget] HRESULT DelayLimit([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propget] HRESULT ZOrder([out] [retval] INT32* value);
                }

                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                [exclusiveto(Windows.UI.Core.AnimationMetrics.AnimationDescription)]
                [uuid(C6E27ABE-C1FB-48B5-9271-ECC70AC86EF0)]
                interface IAnimationDescriptionFactory : IInspectable
                {
                    HRESULT CreateInstance([in] Windows.UI.Core.AnimationMetrics.AnimationEffect effect, [in] Windows.UI.Core.AnimationMetrics.AnimationEffectTarget target, [out] [retval] Windows.UI.Core.AnimationMetrics.AnimationDescription** animation);
                }

                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                [exclusiveto(Windows.UI.Core.AnimationMetrics.OpacityAnimation)]
                [uuid(803AABE5-EE7E-455F-84E9-2506AFB8D2B4)]
                interface IOpacityAnimation : IInspectable
                    requires
                        Windows.UI.Core.AnimationMetrics.IPropertyAnimation
                {
                    [propget] HRESULT InitialOpacity([out] [retval] Windows.Foundation.IReference<FLOAT>** value);
                    [propget] HRESULT FinalOpacity([out] [retval] FLOAT* value);
                }

                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                [uuid(3A01B4DA-4D8C-411E-B615-1ADE683A9903)]
                interface IPropertyAnimation : IInspectable
                {
                    [propget] HRESULT Type([out] [retval] Windows.UI.Core.AnimationMetrics.PropertyAnimationType* value);
                    [propget] HRESULT Delay([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propget] HRESULT Duration([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propget] HRESULT Control1([out] [retval] Windows.Foundation.Point* value);
                    [propget] HRESULT Control2([out] [retval] Windows.Foundation.Point* value);
                }

                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                [exclusiveto(Windows.UI.Core.AnimationMetrics.ScaleAnimation)]
                [uuid(023552C7-71AB-428C-9C9F-D31780964995)]
                interface IScaleAnimation : IInspectable
                    requires
                        Windows.UI.Core.AnimationMetrics.IPropertyAnimation
                {
                    [propget] HRESULT InitialScaleX([out] [retval] Windows.Foundation.IReference<FLOAT>** value);
                    [propget] HRESULT InitialScaleY([out] [retval] Windows.Foundation.IReference<FLOAT>** value);
                    [propget] HRESULT FinalScaleX([out] [retval] FLOAT* value);
                    [propget] HRESULT FinalScaleY([out] [retval] FLOAT* value);
                    [propget] HRESULT NormalizedOrigin([out] [retval] Windows.Foundation.Point* value);
                }

                [activatable(Windows.UI.Core.AnimationMetrics.IAnimationDescriptionFactory, Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass AnimationDescription
                {
                    [default] interface Windows.UI.Core.AnimationMetrics.IAnimationDescription;
                }

                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass OpacityAnimation
                {
                    [default] interface Windows.UI.Core.AnimationMetrics.IOpacityAnimation;
                    interface Windows.UI.Core.AnimationMetrics.IPropertyAnimation;
                }

                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass PropertyAnimation
                {
                    [default] interface Windows.UI.Core.AnimationMetrics.IPropertyAnimation;
                }

                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass ScaleAnimation
                {
                    [default] interface Windows.UI.Core.AnimationMetrics.IScaleAnimation;
                    interface Windows.UI.Core.AnimationMetrics.IPropertyAnimation;
                }

                [contract(Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass TranslationAnimation
                {
                    [default] interface Windows.UI.Core.AnimationMetrics.IPropertyAnimation;
                }
            }
        }
    }
}
