Formatting update
[sixth-3d.git] / src / main / java / eu / svjatoslav / sixth / e3d / gui / TextPointer.java
1 /*
2  * Sixth 3D engine. Author: Svjatoslav Agejenko. 
3  * This project is released under Creative Commons Zero (CC0) license.
4  */
5 package eu.svjatoslav.sixth.e3d.gui;
6
7 public class TextPointer implements Comparable<TextPointer> {
8
9     public int row;
10     public int column;
11
12     public TextPointer() {
13         this(0, 0);
14     }
15
16     public TextPointer(final int row, final int column) {
17         this.row = row;
18         this.column = column;
19     }
20
21     public TextPointer(final TextPointer parent) {
22         this(parent.row, parent.column);
23     }
24
25     @Override
26     public boolean equals(final Object o) {
27         if (o == null) return false;
28
29         return o instanceof TextPointer && compareTo((TextPointer) o) == 0;
30     }
31
32     @Override
33     public int hashCode() {
34         int result = row;
35         result = 31 * result + column;
36         return result;
37     }
38
39     @Override
40     public int compareTo(final TextPointer textPointer) {
41
42         if (textPointer.row > row)
43             return -1;
44         if (textPointer.row < row)
45             return 1;
46
47         return Integer.compare(column, textPointer.column);
48
49     }
50
51     public boolean isBetween(final TextPointer start, final TextPointer end) {
52
53         if (start == null)
54             return false;
55
56         if (end == null)
57             return false;
58
59         TextPointer smaller;
60         TextPointer bigger;
61
62         if (end.compareTo(start) >= 0) {
63             smaller = start;
64             bigger = end;
65         } else {
66             smaller = end;
67             bigger = start;
68         }
69
70         return (compareTo(smaller) >= 0) && (bigger.compareTo(this) > 0);
71
72     }
73
74 }