| // 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 |