1*c8dee2aaSAndroid Build Coastguard Worker // Copyright 2023 Google LLC 2*c8dee2aaSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. 3*c8dee2aaSAndroid Build Coastguard Worker 4*c8dee2aaSAndroid Build Coastguard Worker #ifndef Point_DEFINED 5*c8dee2aaSAndroid Build Coastguard Worker #define Point_DEFINED 6*c8dee2aaSAndroid Build Coastguard Worker 7*c8dee2aaSAndroid Build Coastguard Worker #include <cstdint> 8*c8dee2aaSAndroid Build Coastguard Worker 9*c8dee2aaSAndroid Build Coastguard Worker namespace bentleyottmann { 10*c8dee2aaSAndroid Build Coastguard Worker struct Point { 11*c8dee2aaSAndroid Build Coastguard Worker int32_t x; 12*c8dee2aaSAndroid Build Coastguard Worker int32_t y; 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Worker // Relation for ordering events. 15*c8dee2aaSAndroid Build Coastguard Worker friend bool operator<(const Point& p0, const Point& p1); 16*c8dee2aaSAndroid Build Coastguard Worker friend bool operator>(const Point& p0, const Point& p1); 17*c8dee2aaSAndroid Build Coastguard Worker friend bool operator>=(const Point& p0, const Point& p1); 18*c8dee2aaSAndroid Build Coastguard Worker friend bool operator<=(const Point& p0, const Point& p1); 19*c8dee2aaSAndroid Build Coastguard Worker 20*c8dee2aaSAndroid Build Coastguard Worker // Equality 21*c8dee2aaSAndroid Build Coastguard Worker friend bool operator==(const Point& p0, const Point& p1); 22*c8dee2aaSAndroid Build Coastguard Worker friend bool operator!=(const Point& p0, const Point& p1); 23*c8dee2aaSAndroid Build Coastguard Worker 24*c8dee2aaSAndroid Build Coastguard Worker // Extremes 25*c8dee2aaSAndroid Build Coastguard Worker static Point Smallest(); 26*c8dee2aaSAndroid Build Coastguard Worker static Point Largest(); 27*c8dee2aaSAndroid Build Coastguard Worker static bool DifferenceTooBig(Point p0, Point p1); 28*c8dee2aaSAndroid Build Coastguard Worker 29*c8dee2aaSAndroid Build Coastguard Worker // Terms 30*c8dee2aaSAndroid Build Coastguard Worker friend Point operator+(const Point& p0, const Point& p1) { 31*c8dee2aaSAndroid Build Coastguard Worker return {p0.x + p1.x, p0.y + p1.y}; 32*c8dee2aaSAndroid Build Coastguard Worker } 33*c8dee2aaSAndroid Build Coastguard Worker friend Point operator-(const Point& p0, const Point& p1) { 34*c8dee2aaSAndroid Build Coastguard Worker return {p0.x - p1.x, p0.y - p1.y}; 35*c8dee2aaSAndroid Build Coastguard Worker } 36*c8dee2aaSAndroid Build Coastguard Worker }; 37*c8dee2aaSAndroid Build Coastguard Worker } // namespace bentleyottmann 38*c8dee2aaSAndroid Build Coastguard Worker #endif // Point_DEFINED 39