summaryrefslogtreecommitdiff
path: root/Source/ThirdParty/ANGLE/util/Vector.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/ThirdParty/ANGLE/util/Vector.h')
-rw-r--r--Source/ThirdParty/ANGLE/util/Vector.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/Source/ThirdParty/ANGLE/util/Vector.h b/Source/ThirdParty/ANGLE/util/Vector.h
new file mode 100644
index 000000000..e1e88cf77
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/util/Vector.h
@@ -0,0 +1,84 @@
+//
+// 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.
+//
+// Vector:
+// Vector class for linear math.
+//
+
+#ifndef UTIL_VECTOR_H
+#define UTIL_VECTOR_H
+
+#include <ostream>
+
+#include <export.h>
+
+struct ANGLE_EXPORT Vector2
+{
+ Vector2();
+ Vector2(float x, float y);
+
+ bool operator==(const Vector2 &vec) const;
+ bool operator!=(const Vector2 &vec) const;
+
+ static float length(const Vector2 &vec);
+ static float lengthSquared(const Vector2 &vec);
+
+ static Vector2 normalize(const Vector2 &vec);
+
+ float *data() { return &x; }
+ const float *data() const { return &x; }
+
+ float x, y;
+};
+
+ANGLE_EXPORT std::ostream &operator<<(std::ostream &stream, const Vector2 &vec);
+
+struct ANGLE_EXPORT Vector3
+{
+ Vector3();
+ Vector3(float x, float y, float z);
+
+ static float length(const Vector3 &vec);
+ static float lengthSquared(const Vector3 &vec);
+
+ static Vector3 normalize(const Vector3 &vec);
+
+ static float dot(const Vector3 &a, const Vector3 &b);
+ static Vector3 cross(const Vector3 &a, const Vector3 &b);
+
+ float *data() { return &x; }
+ const float *data() const { return &x; }
+
+ float x, y, z;
+};
+
+ANGLE_EXPORT Vector3 operator*(const Vector3 &a, const Vector3 &b);
+ANGLE_EXPORT Vector3 operator*(const Vector3 &a, const float &b);
+ANGLE_EXPORT Vector3 operator/(const Vector3 &a, const Vector3 &b);
+ANGLE_EXPORT Vector3 operator/(const Vector3 &a, const float &b);
+ANGLE_EXPORT Vector3 operator+(const Vector3 &a, const Vector3 &b);
+ANGLE_EXPORT Vector3 operator-(const Vector3 &a, const Vector3 &b);
+ANGLE_EXPORT bool operator==(const Vector3 &a, const Vector3 &b);
+ANGLE_EXPORT bool operator!=(const Vector3 &a, const Vector3 &b);
+
+struct ANGLE_EXPORT Vector4
+{
+ Vector4();
+ Vector4(float x, float y, float z, float w);
+
+ static float length(const Vector4 &vec);
+ static float lengthSquared(const Vector4 &vec);
+
+ static Vector4 normalize(const Vector4 &vec);
+
+ static float dot(const Vector4 &a, const Vector4 &b);
+
+ float *data() { return &x; }
+ const float *data() const { return &x; }
+
+ float x, y, z, w;
+};
+
+#endif // UTIL_VECTOR_H