| Index: ui/gfx/vector2d.h
|
| diff --git a/ui/gfx/vector2d.h b/ui/gfx/vector2d.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..19b240d8c2f429b06f8f6fc3d779e84445f91146
|
| --- /dev/null
|
| +++ b/ui/gfx/vector2d.h
|
| @@ -0,0 +1,84 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Defines a simple integer vector class. This class is used to indicate a
|
| +// distance in two dimentions between two points. Subtracting two points should
|
| +// produce a vector, and adding a vector to a point produces the point at the
|
| +// vector's distance from the original point.
|
| +
|
| +#ifndef UI_GFX_VECTOR2D_H_
|
| +#define UI_GFX_VECTOR2D_H_
|
| +
|
| +#include <cmath>
|
| +#include <string>
|
| +
|
| +#include "ui/base/ui_export.h"
|
| +#include "ui/gfx/vector2d_f.h"
|
| +
|
| +namespace gfx {
|
| +
|
| +class UI_EXPORT Vector2d {
|
| + public:
|
| + Vector2d();
|
| + Vector2d(int x, int y);
|
| +
|
| + int x() const { return x_; }
|
| + void set_x(int x) { x_ = x; }
|
| +
|
| + int y() const { return y_; }
|
| + void set_y(int y) { y_ = y; }
|
| +
|
| + bool IsZero() const { return x_ == 0 && y_ == 0; }
|
| +
|
| + void Grow(int x, int y) {
|
| + x_ += x;
|
| + y_ += y;
|
| + }
|
| +
|
| + void Add(const Vector2d& other) {
|
| + x_ += other.x_;
|
| + y_ += other.y_;
|
| + }
|
| +
|
| + float LengthSquared() const {
|
| + return x_ * x_ + y_ * y_;
|
| + }
|
| +
|
| + float Length() const {
|
| + return static_cast<float>(std::sqrt(
|
| + static_cast<double>(x_) * x_ + static_cast<double>(y_) * y_));
|
| + }
|
| +
|
| + std::string ToString() const;
|
| +
|
| + operator Vector2dF() const { return Vector2dF(x_, y_); }
|
| +
|
| + private:
|
| + int x_;
|
| + int y_;
|
| +};
|
| +
|
| +inline bool operator==(const Vector2d& lhs, const Vector2d& rhs) {
|
| + return lhs.x() == rhs.x() && lhs.y() == rhs.y();
|
| +}
|
| +
|
| +inline Vector2d operator-(const Vector2d& v) {
|
| + return Vector2d(-v.x(), -v.y());
|
| +}
|
| +
|
| +inline Vector2d operator+(const Vector2d& lhs, const Vector2d& rhs) {
|
| + Vector2d result = lhs;
|
| + result.Add(rhs);
|
| + return result;
|
| +}
|
| +
|
| +inline Vector2d operator-(const Vector2d& lhs, const Vector2d& rhs) {
|
| + Vector2d result = lhs;
|
| + result.Add(-rhs);
|
| + return result;
|
| +}
|
| +
|
| +} // namespace gfx
|
| +
|
| +#endif // UI_GFX_VECTOR2D_H_
|
|
|