forked from judero01col/GMap.NET
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGPoint.cs
More file actions
141 lines (117 loc) · 2.92 KB
/
Copy pathGPoint.cs
File metadata and controls
141 lines (117 loc) · 2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
using System;
using System.Collections.Generic;
using System.Globalization;
namespace GMap.NET
{
/// <summary>
/// the point ;}
/// </summary>
[Serializable]
public struct GPoint
{
public static readonly GPoint Empty = new GPoint();
public GPoint(long x, long y)
{
X = x;
Y = y;
}
public GPoint(GSize sz)
{
X = sz.Width;
Y = sz.Height;
}
public bool IsEmpty
{
get
{
return X == 0 && Y == 0;
}
}
public long X
{
get;
set;
}
public long Y
{
get;
set;
}
public static explicit operator GSize(GPoint p)
{
return new GSize(p.X, p.Y);
}
public static GPoint operator +(GPoint pt, GSize sz)
{
return Add(pt, sz);
}
public static GPoint operator -(GPoint pt, GSize sz)
{
return Subtract(pt, sz);
}
public static bool operator ==(GPoint left, GPoint right)
{
return left.X == right.X && left.Y == right.Y;
}
public static bool operator !=(GPoint left, GPoint right)
{
return !(left == right);
}
public static GPoint Add(GPoint pt, GSize sz)
{
return new GPoint(pt.X + sz.Width, pt.Y + sz.Height);
}
public static GPoint Subtract(GPoint pt, GSize sz)
{
return new GPoint(pt.X - sz.Width, pt.Y - sz.Height);
}
public override bool Equals(object obj)
{
if (!(obj is GPoint))
return false;
var comp = (GPoint)obj;
return comp.X == X && comp.Y == Y;
}
public override int GetHashCode()
{
return (int)(X ^ Y);
}
public void Offset(long dx, long dy)
{
X += dx;
Y += dy;
}
public void Offset(GPoint p)
{
Offset(p.X, p.Y);
}
public void OffsetNegative(GPoint p)
{
Offset(-p.X, -p.Y);
}
public override string ToString()
{
return "{X=" + X.ToString(CultureInfo.CurrentCulture) + ",Y=" + Y.ToString(CultureInfo.CurrentCulture) +
"}";
}
//private static int HIWORD(int n)
//{
// return (n >> 16) & 0xffff;
//}
//private static int LOWORD(int n)
//{
// return n & 0xffff;
//}
}
internal class GPointComparer : IEqualityComparer<GPoint>
{
public bool Equals(GPoint x, GPoint y)
{
return x.X == y.X && x.Y == y.Y;
}
public int GetHashCode(GPoint obj)
{
return obj.GetHashCode();
}
}
}