blob: 5e3ebce6d9af452a5a1b89359cf91a71c612e4ba [file] [log] [blame]
// 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