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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            runtimeclass DependencyProperty;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Media
            {
                namespace Media3D
                {
                    typedef struct Matrix3D Matrix3D;

                    interface ICompositeTransform3D;

                    interface ICompositeTransform3DStatics;

                    interface IMatrix3DHelper;

                    interface IMatrix3DHelperStatics;

                    interface IPerspectiveTransform3D;

                    interface IPerspectiveTransform3DStatics;

                    interface ITransform3D;

                    interface ITransform3DFactory;

                    runtimeclass CompositeTransform3D;

                    runtimeclass Matrix3DHelper;

                    runtimeclass PerspectiveTransform3D;

                    runtimeclass Transform3D;
                }
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Xaml
        {
            namespace Media
            {
                namespace Media3D
                {
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    struct Matrix3D
                    {
                        DOUBLE M11;
                        DOUBLE M12;
                        DOUBLE M13;
                        DOUBLE M14;
                        DOUBLE M21;
                        DOUBLE M22;
                        DOUBLE M23;
                        DOUBLE M24;
                        DOUBLE M31;
                        DOUBLE M32;
                        DOUBLE M33;
                        DOUBLE M34;
                        DOUBLE OffsetX;
                        DOUBLE OffsetY;
                        DOUBLE OffsetZ;
                        DOUBLE M44;
                    };

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.UI.Xaml.Media.Media3D.CompositeTransform3D)]
                    [uuid(8977CB01-AF8D-4AF5-B084-C08EB9704ABE)]
                    interface ICompositeTransform3D : IInspectable
                    {
                        [propget] HRESULT CenterX([out] [retval] DOUBLE* value);
                        [propput] HRESULT CenterX([in] DOUBLE value);
                        [propget] HRESULT CenterY([out] [retval] DOUBLE* value);
                        [propput] HRESULT CenterY([in] DOUBLE value);
                        [propget] HRESULT CenterZ([out] [retval] DOUBLE* value);
                        [propput] HRESULT CenterZ([in] DOUBLE value);
                        [propget] HRESULT RotationX([out] [retval] DOUBLE* value);
                        [propput] HRESULT RotationX([in] DOUBLE value);
                        [propget] HRESULT RotationY([out] [retval] DOUBLE* value);
                        [propput] HRESULT RotationY([in] DOUBLE value);
                        [propget] HRESULT RotationZ([out] [retval] DOUBLE* value);
                        [propput] HRESULT RotationZ([in] DOUBLE value);
                        [propget] HRESULT ScaleX([out] [retval] DOUBLE* value);
                        [propput] HRESULT ScaleX([in] DOUBLE value);
                        [propget] HRESULT ScaleY([out] [retval] DOUBLE* value);
                        [propput] HRESULT ScaleY([in] DOUBLE value);
                        [propget] HRESULT ScaleZ([out] [retval] DOUBLE* value);
                        [propput] HRESULT ScaleZ([in] DOUBLE value);
                        [propget] HRESULT TranslateX([out] [retval] DOUBLE* value);
                        [propput] HRESULT TranslateX([in] DOUBLE value);
                        [propget] HRESULT TranslateY([out] [retval] DOUBLE* value);
                        [propput] HRESULT TranslateY([in] DOUBLE value);
                        [propget] HRESULT TranslateZ([out] [retval] DOUBLE* value);
                        [propput] HRESULT TranslateZ([in] DOUBLE value);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.UI.Xaml.Media.Media3D.CompositeTransform3D)]
                    [uuid(DDBF4D67-2A25-48F3-9808-C51EC3D55BEC)]
                    interface ICompositeTransform3DStatics : IInspectable
                    {
                        [propget] HRESULT CenterXProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT CenterYProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT CenterZProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT RotationXProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT RotationYProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT RotationZProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT ScaleXProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT ScaleYProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT ScaleZProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT TranslateXProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT TranslateYProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT TranslateZProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.UI.Xaml.Media.Media3D.Matrix3DHelper)]
                    [uuid(E48C10EF-9927-4C9B-8213-07775512BA04)]
                    interface IMatrix3DHelper : IInspectable
                    {
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.UI.Xaml.Media.Media3D.Matrix3DHelper)]
                    [uuid(9264545E-E158-4E74-8899-689160BD2F8C)]
                    interface IMatrix3DHelperStatics : IInspectable
                    {
                        [propget] HRESULT Identity([out] [retval] Windows.UI.Xaml.Media.Media3D.Matrix3D* value);
                        HRESULT Multiply([in] Windows.UI.Xaml.Media.Media3D.Matrix3D matrix1, [in] Windows.UI.Xaml.Media.Media3D.Matrix3D matrix2, [out] [retval] Windows.UI.Xaml.Media.Media3D.Matrix3D* result);
                        HRESULT FromElements([in] DOUBLE m11, [in] DOUBLE m12, [in] DOUBLE m13, [in] DOUBLE m14, [in] DOUBLE m21, [in] DOUBLE m22, [in] DOUBLE m23, [in] DOUBLE m24, [in] DOUBLE m31, [in] DOUBLE m32, [in] DOUBLE m33, [in] DOUBLE m34, [in] DOUBLE offsetX, [in] DOUBLE offsetY, [in] DOUBLE offsetZ, [in] DOUBLE m44, [out] [retval] Windows.UI.Xaml.Media.Media3D.Matrix3D* result);
                        HRESULT GetHasInverse([in] Windows.UI.Xaml.Media.Media3D.Matrix3D target, [out] [retval] boolean* result);
                        HRESULT GetIsIdentity([in] Windows.UI.Xaml.Media.Media3D.Matrix3D target, [out] [retval] boolean* result);
                        HRESULT Invert([in] Windows.UI.Xaml.Media.Media3D.Matrix3D target, [out] [retval] Windows.UI.Xaml.Media.Media3D.Matrix3D* result);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.UI.Xaml.Media.Media3D.PerspectiveTransform3D)]
                    [uuid(9A7B532A-30F9-40A1-96C9-C59D87F95AC3)]
                    interface IPerspectiveTransform3D : IInspectable
                    {
                        [propget] HRESULT Depth([out] [retval] DOUBLE* value);
                        [propput] HRESULT Depth([in] DOUBLE value);
                        [propget] HRESULT OffsetX([out] [retval] DOUBLE* value);
                        [propput] HRESULT OffsetX([in] DOUBLE value);
                        [propget] HRESULT OffsetY([out] [retval] DOUBLE* value);
                        [propput] HRESULT OffsetY([in] DOUBLE value);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.UI.Xaml.Media.Media3D.PerspectiveTransform3D)]
                    [uuid(8E6F6400-620C-48C7-844D-3F0984DA5B17)]
                    interface IPerspectiveTransform3DStatics : IInspectable
                    {
                        [propget] HRESULT DepthProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT OffsetXProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                        [propget] HRESULT OffsetYProperty([out] [retval] Windows.UI.Xaml.DependencyProperty** value);
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.UI.Xaml.Media.Media3D.Transform3D)]
                    [uuid(AE3ED43A-A9FC-4C31-86CD-56D9CA251A69)]
                    interface ITransform3D : IInspectable
                    {
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [exclusiveto(Windows.UI.Xaml.Media.Media3D.Transform3D)]
                    [uuid(052C1F7A-8D73-48CD-BBB8-D00434CAAE5D)]
                    interface ITransform3DFactory : IInspectable
                    {
                        HRESULT CreateInstance([in] IInspectable* baseInterface, [out] IInspectable** innerInterface, [out] [retval] Windows.UI.Xaml.Media.Media3D.Transform3D** value);
                    }

                    [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [marshaling_behavior(agile)]
                    [static(Windows.UI.Xaml.Media.Media3D.ICompositeTransform3DStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                    [threading(both)]
                    runtimeclass CompositeTransform3D : Windows.UI.Xaml.Media.Media3D.Transform3D
                    {
                        [default] interface Windows.UI.Xaml.Media.Media3D.ICompositeTransform3D;
                    }

                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [marshaling_behavior(agile)]
                    [static(Windows.UI.Xaml.Media.Media3D.IMatrix3DHelperStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                    [threading(both)]
                    runtimeclass Matrix3DHelper
                    {
                        [default] interface Windows.UI.Xaml.Media.Media3D.IMatrix3DHelper;
                    }

                    [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [marshaling_behavior(agile)]
                    [static(Windows.UI.Xaml.Media.Media3D.IPerspectiveTransform3DStatics, Windows.Foundation.UniversalApiContract, 1.0)]
                    [threading(both)]
                    runtimeclass PerspectiveTransform3D : Windows.UI.Xaml.Media.Media3D.Transform3D
                    {
                        [default] interface Windows.UI.Xaml.Media.Media3D.IPerspectiveTransform3D;
                    }

                    [composable(Windows.UI.Xaml.Media.Media3D.ITransform3DFactory, protected, Windows.Foundation.UniversalApiContract, 1.0)]
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                    [marshaling_behavior(agile)]
                    [threading(both)]
                    runtimeclass Transform3D : Windows.UI.Xaml.DependencyObject
                    {
                        [default] interface Windows.UI.Xaml.Media.Media3D.ITransform3D;
                    }
                }
            }
        }
    }
}
