//
// 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
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Numerics
        {
            typedef struct Matrix3x2 Matrix3x2;

            typedef struct Matrix4x4 Matrix4x4;

            typedef struct Plane Plane;

            typedef struct Quaternion Quaternion;

            typedef struct Rational Rational;

            typedef struct Vector2 Vector2;

            typedef struct Vector3 Vector3;

            typedef struct Vector4 Vector4;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Foundation
    {
        namespace Numerics
        {
            declare
            {
                interface Windows.Foundation.IReference<Windows.Foundation.Numerics.Matrix4x4>;

                interface Windows.Foundation.IReference<Windows.Foundation.Numerics.Quaternion>;

                interface Windows.Foundation.IReference<Windows.Foundation.Numerics.Vector2>;

                interface Windows.Foundation.IReference<Windows.Foundation.Numerics.Vector3>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Foundation
    {
        namespace Numerics
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct Matrix3x2
            {
                FLOAT M11;
                FLOAT M12;
                FLOAT M21;
                FLOAT M22;
                FLOAT M31;
                FLOAT M32;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct Matrix4x4
            {
                FLOAT M11;
                FLOAT M12;
                FLOAT M13;
                FLOAT M14;
                FLOAT M21;
                FLOAT M22;
                FLOAT M23;
                FLOAT M24;
                FLOAT M31;
                FLOAT M32;
                FLOAT M33;
                FLOAT M34;
                FLOAT M41;
                FLOAT M42;
                FLOAT M43;
                FLOAT M44;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct Vector3
            {
                FLOAT X;
                FLOAT Y;
                FLOAT Z;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct Plane
            {
                Windows.Foundation.Numerics.Vector3 Normal;
                FLOAT D;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct Quaternion
            {
                FLOAT X;
                FLOAT Y;
                FLOAT Z;
                FLOAT W;
            };

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            struct Rational
            {
                UINT32 Numerator;
                UINT32 Denominator;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct Vector2
            {
                FLOAT X;
                FLOAT Y;
            };


            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct Vector4
            {
                FLOAT X;
                FLOAT Y;
                FLOAT Z;
                FLOAT W;
            };
        }
    }
}
