1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "ui/gfx/geometry/vector2d.h" 6 7 #include <cmath> 8 9 #include "base/numerics/clamped_math.h" 10 #include "base/strings/stringprintf.h" 11 12 namespace gfx { 13 IsZero() const14bool Vector2d::IsZero() const { 15 return x_ == 0 && y_ == 0; 16 } 17 Add(const Vector2d & other)18void Vector2d::Add(const Vector2d& other) { 19 x_ = base::ClampAdd(other.x_, x_); 20 y_ = base::ClampAdd(other.y_, y_); 21 } 22 Subtract(const Vector2d & other)23void Vector2d::Subtract(const Vector2d& other) { 24 x_ = base::ClampSub(x_, other.x_); 25 y_ = base::ClampSub(y_, other.y_); 26 } 27 LengthSquared() const28int64_t Vector2d::LengthSquared() const { 29 return static_cast<int64_t>(x_) * x_ + static_cast<int64_t>(y_) * y_; 30 } 31 Length() const32float Vector2d::Length() const { 33 return static_cast<float>(std::sqrt(static_cast<double>(LengthSquared()))); 34 } 35 ToString() const36std::string Vector2d::ToString() const { 37 return base::StringPrintf("[%d %d]", x_, y_); 38 } 39 40 } // namespace gfx 41