summaryrefslogtreecommitdiff
path: root/Source/ThirdParty/ANGLE/util/Matrix.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/ThirdParty/ANGLE/util/Matrix.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/ThirdParty/ANGLE/util/Matrix.h')
-rw-r--r--Source/ThirdParty/ANGLE/util/Matrix.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/Source/ThirdParty/ANGLE/util/Matrix.h b/Source/ThirdParty/ANGLE/util/Matrix.h
new file mode 100644
index 000000000..a4c56dc55
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/util/Matrix.h
@@ -0,0 +1,63 @@
+//
+// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Matrix:
+// Helper class for doing matrix math.
+//
+
+#ifndef UTIL_MATRIX_H
+#define UTIL_MATRIX_H
+
+#include <export.h>
+
+#include "Vector.h"
+
+struct ANGLE_EXPORT Matrix4
+{
+ float data[16];
+
+ Matrix4();
+ Matrix4(float m00,
+ float m01,
+ float m02,
+ float m03,
+ float m10,
+ float m11,
+ float m12,
+ float m13,
+ float m20,
+ float m21,
+ float m22,
+ float m23,
+ float m30,
+ float m31,
+ float m32,
+ float m33);
+
+ static Matrix4 identity();
+ static Matrix4 rotate(float angle, const Vector3 &p);
+ static Matrix4 translate(const Vector3 &t);
+ static Matrix4 scale(const Vector3 &s);
+ static Matrix4 frustum(float l, float r, float b, float t, float n, float f);
+ static Matrix4 perspective(float fov, float aspectRatio, float n, float f);
+ static Matrix4 ortho(float l, float r, float b, float t, float n, float f);
+ static Matrix4 rollPitchYaw(float roll, float pitch, float yaw);
+
+ static Matrix4 invert(const Matrix4 &mat);
+ static Matrix4 transpose(const Matrix4 &mat);
+ static Vector3 transform(const Matrix4 &mat, const Vector3 &pt);
+ static Vector3 transform(const Matrix4 &mat, const Vector4 &pt);
+};
+
+ANGLE_EXPORT Matrix4 operator*(const Matrix4 &a, const Matrix4 &b);
+ANGLE_EXPORT Matrix4 &operator*=(Matrix4 &a, const Matrix4 &b);
+ANGLE_EXPORT Matrix4 operator*(const Matrix4 &a, float b);
+ANGLE_EXPORT Matrix4 &operator*=(Matrix4 &a, float b);
+ANGLE_EXPORT Vector4 operator*(const Matrix4 &a, const Vector4 &b);
+
+ANGLE_EXPORT bool operator==(const Matrix4 &a, const Matrix4 &b);
+ANGLE_EXPORT bool operator!=(const Matrix4 &a, const Matrix4 &b);
+
+#endif // UTIL_MATRIX_H