| // Copyright 2023 Google LLC |
| // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. |
| |
| #ifndef Point_DEFINED |
| #define Point_DEFINED |
| |
| #include <cstdint> |
| |
| namespace bentleyottmann { |
| struct Point { |
| int32_t x; |
| int32_t y; |
| |
| // Relation for ordering events. |
| friend bool operator<(const Point& p0, const Point& p1); |
| friend bool operator>(const Point& p0, const Point& p1); |
| friend bool operator>=(const Point& p0, const Point& p1); |
| friend bool operator<=(const Point& p0, const Point& p1); |
| |
| // Equality |
| friend bool operator==(const Point& p0, const Point& p1); |
| friend bool operator!=(const Point& p0, const Point& p1); |
| |
| // Extremes |
| static Point Smallest(); |
| static Point Largest(); |
| static bool DifferenceTooBig(Point p0, Point p1); |
| |
| // Terms |
| friend Point operator+(const Point& p0, const Point& p1) { |
| return {p0.x + p1.x, p0.y + p1.y}; |
| } |
| friend Point operator-(const Point& p0, const Point& p1) { |
| return {p0.x - p1.x, p0.y - p1.y}; |
| } |
| }; |
| } // namespace bentleyottmann |
| #endif // Point_DEFINED |