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