summaryrefslogtreecommitdiffstats
path: root/libs/hwui/Vector.h
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2010-12-08 18:34:42 -0800
committerRomain Guy <romainguy@google.com>2010-12-08 19:06:58 -0800
commita957eea78557cb47a91d44d9e6ee641c58cf1c07 (patch)
treebc6ee438bdb116feee2fef40ada876367544dcbb /libs/hwui/Vector.h
parent1e8b5fea90e6160f8cdd101767d0a8f6842751fd (diff)
downloadframeworks_base-a957eea78557cb47a91d44d9e6ee641c58cf1c07.zip
frameworks_base-a957eea78557cb47a91d44d9e6ee641c58cf1c07.tar.gz
frameworks_base-a957eea78557cb47a91d44d9e6ee641c58cf1c07.tar.bz2
New, better line drawing implementation.
Bug #3207544 Bug #3225875 Change-Id: Ibdd1dfc64e01625d5c441f39eb0aa3ee647f6ff5
Diffstat (limited to 'libs/hwui/Vector.h')
-rw-r--r--libs/hwui/Vector.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/libs/hwui/Vector.h b/libs/hwui/Vector.h
new file mode 100644
index 0000000..46dded5
--- /dev/null
+++ b/libs/hwui/Vector.h
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_HWUI_VECTOR_H
+#define ANDROID_HWUI_VECTOR_H
+
+namespace android {
+namespace uirenderer {
+
+///////////////////////////////////////////////////////////////////////////////
+// Classes
+///////////////////////////////////////////////////////////////////////////////
+
+struct Vector2 {
+ float x;
+ float y;
+
+ Vector2() :
+ x(0.0f), y(0.0f) {
+ }
+
+ Vector2(float px, float py) :
+ x(px), y(py) {
+ }
+
+ float length() const {
+ return sqrt(x * x + y * y);
+ }
+
+ void operator+=(const Vector2& v) {
+ x += v.x;
+ y += v.y;
+ }
+
+ void operator-=(const Vector2& v) {
+ x -= v.x;
+ y -= v.y;
+ }
+
+ void operator+=(const float v) {
+ x += v;
+ y += v;
+ }
+
+ void operator-=(const float v) {
+ x -= v;
+ y -= v;
+ }
+
+ void operator/=(float s) {
+ x /= s;
+ y /= s;
+ }
+
+ void operator*=(float s) {
+ x *= s;
+ y *= s;
+ }
+
+ Vector2 operator+(const Vector2& v) const {
+ return Vector2(x + v.x, y + v.y);
+ }
+
+ Vector2 operator-(const Vector2& v) const {
+ return Vector2(x - v.x, y - v.y);
+ }
+
+ Vector2 operator/(float s) const {
+ return Vector2(x / s, y / s);
+ }
+
+ Vector2 operator*(float s) const {
+ return Vector2(x * s, y * s);
+ }
+
+ void normalize() {
+ float s = 1.0f / length();
+ x *= s;
+ y *= s;
+ }
+
+ Vector2 copyNormalized() const {
+ Vector2 v(x, y);
+ v.normalize();
+ return v;
+ }
+
+ float dot(const Vector2& v) const {
+ return x * v.x + y * v.y;
+ }
+
+ void dump() {
+ LOGD("Vector2[%.2f, %.2f]", x, y);
+ }
+}; // class Vector2
+
+///////////////////////////////////////////////////////////////////////////////
+// Types
+///////////////////////////////////////////////////////////////////////////////
+
+typedef Vector2 vec2;
+
+}; // namespace uirenderer
+}; // namespace android
+
+#endif // ANDROID_HWUI_VECTOR_H