xref: /aosp_15_r20/external/skia/modules/bentleyottmann/include/Point.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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