OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 PPAPI_CPP_POINT_H_ | 5 #ifndef PPAPI_CPP_POINT_H_ |
6 #define PPAPI_CPP_POINT_H_ | 6 #define PPAPI_CPP_POINT_H_ |
7 | 7 |
8 #include "ppapi/c/pp_point.h" | 8 #include "ppapi/c/pp_point.h" |
9 | 9 |
10 /// @file | 10 /// @file |
11 /// This file defines the API to create a 2 dimensional point. | 11 /// This file defines the API to create a 2 dimensional point. |
12 | 12 |
13 namespace pp { | 13 namespace pp { |
14 | 14 |
15 /// A 2 dimensional point with 0,0 being the upper-left starting coordinate. | 15 /// A 2 dimensional point with 0,0 being the upper-left starting coordinate. |
16 class Point { | 16 class Point { |
17 public: | 17 public: |
18 /// A constructor for a point at 0,0. | 18 /// A constructor for a point at 0,0. |
19 Point() { | 19 Point() { |
20 point_.x = 0; | 20 point_.x = 0; |
21 point_.y = 0; | 21 point_.y = 0; |
22 } | 22 } |
23 | 23 |
24 /// A constructor accepting two int32_t values for x and y and converting | 24 /// A constructor accepting two int32_t values for x and y and converting |
25 /// them to a Point. | 25 /// them to a Point. |
26 /// @param[in] in_x An int32_t value representing a horizontal coordinate | 26 /// @param[in] in_x An int32_t value representing a horizontal coordinate |
27 /// of a point, starting with 0 as the left-most coordinate. | 27 /// of a point, starting with 0 as the left-most coordinate. |
28 /// @param[in] in_y An int32_t value representing a vertical coordinate | 28 /// @param[in] in_y An int32_t value representing a vertical coordinate |
29 /// of a point, starting with 0 as the top-most coordinate. | 29 /// of a point, starting with 0 as the top-most coordinate. |
30 Point(int32_t in_x, int32_t in_y) { | 30 Point(int32_t in_x, int32_t in_y) { |
31 point_.x = in_x; | 31 point_.x = in_x; |
32 point_.y = in_y; | 32 point_.y = in_y; |
33 } | 33 } |
34 | 34 |
35 /// A constructor accepting a pointer to a PP_Point and converting the | 35 /// A constructor accepting a pointer to a PP_Point and converting the |
36 /// PP_Point to a Point. This is an implicit conversion constructor. | 36 /// PP_Point to a Point. This is an implicit conversion constructor. |
37 /// @param[in] point A pointer to a PP_Point. | 37 /// @param[in] point A PP_Point. |
38 Point(const PP_Point& point) { // Implicit. | 38 Point(const PP_Point& point) { // Implicit. |
39 point_.x = point.x; | 39 point_.x = point.x; |
40 point_.y = point.y; | 40 point_.y = point.y; |
41 } | 41 } |
42 /// Destructor. | 42 |
43 ~Point() { | 43 /// Destructor. |
| 44 ~Point() { |
44 } | 45 } |
45 | 46 |
46 /// A function allowing implicit conversion of a Point to a PP_Point. | 47 /// A function allowing implicit conversion of a Point to a PP_Point. |
47 /// @return A Point. | 48 /// @return A Point. |
48 operator PP_Point() const { | 49 operator PP_Point() const { |
49 return point_; | 50 return point_; |
50 } | 51 } |
51 | 52 |
52 /// Getter function for returning the internal PP_Point struct. | 53 /// Getter function for returning the internal PP_Point struct. |
53 /// @return A const reference to the internal PP_Point struct. | 54 /// @return A const reference to the internal PP_Point struct. |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 point_.x = other.point_.x; | 126 point_.x = other.point_.x; |
126 point_.y = other.point_.y; | 127 point_.y = other.point_.y; |
127 other.point_.x = x; | 128 other.point_.x = x; |
128 other.point_.y = y; | 129 other.point_.y = y; |
129 } | 130 } |
130 | 131 |
131 private: | 132 private: |
132 PP_Point point_; | 133 PP_Point point_; |
133 }; | 134 }; |
134 | 135 |
| 136 /// A 2 dimensional floating-point point with 0,0 being the upper-left starting |
| 137 /// coordinate. |
| 138 class FloatPoint { |
| 139 public: |
| 140 /// A constructor for a point at 0,0. |
| 141 FloatPoint() { |
| 142 float_point_.x = 0.0f; |
| 143 float_point_.y = 0.0f; |
| 144 } |
| 145 |
| 146 /// A constructor accepting two values for x and y and converting them to a |
| 147 /// FloatPoint. |
| 148 /// |
| 149 /// @param[in] in_x An value representing a horizontal coordinate of a |
| 150 /// point, starting with 0 as the left-most coordinate. |
| 151 /// |
| 152 /// @param[in] in_y An value representing a vertical coordinate of a point, |
| 153 /// starting with 0 as the top-most coordinate. |
| 154 FloatPoint(float in_x, float in_y) { |
| 155 float_point_.x = in_x; |
| 156 float_point_.y = in_y; |
| 157 } |
| 158 |
| 159 /// A constructor accepting a pointer to a PP_FloatPoint and converting the |
| 160 /// PP_Point to a Point. This is an implicit conversion constructor. |
| 161 /// @param[in] point A PP_FloatPoint. |
| 162 FloatPoint(const PP_FloatPoint& point) { // Implicit. |
| 163 float_point_.x = point.x; |
| 164 float_point_.y = point.y; |
| 165 } |
| 166 /// Destructor. |
| 167 ~FloatPoint() { |
| 168 } |
| 169 |
| 170 /// A function allowing implicit conversion of a FloatPoint to a |
| 171 /// PP_FloatPoint. |
| 172 operator PP_FloatPoint() const { |
| 173 return float_point_; |
| 174 } |
| 175 |
| 176 /// Getter function for returning the internal PP_FloatPoint struct. |
| 177 /// @return A const reference to the internal PP_FloatPoint struct. |
| 178 const PP_FloatPoint& pp_float_point() const { |
| 179 return float_point_; |
| 180 } |
| 181 |
| 182 /// Getter function for returning the internal PP_Point struct. |
| 183 /// @return A mutable reference to the PP_Point struct. |
| 184 PP_FloatPoint& pp_float_point() { |
| 185 return float_point_; |
| 186 } |
| 187 |
| 188 /// Getter function for returning the value of x. |
| 189 /// @return The value of x for this Point. |
| 190 float x() const { return float_point_.x; } |
| 191 |
| 192 /// Setter function for setting the value of x. |
| 193 /// @param[in] in_x A new x value. |
| 194 void set_x(float in_x) { |
| 195 float_point_.x = in_x; |
| 196 } |
| 197 |
| 198 /// Getter function for returning the value of y. |
| 199 /// @return The value of y for this Point. |
| 200 float y() const { return float_point_.y; } |
| 201 |
| 202 /// Setter function for setting the value of y. |
| 203 /// @param[in] in_y A new y value. |
| 204 void set_y(float in_y) { |
| 205 float_point_.y = in_y; |
| 206 } |
| 207 |
| 208 /// Adds two Points (this and other) together by adding their x values and |
| 209 /// y values. |
| 210 /// @param[in] other A Point. |
| 211 /// @return A new Point containing the result. |
| 212 FloatPoint operator+(const FloatPoint& other) const { |
| 213 return FloatPoint(x() + other.x(), y() + other.y()); |
| 214 } |
| 215 |
| 216 /// Subtracts one Point from another Point by subtracting their x values |
| 217 /// and y values. Returnes a new point with the result. |
| 218 /// @param[in] other A FloatPoint. |
| 219 /// @return A new Point containing the result. |
| 220 FloatPoint operator-(const FloatPoint& other) const { |
| 221 return FloatPoint(x() - other.x(), y() - other.y()); |
| 222 } |
| 223 |
| 224 /// Adds two Points (this and other) together by adding their x and y |
| 225 /// values. Returns this point as the result. |
| 226 /// @param[in] other A Point. |
| 227 /// @return This Point containing the result. |
| 228 FloatPoint& operator+=(const FloatPoint& other) { |
| 229 float_point_.x += other.x(); |
| 230 float_point_.y += other.y(); |
| 231 return *this; |
| 232 } |
| 233 |
| 234 /// Subtracts one Point from another Point by subtracting their x values |
| 235 /// and y values. Returns this point as the result. |
| 236 /// @param[in] other A Point. |
| 237 /// @return This Point containing the result. |
| 238 FloatPoint& operator-=(const FloatPoint& other) { |
| 239 float_point_.x -= other.x(); |
| 240 float_point_.y -= other.y(); |
| 241 return *this; |
| 242 } |
| 243 |
| 244 /// Swaps the coordinates of two Points. |
| 245 /// @param[in] other A Point. |
| 246 void swap(FloatPoint& other) { |
| 247 float x = float_point_.x; |
| 248 float y = float_point_.y; |
| 249 float_point_.x = other.float_point_.x; |
| 250 float_point_.y = other.float_point_.y; |
| 251 other.float_point_.x = x; |
| 252 other.float_point_.y = y; |
| 253 } |
| 254 |
| 255 private: |
| 256 PP_FloatPoint float_point_; |
| 257 }; |
| 258 |
135 } // namespace pp | 259 } // namespace pp |
136 | 260 |
137 /// Determines whether the x and y values of two Points are equal. | 261 /// Determines whether the x and y values of two Points are equal. |
138 /// @param[in] lhs The Point on the left-hand side of the equation. | 262 /// @param[in] lhs The Point on the left-hand side of the equation. |
139 /// @param[in] rhs The Point on the right-hand side of the equation. | 263 /// @param[in] rhs The Point on the right-hand side of the equation. |
140 /// @return true if they are equal, false if unequal. | 264 /// @return true if they are equal, false if unequal. |
141 inline bool operator==(const pp::Point& lhs, const pp::Point& rhs) { | 265 inline bool operator==(const pp::Point& lhs, const pp::Point& rhs) { |
142 return lhs.x() == rhs.x() && lhs.y() == rhs.y(); | 266 return lhs.x() == rhs.x() && lhs.y() == rhs.y(); |
143 } | 267 } |
144 | 268 |
145 /// Determines whether two Points have different coordinates. | 269 /// Determines whether two Points have different coordinates. |
146 /// @param[in] lhs The Point on the left-hand side of the equation. | 270 /// @param[in] lhs The Point on the left-hand side of the equation. |
147 /// @param[in] rhs The Point on the right-hand side of the equation. | 271 /// @param[in] rhs The Point on the right-hand side of the equation. |
148 /// @return true if the coordinates of lhs are equal to the coordinates | 272 /// @return true if the coordinates of lhs are equal to the coordinates |
149 /// of rhs, otherwise false. | 273 /// of rhs, otherwise false. |
150 inline bool operator!=(const pp::Point& lhs, const pp::Point& rhs) { | 274 inline bool operator!=(const pp::Point& lhs, const pp::Point& rhs) { |
151 return !(lhs == rhs); | 275 return !(lhs == rhs); |
152 } | 276 } |
153 | 277 |
| 278 /// Determines whether the x and y values of two FloatPoints are equal. |
| 279 /// @param[in] lhs The Point on the left-hand side of the equation. |
| 280 /// @param[in] rhs The Point on the right-hand side of the equation. |
| 281 /// @return true if they are equal, false if unequal. |
| 282 inline bool operator==(const pp::FloatPoint& lhs, const pp::FloatPoint& rhs) { |
| 283 return lhs.x() == rhs.x() && lhs.y() == rhs.y(); |
| 284 } |
| 285 |
| 286 /// Determines whether two Points have different coordinates. |
| 287 /// @param[in] lhs The Point on the left-hand side of the equation. |
| 288 /// @param[in] rhs The Point on the right-hand side of the equation. |
| 289 /// @return true if the coordinates of lhs are equal to the coordinates |
| 290 /// of rhs, otherwise false. |
| 291 inline bool operator!=(const pp::FloatPoint& lhs, const pp::FloatPoint& rhs) { |
| 292 return !(lhs == rhs); |
| 293 } |
| 294 |
154 #endif // PPAPI_CPP_POINT_H_ | 295 #endif // PPAPI_CPP_POINT_H_ |
OLD | NEW |