//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0013
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Foundation.Numerics.idl";
import "Windows.Graphics.Effects.idl";
import "Windows.UI.idl";
import "Windows.UI.Core.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Efoundation2Enumerics_h__)")
cpp_quote("#include <Windows.Foundation.Numerics.h>")
cpp_quote("#endif // !defined(__windows2Efoundation2Enumerics_h__)")
cpp_quote("#if !defined(__windows2Egraphics2Eeffects_h__)")
cpp_quote("#include <Windows.Graphics.Effects.h>")
cpp_quote("#endif // !defined(__windows2Egraphics2Eeffects_h__)")
cpp_quote("#if !defined(__windows2Eui_h__)")
cpp_quote("#include <Windows.UI.h>")
cpp_quote("#endif // !defined(__windows2Eui_h__)")
cpp_quote("#if !defined(__windows2Eui2Ecore_h__)")
cpp_quote("#include <Windows.UI.Core.h>")
cpp_quote("#endif // !defined(__windows2Eui2Ecore_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Numerics
        {
            typedef struct Matrix3x2 Matrix3x2;

            typedef struct Matrix4x4 Matrix4x4;

            typedef struct Quaternion Quaternion;

            typedef struct Vector2 Vector2;

            typedef struct Vector3 Vector3;

            typedef struct Vector4 Vector4;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct Size Size;

        typedef struct TimeSpan TimeSpan;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Effects
        {
            interface IGraphicsEffect;

            interface IGraphicsEffectSource;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        typedef struct Color Color;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Core
        {
            runtimeclass CoreDispatcher;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            typedef enum AnimationEndReason AnimationEndReason;

            typedef enum AnimationIterationBehavior AnimationIterationBehavior;

            typedef enum AnimationStopBehavior AnimationStopBehavior;

            typedef enum CompositionEffectFactoryLoadStatus CompositionEffectFactoryLoadStatus;

            typedef enum CompositionGetValueStatus CompositionGetValueStatus;

            typedef enum CompositionImageLoadStatus CompositionImageLoadStatus;

            typedef enum CompositionImageProgressStage CompositionImageProgressStage;

            typedef enum CompositionStretch CompositionStretch;

            interface IAnimationEndedEventArgs;

            interface ICompositionAnimation;

            interface ICompositionClip;

            interface ICompositionEasingFunction;

            interface ICompositionEffect;

            interface ICompositionSurface;

            interface ICompositionEffectFactory;

            interface ICompositionEffectFactoryLoadResult;

            interface ICompositionEffectSourceParameter;

            interface ICompositionEffectSourceParameterFactory;

            interface ICompositionGraphicsDevice;

            interface ICompositionImage;

            interface ICompositionImageLoadResult;

            interface ICompositionImageOptions;

            interface ICompositionObject;

            interface ICompositionPropertyAnimator;

            interface ICompositionPropertySet;

            interface ICompositionTarget;

            interface ICompositor;

            interface IContainerVisual;

            interface ICubicBezierEasingFunction;

            interface IEffectVisual;

            interface IExpressionAnimation;

            interface IImageVisual;

            interface IInsetClip;

            interface IKeyFrameAnimation;

            interface ILinearEasingFunction;

            interface IScalarKeyFrameAnimation;

            interface ISolidColorVisual;

            interface IVector2KeyFrameAnimation;

            interface IVector3KeyFrameAnimation;

            interface IVector4KeyFrameAnimation;

            interface IVisual;

            interface IVisualCollection;

            interface ICompositionAnimationFactory;

            interface ICompositionClipFactory;

            interface ICompositionEasingFunctionFactory;

            interface ICompositionObjectFactory;

            interface IContainerVisualFactory;

            interface IKeyFrameAnimationFactory;

            interface IVisualFactory;

            runtimeclass CompositionObject;

            runtimeclass CompositionEffect;

            runtimeclass CompositionEffectFactoryLoadResult;

            runtimeclass CompositionEffectSourceParameter;

            runtimeclass CompositionImageOptions;

            runtimeclass CompositionImage;

            runtimeclass CompositionImageLoadResult;

            runtimeclass Compositor;

            runtimeclass CompositionAnimation;

            runtimeclass CompositionPropertyAnimator;

            runtimeclass AnimationEndedEventArgs;

            runtimeclass CompositionPropertySet;

            runtimeclass CompositionGraphicsDevice;

            runtimeclass CompositionEffectFactory;

            runtimeclass CompositionTarget;

            runtimeclass ExpressionAnimation;

            runtimeclass CompositionEasingFunction;

            runtimeclass CubicBezierEasingFunction;

            runtimeclass LinearEasingFunction;

            runtimeclass Visual;

            runtimeclass ContainerVisual;

            runtimeclass EffectVisual;

            runtimeclass ImageVisual;

            runtimeclass SolidColorVisual;

            runtimeclass CompositionClip;

            runtimeclass InsetClip;

            runtimeclass VisualCollection;

            runtimeclass KeyFrameAnimation;

            runtimeclass ScalarKeyFrameAnimation;

            runtimeclass Vector2KeyFrameAnimation;

            runtimeclass Vector3KeyFrameAnimation;

            runtimeclass Vector4KeyFrameAnimation;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.UI.Composition.Visual*>;

                interface Windows.Foundation.Collections.IIterator<Windows.UI.Composition.Visual*>;

                interface Windows.Foundation.IAsyncOperationWithProgress<Windows.UI.Composition.CompositionImageLoadResult*, Windows.UI.Composition.CompositionImageProgressStage>;

                interface Windows.Foundation.IAsyncOperation<Windows.UI.Composition.CompositionEffectFactoryLoadResult*>;

                interface Windows.Foundation.TypedEventHandler<Windows.UI.Composition.CompositionPropertyAnimator*, Windows.UI.Composition.AnimationEndedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            [version(0x0A000000)]
            enum AnimationEndReason
            {
                Stopped      = 0,
                Completed    = 1,
                Disconnected = 2
            };

            [version(0x0A000000)]
            enum AnimationIterationBehavior
            {
                Count   = 0,
                Forever = 1
            };

            [version(0x0A000000)]
            enum AnimationStopBehavior
            {
                LeaveCurrentValue = 0,
                SetToInitialValue = 1,
                SetToFinalValue   = 2
            };

            [version(0x0A000000)]
            enum CompositionEffectFactoryLoadStatus
            {
                Success          = 0,
                EffectTooComplex = 1,
                Other            = 2
            };

            [version(0x0A000000)]
            enum CompositionGetValueStatus
            {
                Succeeded    = 0,
                TypeMismatch = 1,
                NotFound     = 2
            };

            [version(0x0A000000)]
            enum CompositionImageLoadStatus
            {
                Success            = 0,
                FileAccessError    = 1,
                DecodeError        = 2,
                NotEnoughResources = 3,
                Other              = 4
            };

            [version(0x0A000000)]
            enum CompositionImageProgressStage
            {
                None          = 0,
                HeaderDecoded = 30
            };

            [version(0x0A000000)]
            enum CompositionStretch
            {
                None          = 0,
                Fill          = 1,
                Uniform       = 2,
                UniformToFill = 3
            };

            [exclusiveto(Windows.UI.Composition.AnimationEndedEventArgs)]
            [uuid(2D4ECD9B-47D6-4201-9237-42FF1F25B045)]
            [version(0x0A000000)]
            interface IAnimationEndedEventArgs : IInspectable
            {
                [propget] HRESULT ActualEndReason([out] [retval] Windows.UI.Composition.AnimationEndReason* value);
            }

            [exclusiveto(Windows.UI.Composition.CompositionAnimation)]
            [uuid(93AC9D77-6B74-4960-A4B8-F274248487AE)]
            [version(0x0A000000)]
            interface ICompositionAnimation : IInspectable
            {
                HRESULT ClearAllParameters();
                HRESULT ClearParameter([in] HSTRING key);
                HRESULT SetMatrix3x2Parameter([in] HSTRING key, [in] Windows.Foundation.Numerics.Matrix3x2 value);
                HRESULT SetMatrix4x4Parameter([in] HSTRING key, [in] Windows.Foundation.Numerics.Matrix4x4 value);
                HRESULT SetReferenceParameter([in] HSTRING key, [in] Windows.UI.Composition.CompositionObject* compositionObject);
                HRESULT SetScalarParameter([in] HSTRING key, [in] FLOAT value);
                HRESULT SetVector2Parameter([in] HSTRING key, [in] Windows.Foundation.Numerics.Vector2 value);
                HRESULT SetVector3Parameter([in] HSTRING key, [in] Windows.Foundation.Numerics.Vector3 value);
                HRESULT SetVector4Parameter([in] HSTRING key, [in] Windows.Foundation.Numerics.Vector4 value);
            }

            [exclusiveto(Windows.UI.Composition.CompositionClip)]
            [uuid(38FEC7AD-D25F-41F3-828F-F6D25C864AA6)]
            [version(0x0A000000)]
            interface ICompositionClip : IInspectable
            {
            }

            [exclusiveto(Windows.UI.Composition.CompositionEasingFunction)]
            [uuid(17EAB812-0BAD-4D2D-BAE2-43FD7B4D071F)]
            [version(0x0A000000)]
            interface ICompositionEasingFunction : IInspectable
            {
            }

            [exclusiveto(Windows.UI.Composition.CompositionEffect)]
            [uuid(35170320-91C3-4E89-9C98-928F9919BEFD)]
            [version(0x0A000000)]
            interface ICompositionEffect : IInspectable
            {
                HRESULT GetSourceParameter([in] HSTRING name, [out] [retval] Windows.UI.Composition.ICompositionSurface** result);
                HRESULT SetSourceParameter([in] HSTRING name, [in] Windows.UI.Composition.ICompositionSurface* source);
            }

            [uuid(B2A77623-3F4E-40FA-A26A-64366B1F281D)]
            [version(0x0A000000)]
            interface ICompositionSurface : IInspectable
            {
            }

            [exclusiveto(Windows.UI.Composition.CompositionEffectFactory)]
            [uuid(6BEDAE71-D5BE-4B25-A672-776EEA024D07)]
            [version(0x0A000000)]
            interface ICompositionEffectFactory : IInspectable
            {
                HRESULT CreateEffect([out] [retval] Windows.UI.Composition.CompositionEffect** result);
                HRESULT CompleteLoadAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.UI.Composition.CompositionEffectFactoryLoadResult*>** value);
            }

            [exclusiveto(Windows.UI.Composition.CompositionEffectFactoryLoadResult)]
            [uuid(14DFDFCD-B1B8-42AE-B646-5181EF563ACB)]
            [version(0x0A000000)]
            interface ICompositionEffectFactoryLoadResult : IInspectable
            {
                [propget] HRESULT ExtendedError([out] [retval] HRESULT* value);
                [propget] HRESULT Status([out] [retval] Windows.UI.Composition.CompositionEffectFactoryLoadStatus* value);
            }

            [exclusiveto(Windows.UI.Composition.CompositionEffectSourceParameter)]
            [uuid(515F6E87-1874-47F7-95D9-BD381E13618C)]
            [version(0x0A000000)]
            interface ICompositionEffectSourceParameter : IInspectable
                requires
                    Windows.Graphics.Effects.IGraphicsEffectSource
            {
                [propget] HRESULT Name([out] [retval] HSTRING* value);
            }

            [exclusiveto(Windows.UI.Composition.CompositionEffectSourceParameter)]
            [uuid(A2977915-62D1-4A10-93B4-42F14D248057)]
            [version(0x0A000000)]
            interface ICompositionEffectSourceParameterFactory : IInspectable
            {
                HRESULT Create([in] HSTRING name, [out] [retval] Windows.UI.Composition.CompositionEffectSourceParameter** instance);
            }

            [exclusiveto(Windows.UI.Composition.CompositionGraphicsDevice)]
            [uuid(6BDA3863-7BD2-4DB8-87B4-7EB7A4357E2C)]
            [version(0x0A000000)]
            interface ICompositionGraphicsDevice : IInspectable
            {
                [overload("CreateImageFromUri")] HRESULT CreateImageFromUri([in] Windows.Foundation.Uri* uri, [out] [retval] Windows.UI.Composition.CompositionImage** result);
                [overload("CreateImageFromUri")] HRESULT CreateImageFromUriWithOptions([in] Windows.Foundation.Uri* uri, [in] Windows.UI.Composition.CompositionImageOptions* options, [out] [retval] Windows.UI.Composition.CompositionImage** result);
            }

            [exclusiveto(Windows.UI.Composition.CompositionImage)]
            [uuid(7FD7856F-8077-45B1-AE2B-B55D1678E62B)]
            [version(0x0A000000)]
            interface ICompositionImage : IInspectable
            {
                [propget] HRESULT Size([out] [retval] Windows.Foundation.Size* value);
                HRESULT CompleteLoadAsync([out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.UI.Composition.CompositionImageLoadResult*, Windows.UI.Composition.CompositionImageProgressStage>** value);
            }

            [exclusiveto(Windows.UI.Composition.CompositionImageLoadResult)]
            [uuid(C6EC450B-4D45-4040-866A-0F71A785A6E7)]
            [version(0x0A000000)]
            interface ICompositionImageLoadResult : IInspectable
            {
                [propget] HRESULT ExtendedError([out] [retval] HRESULT* value);
                [propget] HRESULT Status([out] [retval] Windows.UI.Composition.CompositionImageLoadStatus* value);
            }

            [exclusiveto(Windows.UI.Composition.CompositionImageOptions)]
            [uuid(F4FD3A1B-C37E-47C1-9DC4-AE6F9F079AC2)]
            [version(0x0A000000)]
            interface ICompositionImageOptions : IInspectable
            {
                [propget] HRESULT DecodeWidth([out] [retval] INT32* value);
                [propput] HRESULT DecodeWidth([in] INT32 value);
                [propget] HRESULT DecodeHeight([out] [retval] INT32* value);
                [propput] HRESULT DecodeHeight([in] INT32 value);
            }

            [exclusiveto(Windows.UI.Composition.CompositionObject)]
            [uuid(8F6BB0F6-B8F9-4C67-85F2-D862D70D33A8)]
            [version(0x0A000000)]
            interface ICompositionObject : IInspectable
            {
                [propget] HRESULT Compositor([out] [retval] Windows.UI.Composition.Compositor** value);
                [propget] HRESULT Dispatcher([out] [retval] Windows.UI.Core.CoreDispatcher** value);
                [propget] HRESULT Properties([out] [retval] Windows.UI.Composition.CompositionPropertySet** value);
                HRESULT ConnectAnimation([in] HSTRING propertyName, [in] Windows.UI.Composition.CompositionAnimation* animation, [out] [retval] Windows.UI.Composition.CompositionPropertyAnimator** result);
                HRESULT DisconnectAnimation([in] HSTRING propertyName);
            }

            [exclusiveto(Windows.UI.Composition.CompositionPropertyAnimator)]
            [uuid(D74137CC-C0A4-43F0-A2B7-0E19CD2A69F5)]
            [version(0x0A000000)]
            interface ICompositionPropertyAnimator : IInspectable
            {
                [eventadd] HRESULT AnimationEnded([in] Windows.Foundation.TypedEventHandler<Windows.UI.Composition.CompositionPropertyAnimator*, Windows.UI.Composition.AnimationEndedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT AnimationEnded([in] EventRegistrationToken token);
                HRESULT Pause();
                HRESULT Start();
                HRESULT Stop();
            }

            [exclusiveto(Windows.UI.Composition.CompositionPropertySet)]
            [uuid(B3962778-2C20-421D-983B-3D5A9A69F614)]
            [version(0x0A000000)]
            interface ICompositionPropertySet : IInspectable
            {
                HRESULT InsertMatrix3x2([in] HSTRING propertyName, [in] Windows.Foundation.Numerics.Matrix3x2 value);
                HRESULT InsertMatrix4x4([in] HSTRING propertyName, [in] Windows.Foundation.Numerics.Matrix4x4 value);
                HRESULT InsertScalar([in] HSTRING propertyName, [in] FLOAT value);
                HRESULT InsertVector2([in] HSTRING propertyName, [in] Windows.Foundation.Numerics.Vector2 value);
                HRESULT InsertVector3([in] HSTRING propertyName, [in] Windows.Foundation.Numerics.Vector3 value);
                HRESULT InsertVector4([in] HSTRING propertyName, [in] Windows.Foundation.Numerics.Vector4 value);
                HRESULT TryGetMatrix3x2([in] HSTRING propertyName, [out] Windows.Foundation.Numerics.Matrix3x2* value, [out] [retval] Windows.UI.Composition.CompositionGetValueStatus* result);
                HRESULT TryGetMatrix4x4([in] HSTRING propertyName, [out] Windows.Foundation.Numerics.Matrix4x4* value, [out] [retval] Windows.UI.Composition.CompositionGetValueStatus* result);
                HRESULT TryGetScalar([in] HSTRING propertyName, [out] FLOAT* value, [out] [retval] Windows.UI.Composition.CompositionGetValueStatus* result);
                HRESULT TryGetVector2([in] HSTRING propertyName, [out] Windows.Foundation.Numerics.Vector2* value, [out] [retval] Windows.UI.Composition.CompositionGetValueStatus* result);
                HRESULT TryGetVector3([in] HSTRING propertyName, [out] Windows.Foundation.Numerics.Vector3* value, [out] [retval] Windows.UI.Composition.CompositionGetValueStatus* result);
                HRESULT TryGetVector4([in] HSTRING propertyName, [out] Windows.Foundation.Numerics.Vector4* value, [out] [retval] Windows.UI.Composition.CompositionGetValueStatus* result);
            }

            [exclusiveto(Windows.UI.Composition.CompositionTarget)]
            [uuid(CA8116F8-D203-4EA0-A7CB-62D4A3A9E274)]
            [version(0x0A000000)]
            interface ICompositionTarget : IInspectable
            {
                [propget] HRESULT Root([out] [retval] Windows.UI.Composition.Visual** value);
                [propput] HRESULT Root([in] Windows.UI.Composition.Visual* value);
            }

            [exclusiveto(Windows.UI.Composition.Compositor)]
            [uuid(89DF0836-6FA5-41FD-ABA2-B07D63AC1712)]
            [version(0x0A000000)]
            interface ICompositor : IInspectable
            {
                [propget] HRESULT DefaultGraphicsDevice([out] [retval] Windows.UI.Composition.CompositionGraphicsDevice** value);
                HRESULT CreateContainerVisual([out] [retval] Windows.UI.Composition.ContainerVisual** result);
                HRESULT CreateCubicBezierEasingFunction([in] Windows.Foundation.Numerics.Vector2 controlPoint1, [in] Windows.Foundation.Numerics.Vector2 controlPoint2, [out] [retval] Windows.UI.Composition.CubicBezierEasingFunction** result);
                [overload("CreateEffectFactory")] HRESULT CreateEffectFactory([in] Windows.Graphics.Effects.IGraphicsEffect* graphicsEffect, [out] [retval] Windows.UI.Composition.CompositionEffectFactory** result);
                [overload("CreateEffectFactory")] HRESULT CreateEffectFactoryWithProperties([in] Windows.Graphics.Effects.IGraphicsEffect* graphicsEffect, [in] Windows.Foundation.Collections.IIterable<HSTRING>* animatableProperties, [out] [retval] Windows.UI.Composition.CompositionEffectFactory** result);
                HRESULT CreateEffectVisual([out] [retval] Windows.UI.Composition.EffectVisual** result);
                [overload("CreateExpressionAnimation")] HRESULT CreateExpressionAnimation([out] [retval] Windows.UI.Composition.ExpressionAnimation** result);
                [overload("CreateExpressionAnimation")] HRESULT CreateExpressionAnimationWithExpression([in] HSTRING expression, [out] [retval] Windows.UI.Composition.ExpressionAnimation** result);
                HRESULT CreateImageVisual([out] [retval] Windows.UI.Composition.ImageVisual** result);
                [overload("CreateInsetClip")] HRESULT CreateInsetClip([out] [retval] Windows.UI.Composition.InsetClip** result);
                [overload("CreateInsetClip")] HRESULT CreateInsetClipWithInsets([in] FLOAT leftInset, [in] FLOAT topInset, [in] FLOAT rightInset, [in] FLOAT bottomInset, [out] [retval] Windows.UI.Composition.InsetClip** result);
                HRESULT CreateLinearEasingFunction([out] [retval] Windows.UI.Composition.LinearEasingFunction** result);
                HRESULT CreatePropertySet([out] [retval] Windows.UI.Composition.CompositionPropertySet** result);
                HRESULT CreateScalarKeyFrameAnimation([out] [retval] Windows.UI.Composition.ScalarKeyFrameAnimation** result);
                HRESULT CreateSolidColorVisual([out] [retval] Windows.UI.Composition.SolidColorVisual** result);
                HRESULT CreateTargetForCurrentView([out] [retval] Windows.UI.Composition.CompositionTarget** result);
                HRESULT CreateVector2KeyFrameAnimation([out] [retval] Windows.UI.Composition.Vector2KeyFrameAnimation** result);
                HRESULT CreateVector3KeyFrameAnimation([out] [retval] Windows.UI.Composition.Vector3KeyFrameAnimation** result);
                HRESULT CreateVector4KeyFrameAnimation([out] [retval] Windows.UI.Composition.Vector4KeyFrameAnimation** result);
            }

            [exclusiveto(Windows.UI.Composition.ContainerVisual)]
            [uuid(60191509-0B6E-41A1-B564-C7FB90115EEE)]
            [version(0x0A000000)]
            interface IContainerVisual : IInspectable
            {
                [propget] HRESULT Children([out] [retval] Windows.UI.Composition.VisualCollection** value);
            }

            [exclusiveto(Windows.UI.Composition.CubicBezierEasingFunction)]
            [uuid(A4D9C792-DBB9-4559-9548-336C9BBC6E60)]
            [version(0x0A000000)]
            interface ICubicBezierEasingFunction : IInspectable
            {
                [propget] HRESULT ControlPoint1([out] [retval] Windows.Foundation.Numerics.Vector2* value);
                [propget] HRESULT ControlPoint2([out] [retval] Windows.Foundation.Numerics.Vector2* value);
            }

            [exclusiveto(Windows.UI.Composition.EffectVisual)]
            [uuid(7A067471-8A80-4F17-8283-9B90310C5744)]
            [version(0x0A000000)]
            interface IEffectVisual : IInspectable
            {
                [propget] HRESULT Effect([out] [retval] Windows.UI.Composition.CompositionEffect** value);
                [propput] HRESULT Effect([in] Windows.UI.Composition.CompositionEffect* value);
            }

            [exclusiveto(Windows.UI.Composition.ExpressionAnimation)]
            [uuid(72854C04-20B5-486B-AD9E-0F51252B6FFC)]
            [version(0x0A000000)]
            interface IExpressionAnimation : IInspectable
            {
                [propget] HRESULT Expression([out] [retval] HSTRING* value);
                [propput] HRESULT Expression([in] HSTRING value);
            }

            [exclusiveto(Windows.UI.Composition.ImageVisual)]
            [uuid(F2FBA317-218E-4830-857A-EA71DE874E44)]
            [version(0x0A000000)]
            interface IImageVisual : IInspectable
            {
                [propget] HRESULT HorizontalAlignmentRatio([out] [retval] FLOAT* value);
                [propput] HRESULT HorizontalAlignmentRatio([in] FLOAT value);
                [propget] HRESULT Image([out] [retval] Windows.UI.Composition.ICompositionSurface** value);
                [propput] HRESULT Image([in] Windows.UI.Composition.ICompositionSurface* value);
                [propget] HRESULT Stretch([out] [retval] Windows.UI.Composition.CompositionStretch* value);
                [propput] HRESULT Stretch([in] Windows.UI.Composition.CompositionStretch value);
                [propget] HRESULT VerticalAlignmentRatio([out] [retval] FLOAT* value);
                [propput] HRESULT VerticalAlignmentRatio([in] FLOAT value);
            }

            [exclusiveto(Windows.UI.Composition.InsetClip)]
            [uuid(7C77E042-4F79-4F7C-82A0-663C567CCB23)]
            [version(0x0A000000)]
            interface IInsetClip : IInspectable
            {
                [propget] HRESULT BottomInset([out] [retval] FLOAT* value);
                [propput] HRESULT BottomInset([in] FLOAT value);
                [propget] HRESULT LeftInset([out] [retval] FLOAT* value);
                [propput] HRESULT LeftInset([in] FLOAT value);
                [propget] HRESULT RightInset([out] [retval] FLOAT* value);
                [propput] HRESULT RightInset([in] FLOAT value);
                [propget] HRESULT TopInset([out] [retval] FLOAT* value);
                [propput] HRESULT TopInset([in] FLOAT value);
            }

            [exclusiveto(Windows.UI.Composition.KeyFrameAnimation)]
            [uuid(0F3E5983-D4A8-4B6A-88AE-A758ADE19EEC)]
            [version(0x0A000000)]
            interface IKeyFrameAnimation : IInspectable
            {
                [propget] HRESULT DelayTime([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT DelayTime([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT Duration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT Duration([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT IterationBehavior([out] [retval] Windows.UI.Composition.AnimationIterationBehavior* value);
                [propput] HRESULT IterationBehavior([in] Windows.UI.Composition.AnimationIterationBehavior value);
                [propget] HRESULT IterationCount([out] [retval] INT32* value);
                [propput] HRESULT IterationCount([in] INT32 value);
                [propget] HRESULT KeyFrameCount([out] [retval] INT32* value);
                [propget] HRESULT StopBehavior([out] [retval] Windows.UI.Composition.AnimationStopBehavior* value);
                [propput] HRESULT StopBehavior([in] Windows.UI.Composition.AnimationStopBehavior value);
                [overload("InsertExpressionKeyFrame")] HRESULT InsertExpressionKeyFrame([in] FLOAT normalizedProgressKey, [in] HSTRING value);
                [overload("InsertExpressionKeyFrame")] HRESULT InsertExpressionKeyFrameWithEasingFunction([in] FLOAT normalizedProgressKey, [in] HSTRING value, [in] Windows.UI.Composition.CompositionEasingFunction* easingFunction);
            }

            [exclusiveto(Windows.UI.Composition.LinearEasingFunction)]
            [uuid(6EA74588-3AB1-4CDE-8C67-4162C2D92E29)]
            [version(0x0A000000)]
            interface ILinearEasingFunction : IInspectable
            {
            }

            [exclusiveto(Windows.UI.Composition.ScalarKeyFrameAnimation)]
            [uuid(4B670259-698E-4285-9D39-9DEE83578A50)]
            [version(0x0A000000)]
            interface IScalarKeyFrameAnimation : IInspectable
            {
                [overload("InsertKeyFrame")] HRESULT InsertKeyFrame([in] FLOAT normalizedProgressKey, [in] FLOAT value);
                [overload("InsertKeyFrame")] HRESULT InsertKeyFrameWithEasingFunction([in] FLOAT normalizedProgressKey, [in] FLOAT value, [in] Windows.UI.Composition.CompositionEasingFunction* easingFunction);
            }

            [exclusiveto(Windows.UI.Composition.SolidColorVisual)]
            [uuid(B83979A7-7865-411D-AC87-336DD1AC39DC)]
            [version(0x0A000000)]
            interface ISolidColorVisual : IInspectable
            {
                [propget] HRESULT Color([out] [retval] Windows.UI.Color* value);
                [propput] HRESULT Color([in] Windows.UI.Color value);
            }

            [exclusiveto(Windows.UI.Composition.Vector2KeyFrameAnimation)]
            [uuid(FE7974E6-D9F6-4216-B9E5-5B53617EB399)]
            [version(0x0A000000)]
            interface IVector2KeyFrameAnimation : IInspectable
            {
                [overload("InsertKeyFrame")] HRESULT InsertKeyFrame([in] FLOAT normalizedProgressKey, [in] Windows.Foundation.Numerics.Vector2 value);
                [overload("InsertKeyFrame")] HRESULT InsertKeyFrameWithEasingFunction([in] FLOAT normalizedProgressKey, [in] Windows.Foundation.Numerics.Vector2 value, [in] Windows.UI.Composition.CompositionEasingFunction* easingFunction);
            }

            [exclusiveto(Windows.UI.Composition.Vector3KeyFrameAnimation)]
            [uuid(C41DD554-E744-4624-9AA5-A22BC2D5200E)]
            [version(0x0A000000)]
            interface IVector3KeyFrameAnimation : IInspectable
            {
                [overload("InsertKeyFrame")] HRESULT InsertKeyFrame([in] FLOAT normalizedProgressKey, [in] Windows.Foundation.Numerics.Vector3 value);
                [overload("InsertKeyFrame")] HRESULT InsertKeyFrameWithEasingFunction([in] FLOAT normalizedProgressKey, [in] Windows.Foundation.Numerics.Vector3 value, [in] Windows.UI.Composition.CompositionEasingFunction* easingFunction);
            }

            [exclusiveto(Windows.UI.Composition.Vector4KeyFrameAnimation)]
            [uuid(753D5A87-C318-4D1D-BA59-2F90AAED2AC9)]
            [version(0x0A000000)]
            interface IVector4KeyFrameAnimation : IInspectable
            {
                [overload("InsertKeyFrame")] HRESULT InsertKeyFrame([in] FLOAT normalizedProgressKey, [in] Windows.Foundation.Numerics.Vector4 value);
                [overload("InsertKeyFrame")] HRESULT InsertKeyFrameWithEasingFunction([in] FLOAT normalizedProgressKey, [in] Windows.Foundation.Numerics.Vector4 value, [in] Windows.UI.Composition.CompositionEasingFunction* easingFunction);
            }

            [exclusiveto(Windows.UI.Composition.Visual)]
            [uuid(3B432316-F36F-4904-8797-2B2326C31626)]
            [version(0x0A000000)]
            interface IVisual : IInspectable
            {
                [propget] HRESULT CenterPoint([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propput] HRESULT CenterPoint([in] Windows.Foundation.Numerics.Vector3 value);
                [propget] HRESULT Clip([out] [retval] Windows.UI.Composition.CompositionClip** value);
                [propput] HRESULT Clip([in] Windows.UI.Composition.CompositionClip* value);
                [propget] HRESULT Offset([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propput] HRESULT Offset([in] Windows.Foundation.Numerics.Vector3 value);
                [propget] HRESULT Opacity([out] [retval] FLOAT* value);
                [propput] HRESULT Opacity([in] FLOAT value);
                [propget] HRESULT Orientation([out] [retval] Windows.Foundation.Numerics.Quaternion* value);
                [propput] HRESULT Orientation([in] Windows.Foundation.Numerics.Quaternion value);
                [propget] HRESULT Parent([out] [retval] Windows.UI.Composition.ContainerVisual** value);
                [propget] HRESULT RotationAngle([out] [retval] FLOAT* value);
                [propput] HRESULT RotationAngle([in] FLOAT value);
                [propget] HRESULT RotationAxis([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propput] HRESULT RotationAxis([in] Windows.Foundation.Numerics.Vector3 value);
                [propget] HRESULT Scale([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propput] HRESULT Scale([in] Windows.Foundation.Numerics.Vector3 value);
                [propget] HRESULT Size([out] [retval] Windows.Foundation.Numerics.Vector2* value);
                [propput] HRESULT Size([in] Windows.Foundation.Numerics.Vector2 value);
                [propget] HRESULT TransformMatrix([out] [retval] Windows.Foundation.Numerics.Matrix4x4* value);
                [propput] HRESULT TransformMatrix([in] Windows.Foundation.Numerics.Matrix4x4 value);
            }

            [exclusiveto(Windows.UI.Composition.VisualCollection)]
            [uuid(0E26A5AF-ECDF-497B-A081-25B3FC9A9EEA)]
            [version(0x0A000000)]
            interface IVisualCollection : IInspectable
                requires
                    Windows.Foundation.Collections.IIterable<Windows.UI.Composition.Visual*>
            {
                [propget] HRESULT Count([out] [retval] INT32* value);
                HRESULT InsertAbove([in] Windows.UI.Composition.Visual* newChild, [in] Windows.UI.Composition.Visual* sibling);
                HRESULT InsertAtBottom([in] Windows.UI.Composition.Visual* newChild);
                HRESULT InsertAtTop([in] Windows.UI.Composition.Visual* newChild);
                HRESULT InsertBelow([in] Windows.UI.Composition.Visual* newChild, [in] Windows.UI.Composition.Visual* sibling);
                HRESULT Remove([in] Windows.UI.Composition.Visual* child);
                HRESULT RemoveAll();
            }

            [exclusiveto(Windows.UI.Composition.CompositionAnimation)]
            [uuid(918F4415-C8CB-4251-9BEA-F2C9EE22B2B3)]
            [version(0x0A000000)]
            interface ICompositionAnimationFactory : IInspectable
            {
            }

            [exclusiveto(Windows.UI.Composition.CompositionClip)]
            [uuid(788C0D0A-13C1-4FAC-9B20-FDDD316D76AB)]
            [version(0x0A000000)]
            interface ICompositionClipFactory : IInspectable
            {
            }

            [exclusiveto(Windows.UI.Composition.CompositionEasingFunction)]
            [uuid(FD5B13AB-3F9D-4F6C-AD97-976D864F2815)]
            [version(0x0A000000)]
            interface ICompositionEasingFunctionFactory : IInspectable
            {
            }

            [exclusiveto(Windows.UI.Composition.CompositionObject)]
            [uuid(124AF11C-E4DD-4048-92F6-CFD86F8723C2)]
            [version(0x0A000000)]
            interface ICompositionObjectFactory : IInspectable
            {
            }

            [exclusiveto(Windows.UI.Composition.ContainerVisual)]
            [uuid(E562C939-9A17-45B9-81F3-16F486A354E6)]
            [version(0x0A000000)]
            interface IContainerVisualFactory : IInspectable
            {
            }

            [exclusiveto(Windows.UI.Composition.KeyFrameAnimation)]
            [uuid(2BEE8642-BC63-4E3B-83F2-01E914C6679E)]
            [version(0x0A000000)]
            interface IKeyFrameAnimationFactory : IInspectable
            {
            }

            [exclusiveto(Windows.UI.Composition.Visual)]
            [uuid(3A0F240A-C92E-49CF-82B4-8E57CBEA2EDE)]
            [version(0x0A000000)]
            interface IVisualFactory : IInspectable
            {
            }

            [composable(Windows.UI.Composition.ICompositionObjectFactory, protected, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionObject
            {
                [default] interface Windows.UI.Composition.ICompositionObject;
                interface Windows.Foundation.IClosable;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionEffect : Windows.UI.Composition.CompositionObject
            {
                [default] interface Windows.UI.Composition.ICompositionEffect;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionEffectFactoryLoadResult
            {
                [default] interface Windows.UI.Composition.ICompositionEffectFactoryLoadResult;
            }

            [activatable(Windows.UI.Composition.ICompositionEffectSourceParameterFactory, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionEffectSourceParameter
            {
                [default] interface Windows.UI.Composition.ICompositionEffectSourceParameter;
                interface Windows.Graphics.Effects.IGraphicsEffectSource;
            }

            [activatable(0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionImageOptions
            {
                [default] interface Windows.UI.Composition.ICompositionImageOptions;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionImage : Windows.UI.Composition.CompositionObject
            {
                [default] interface Windows.UI.Composition.ICompositionImage;
                interface Windows.UI.Composition.ICompositionSurface;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionImageLoadResult
            {
                [default] interface Windows.UI.Composition.ICompositionImageLoadResult;
            }

            [activatable(0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass Compositor
            {
                [default] interface Windows.UI.Composition.ICompositor;
                interface Windows.Foundation.IClosable;
            }

            [composable(Windows.UI.Composition.ICompositionAnimationFactory, protected, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionAnimation : Windows.UI.Composition.CompositionObject
            {
                [default] interface Windows.UI.Composition.ICompositionAnimation;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionPropertyAnimator : Windows.UI.Composition.CompositionObject
            {
                [default] interface Windows.UI.Composition.ICompositionPropertyAnimator;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass AnimationEndedEventArgs : Windows.UI.Composition.CompositionObject
            {
                [default] interface Windows.UI.Composition.IAnimationEndedEventArgs;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionPropertySet : Windows.UI.Composition.CompositionObject
            {
                [default] interface Windows.UI.Composition.ICompositionPropertySet;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionGraphicsDevice
            {
                [default] interface Windows.UI.Composition.ICompositionGraphicsDevice;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionEffectFactory : Windows.UI.Composition.CompositionObject
            {
                [default] interface Windows.UI.Composition.ICompositionEffectFactory;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionTarget : Windows.UI.Composition.CompositionObject
            {
                [default] interface Windows.UI.Composition.ICompositionTarget;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ExpressionAnimation : Windows.UI.Composition.CompositionAnimation
            {
                [default] interface Windows.UI.Composition.IExpressionAnimation;
            }

            [composable(Windows.UI.Composition.ICompositionEasingFunctionFactory, protected, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionEasingFunction : Windows.UI.Composition.CompositionObject
            {
                [default] interface Windows.UI.Composition.ICompositionEasingFunction;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CubicBezierEasingFunction : Windows.UI.Composition.CompositionEasingFunction
            {
                [default] interface Windows.UI.Composition.ICubicBezierEasingFunction;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass LinearEasingFunction : Windows.UI.Composition.CompositionEasingFunction
            {
                [default] interface Windows.UI.Composition.ILinearEasingFunction;
            }

            [composable(Windows.UI.Composition.IVisualFactory, protected, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass Visual : Windows.UI.Composition.CompositionObject
            {
                [default] interface Windows.UI.Composition.IVisual;
            }

            [composable(Windows.UI.Composition.IContainerVisualFactory, protected, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ContainerVisual : Windows.UI.Composition.Visual
            {
                [default] interface Windows.UI.Composition.IContainerVisual;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass EffectVisual : Windows.UI.Composition.ContainerVisual
            {
                [default] interface Windows.UI.Composition.IEffectVisual;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ImageVisual : Windows.UI.Composition.ContainerVisual
            {
                [default] interface Windows.UI.Composition.IImageVisual;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass SolidColorVisual : Windows.UI.Composition.ContainerVisual
            {
                [default] interface Windows.UI.Composition.ISolidColorVisual;
            }

            [composable(Windows.UI.Composition.ICompositionClipFactory, protected, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass CompositionClip : Windows.UI.Composition.CompositionObject
            {
                [default] interface Windows.UI.Composition.ICompositionClip;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass InsetClip : Windows.UI.Composition.CompositionClip
            {
                [default] interface Windows.UI.Composition.IInsetClip;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass VisualCollection : Windows.UI.Composition.CompositionObject
            {
                [default] interface Windows.UI.Composition.IVisualCollection;
                interface Windows.Foundation.Collections.IIterable<Windows.UI.Composition.Visual*>;
            }

            [composable(Windows.UI.Composition.IKeyFrameAnimationFactory, protected, 0x0A000000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass KeyFrameAnimation : Windows.UI.Composition.CompositionAnimation
            {
                [default] interface Windows.UI.Composition.IKeyFrameAnimation;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass ScalarKeyFrameAnimation : Windows.UI.Composition.KeyFrameAnimation
            {
                [default] interface Windows.UI.Composition.IScalarKeyFrameAnimation;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass Vector2KeyFrameAnimation : Windows.UI.Composition.KeyFrameAnimation
            {
                [default] interface Windows.UI.Composition.IVector2KeyFrameAnimation;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass Vector3KeyFrameAnimation : Windows.UI.Composition.KeyFrameAnimation
            {
                [default] interface Windows.UI.Composition.IVector3KeyFrameAnimation;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x0A000000)]
            runtimeclass Vector4KeyFrameAnimation : Windows.UI.Composition.KeyFrameAnimation
            {
                [default] interface Windows.UI.Composition.IVector4KeyFrameAnimation;
            }
        }
    }
}
