diff options
author | Romain Guy <romainguy@google.com> | 2010-12-08 18:34:42 -0800 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2010-12-08 19:06:58 -0800 |
commit | a957eea78557cb47a91d44d9e6ee641c58cf1c07 (patch) | |
tree | bc6ee438bdb116feee2fef40ada876367544dcbb /libs/hwui/Vector.h | |
parent | 1e8b5fea90e6160f8cdd101767d0a8f6842751fd (diff) | |
download | frameworks_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.h | 119 |
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 |