OLD | NEW |
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_POINT_F_H_ | 5 #ifndef UI_GFX_POINT_F_H_ |
6 #define UI_GFX_POINT_F_H_ | 6 #define UI_GFX_POINT_F_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "ui/base/ui_export.h" | 10 #include "ui/base/ui_export.h" |
11 #include "ui/gfx/point_base.h" | 11 #include "ui/gfx/point_base.h" |
| 12 #include "ui/gfx/vector2d_f.h" |
12 | 13 |
13 namespace gfx { | 14 namespace gfx { |
14 | 15 |
15 // A floating version of gfx::Point. | 16 // A floating version of gfx::Point. |
16 class UI_EXPORT PointF : public PointBase<PointF, float> { | 17 class UI_EXPORT PointF : public PointBase<PointF, float, Vector2dF> { |
17 public: | 18 public: |
18 PointF(); | 19 PointF(); |
19 PointF(float x, float y); | 20 PointF(float x, float y); |
20 ~PointF(); | 21 ~PointF(); |
21 | 22 |
22 PointF Scale(float scale) const WARN_UNUSED_RESULT { | 23 PointF Scale(float scale) const WARN_UNUSED_RESULT { |
23 return Scale(scale, scale); | 24 return Scale(scale, scale); |
24 } | 25 } |
25 | 26 |
26 PointF Scale(float x_scale, float y_scale) const WARN_UNUSED_RESULT { | 27 PointF Scale(float x_scale, float y_scale) const WARN_UNUSED_RESULT { |
27 return PointF(x() * x_scale, y() * y_scale); | 28 return PointF(x() * x_scale, y() * y_scale); |
28 } | 29 } |
29 | 30 |
30 // Returns a string representation of point. | 31 // Returns a string representation of point. |
31 std::string ToString() const; | 32 std::string ToString() const; |
32 }; | 33 }; |
33 | 34 |
34 inline bool operator==(const PointF& lhs, const PointF& rhs) { | 35 inline bool operator==(const PointF& lhs, const PointF& rhs) { |
35 return lhs.x() == rhs.x() && lhs.y() == rhs.y(); | 36 return lhs.x() == rhs.x() && lhs.y() == rhs.y(); |
36 } | 37 } |
37 | 38 |
38 inline bool operator!=(const PointF& lhs, const PointF& rhs) { | 39 inline bool operator!=(const PointF& lhs, const PointF& rhs) { |
39 return !(lhs == rhs); | 40 return !(lhs == rhs); |
40 } | 41 } |
41 | 42 |
42 inline PointF operator+(PointF lhs, PointF rhs) { | 43 inline PointF operator+(const PointF& lhs, const Vector2dF& rhs) { |
43 return lhs.Add(rhs); | 44 return lhs.Add(rhs); |
44 } | 45 } |
45 | 46 |
46 inline PointF operator-(PointF lhs, PointF rhs) { | 47 inline PointF operator-(const PointF& lhs, const Vector2dF& rhs) { |
47 return lhs.Subtract(rhs); | 48 return lhs.Subtract(rhs); |
48 } | 49 } |
49 | 50 |
| 51 inline Vector2dF operator-(const PointF& lhs, const PointF& rhs) { |
| 52 return lhs.OffsetFrom(rhs); |
| 53 } |
| 54 |
| 55 inline PointF PointAtOffsetFromOrigin(const Vector2dF& offset_from_origin) { |
| 56 return PointF(offset_from_origin.x(), offset_from_origin.y()); |
| 57 } |
| 58 |
50 #if !defined(COMPILER_MSVC) | 59 #if !defined(COMPILER_MSVC) |
51 extern template class PointBase<PointF, float>; | 60 extern template class PointBase<PointF, float, Vector2dF>; |
52 #endif | 61 #endif |
53 | 62 |
54 } // namespace gfx | 63 } // namespace gfx |
55 | 64 |
56 #endif // UI_GFX_POINT_F_H_ | 65 #endif // UI_GFX_POINT_F_H_ |
OLD | NEW |