OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 // TODO(beng): remove once callsites are patched. |
6 #define UI_GFX_POINT_F_H_ | 6 #include "ui/gfx/geometry/point_f.h" |
7 | 7 |
8 #include <string> | |
9 | |
10 #include "ui/gfx/gfx_export.h" | |
11 #include "ui/gfx/point_base.h" | |
12 #include "ui/gfx/vector2d_f.h" | |
13 | |
14 namespace gfx { | |
15 | |
16 // A floating version of gfx::Point. | |
17 class GFX_EXPORT PointF : public PointBase<PointF, float, Vector2dF> { | |
18 public: | |
19 PointF() : PointBase<PointF, float, Vector2dF>(0, 0) {} | |
20 PointF(float x, float y) : PointBase<PointF, float, Vector2dF>(x, y) {} | |
21 ~PointF() {} | |
22 | |
23 void Scale(float scale) { | |
24 Scale(scale, scale); | |
25 } | |
26 | |
27 void Scale(float x_scale, float y_scale) { | |
28 SetPoint(x() * x_scale, y() * y_scale); | |
29 } | |
30 | |
31 // Returns a string representation of point. | |
32 std::string ToString() const; | |
33 }; | |
34 | |
35 inline bool operator==(const PointF& lhs, const PointF& rhs) { | |
36 return lhs.x() == rhs.x() && lhs.y() == rhs.y(); | |
37 } | |
38 | |
39 inline bool operator!=(const PointF& lhs, const PointF& rhs) { | |
40 return !(lhs == rhs); | |
41 } | |
42 | |
43 inline PointF operator+(const PointF& lhs, const Vector2dF& rhs) { | |
44 PointF result(lhs); | |
45 result += rhs; | |
46 return result; | |
47 } | |
48 | |
49 inline PointF operator-(const PointF& lhs, const Vector2dF& rhs) { | |
50 PointF result(lhs); | |
51 result -= rhs; | |
52 return result; | |
53 } | |
54 | |
55 inline Vector2dF operator-(const PointF& lhs, const PointF& rhs) { | |
56 return Vector2dF(lhs.x() - rhs.x(), lhs.y() - rhs.y()); | |
57 } | |
58 | |
59 inline PointF PointAtOffsetFromOrigin(const Vector2dF& offset_from_origin) { | |
60 return PointF(offset_from_origin.x(), offset_from_origin.y()); | |
61 } | |
62 | |
63 GFX_EXPORT PointF ScalePoint(const PointF& p, float x_scale, float y_scale); | |
64 | |
65 inline PointF ScalePoint(const PointF& p, float scale) { | |
66 return ScalePoint(p, scale, scale); | |
67 } | |
68 | |
69 #if !defined(COMPILER_MSVC) | |
70 extern template class PointBase<PointF, float, Vector2dF>; | |
71 #endif | |
72 | |
73 } // namespace gfx | |
74 | |
75 #endif // UI_GFX_POINT_F_H_ | |
OLD | NEW |