| /* |
| * Copyright (C) 2006 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef ANDROID_UI_POINT |
| #define ANDROID_UI_POINT |
| |
| #include <utils/TypeHelpers.h> |
| |
| namespace android { |
| |
| class Point |
| { |
| public: |
| int x; |
| int y; |
| |
| // we don't provide copy-ctor and operator= on purpose |
| // because we want the compiler generated versions |
| |
| // Default constructor doesn't initialize the Point |
| inline Point() { |
| } |
| inline Point(int x, int y) : x(x), y(y) { |
| } |
| |
| inline bool operator == (const Point& rhs) const { |
| return (x == rhs.x) && (y == rhs.y); |
| } |
| inline bool operator != (const Point& rhs) const { |
| return !operator == (rhs); |
| } |
| |
| inline bool isOrigin() const { |
| return !(x|y); |
| } |
| |
| // operator < defines an order which allows to use points in sorted |
| // vectors. |
| bool operator < (const Point& rhs) const { |
| return y<rhs.y || (y==rhs.y && x<rhs.x); |
| } |
| |
| inline Point& operator - () { |
| x = -x; |
| y = -y; |
| return *this; |
| } |
| |
| inline Point& operator += (const Point& rhs) { |
| x += rhs.x; |
| y += rhs.y; |
| return *this; |
| } |
| inline Point& operator -= (const Point& rhs) { |
| x -= rhs.x; |
| y -= rhs.y; |
| return *this; |
| } |
| |
| const Point operator + (const Point& rhs) const { |
| const Point result(x+rhs.x, y+rhs.y); |
| return result; |
| } |
| const Point operator - (const Point& rhs) const { |
| const Point result(x-rhs.x, y-rhs.y); |
| return result; |
| } |
| }; |
| |
| ANDROID_BASIC_TYPES_TRAITS(Point) |
| |
| }; // namespace android |
| |
| #endif // ANDROID_UI_POINT |