0cf3610fece7c73313a65ff0f8410522c81a792c
[sixth-3d.git] / src / main / java / eu / svjatoslav / sixth / e3d / gui / TextPointer.java
1 /*
2  * Sixth 3D engine. Copyright ©2012-2018, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of version 3 of the GNU Lesser General Public License
6  * or later as published by the Free Software Foundation.
7  *
8  */
9
10 package eu.svjatoslav.sixth.e3d.gui;
11
12 public class TextPointer implements Comparable<TextPointer> {
13
14     public int row;
15     public int column;
16
17     public TextPointer() {
18         this(0, 0);
19     }
20
21     public TextPointer(final int row, final int column) {
22         this.row = row;
23         this.column = column;
24     }
25
26     public TextPointer(final TextPointer parent) {
27         this(parent.row, parent.column);
28     }
29
30     @Override
31     public boolean equals(final Object o) {
32         if (o == null) return false;
33
34         return o instanceof TextPointer && compareTo((TextPointer) o) == 0;
35     }
36
37     @Override
38     public int hashCode() {
39         int result = row;
40         result = 31 * result + column;
41         return result;
42     }
43
44     @Override
45     public int compareTo(final TextPointer textPointer) {
46
47         if (textPointer.row > row)
48             return -1;
49         if (textPointer.row < row)
50             return 1;
51
52         if (textPointer.column > column)
53             return -1;
54         if (textPointer.column < column)
55             return 1;
56
57         return 0;
58     }
59
60     public boolean isBetween(final TextPointer start, final TextPointer end) {
61
62         if (start == null)
63             return false;
64
65         if (end == null)
66             return false;
67
68         TextPointer smaller;
69         TextPointer bigger;
70
71         if (end.compareTo(start) >= 0) {
72             smaller = start;
73             bigger = end;
74         } else {
75             smaller = end;
76             bigger = start;
77         }
78
79         return (compareTo(smaller) >= 0) && (bigger.compareTo(this) > 0);
80
81     }
82
83 }