Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1722)

Side by Side Diff: ui/gfx/geometry/point.h

Issue 2499783002: Move SaturatedArithmetic from Blink to base (Closed)
Patch Set: Revert flag addition Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/ubsan/security_blacklist.txt ('k') | ui/gfx/geometry/rect.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef UI_GFX_GEOMETRY_POINT_H_ 5 #ifndef UI_GFX_GEOMETRY_POINT_H_
6 #define UI_GFX_GEOMETRY_POINT_H_ 6 #define UI_GFX_GEOMETRY_POINT_H_
7 7
8 #include <iosfwd> 8 #include <iosfwd>
9 #include <string> 9 #include <string>
10 #include <tuple> 10 #include <tuple>
11 11
12 #include "base/numerics/saturated_arithmetic.h"
12 #include "build/build_config.h" 13 #include "build/build_config.h"
13 #include "ui/gfx/geometry/safe_integer_conversions.h"
14 #include "ui/gfx/geometry/vector2d.h" 14 #include "ui/gfx/geometry/vector2d.h"
15 #include "ui/gfx/gfx_export.h" 15 #include "ui/gfx/gfx_export.h"
16 16
17 #if defined(OS_WIN) 17 #if defined(OS_WIN)
18 typedef unsigned long DWORD; 18 typedef unsigned long DWORD;
19 typedef struct tagPOINT POINT; 19 typedef struct tagPOINT POINT;
20 #elif defined(OS_MACOSX) 20 #elif defined(OS_MACOSX)
21 typedef struct CGPoint CGPoint; 21 typedef struct CGPoint CGPoint;
22 #endif 22 #endif
23 23
(...skipping 25 matching lines...) Expand all
49 constexpr int y() const { return y_; } 49 constexpr int y() const { return y_; }
50 void set_x(int x) { x_ = x; } 50 void set_x(int x) { x_ = x; }
51 void set_y(int y) { y_ = y; } 51 void set_y(int y) { y_ = y; }
52 52
53 void SetPoint(int x, int y) { 53 void SetPoint(int x, int y) {
54 x_ = x; 54 x_ = x;
55 y_ = y; 55 y_ = y;
56 } 56 }
57 57
58 void Offset(int delta_x, int delta_y) { 58 void Offset(int delta_x, int delta_y) {
59 x_ = SafeAdd(x_, delta_x); 59 x_ = base::SaturatedAddition(x_, delta_x);
60 y_ = SafeAdd(y_, delta_y); 60 y_ = base::SaturatedAddition(y_, delta_y);
61 } 61 }
62 62
63 void operator+=(const Vector2d& vector) { 63 void operator+=(const Vector2d& vector) {
64 x_ = SafeAdd(x_, vector.x()); 64 x_ = base::SaturatedAddition(x_, vector.x());
65 y_ = SafeAdd(y_, vector.y()); 65 y_ = base::SaturatedAddition(y_, vector.y());
66 } 66 }
67 67
68 void operator-=(const Vector2d& vector) { 68 void operator-=(const Vector2d& vector) {
69 x_ = SafeSubtract(x_, vector.x()); 69 x_ = base::SaturatedSubtraction(x_, vector.x());
70 y_ = SafeSubtract(y_, vector.y()); 70 y_ = base::SaturatedSubtraction(y_, vector.y());
71 } 71 }
72 72
73 void SetToMin(const Point& other); 73 void SetToMin(const Point& other);
74 void SetToMax(const Point& other); 74 void SetToMax(const Point& other);
75 75
76 bool IsOrigin() const { return x_ == 0 && y_ == 0; } 76 bool IsOrigin() const { return x_ == 0 && y_ == 0; }
77 77
78 Vector2d OffsetFromOrigin() const { return Vector2d(x_, y_); } 78 Vector2d OffsetFromOrigin() const { return Vector2d(x_, y_); }
79 79
80 // A point is less than another point if its y-value is closer 80 // A point is less than another point if its y-value is closer
(...skipping 28 matching lines...) Expand all
109 return result; 109 return result;
110 } 110 }
111 111
112 inline Point operator-(const Point& lhs, const Vector2d& rhs) { 112 inline Point operator-(const Point& lhs, const Vector2d& rhs) {
113 Point result(lhs); 113 Point result(lhs);
114 result -= rhs; 114 result -= rhs;
115 return result; 115 return result;
116 } 116 }
117 117
118 inline Vector2d operator-(const Point& lhs, const Point& rhs) { 118 inline Vector2d operator-(const Point& lhs, const Point& rhs) {
119 return Vector2d(SafeSubtract(lhs.x(), rhs.x()), 119 return Vector2d(base::SaturatedSubtraction(lhs.x(), rhs.x()),
120 SafeSubtract(lhs.y(), rhs.y())); 120 base::SaturatedSubtraction(lhs.y(), rhs.y()));
121 } 121 }
122 122
123 inline Point PointAtOffsetFromOrigin(const Vector2d& offset_from_origin) { 123 inline Point PointAtOffsetFromOrigin(const Vector2d& offset_from_origin) {
124 return Point(offset_from_origin.x(), offset_from_origin.y()); 124 return Point(offset_from_origin.x(), offset_from_origin.y());
125 } 125 }
126 126
127 // This is declared here for use in gtest-based unit tests but is defined in 127 // This is declared here for use in gtest-based unit tests but is defined in
128 // the //ui/gfx:test_support target. Depend on that to use this in your unit 128 // the //ui/gfx:test_support target. Depend on that to use this in your unit
129 // test. This should not be used in production code - call ToString() instead. 129 // test. This should not be used in production code - call ToString() instead.
130 void PrintTo(const Point& point, ::std::ostream* os); 130 void PrintTo(const Point& point, ::std::ostream* os);
131 131
132 // Helper methods to scale a gfx::Point to a new gfx::Point. 132 // Helper methods to scale a gfx::Point to a new gfx::Point.
133 GFX_EXPORT Point ScaleToCeiledPoint(const Point& point, 133 GFX_EXPORT Point ScaleToCeiledPoint(const Point& point,
134 float x_scale, 134 float x_scale,
135 float y_scale); 135 float y_scale);
136 GFX_EXPORT Point ScaleToCeiledPoint(const Point& point, float x_scale); 136 GFX_EXPORT Point ScaleToCeiledPoint(const Point& point, float x_scale);
137 GFX_EXPORT Point ScaleToFlooredPoint(const Point& point, 137 GFX_EXPORT Point ScaleToFlooredPoint(const Point& point,
138 float x_scale, 138 float x_scale,
139 float y_scale); 139 float y_scale);
140 GFX_EXPORT Point ScaleToFlooredPoint(const Point& point, float x_scale); 140 GFX_EXPORT Point ScaleToFlooredPoint(const Point& point, float x_scale);
141 GFX_EXPORT Point ScaleToRoundedPoint(const Point& point, 141 GFX_EXPORT Point ScaleToRoundedPoint(const Point& point,
142 float x_scale, 142 float x_scale,
143 float y_scale); 143 float y_scale);
144 GFX_EXPORT Point ScaleToRoundedPoint(const Point& point, float x_scale); 144 GFX_EXPORT Point ScaleToRoundedPoint(const Point& point, float x_scale);
145 145
146 } // namespace gfx 146 } // namespace gfx
147 147
148 #endif // UI_GFX_GEOMETRY_POINT_H_ 148 #endif // UI_GFX_GEOMETRY_POINT_H_
OLDNEW
« no previous file with comments | « tools/ubsan/security_blacklist.txt ('k') | ui/gfx/geometry/rect.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698