/*
- * Sixth 3D engine. Author: Svjatoslav Agejenko.
+ * Sixth 3D engine. Author: Svjatoslav Agejenko.
* This project is released under Creative Commons Zero (CC0) license.
*/
package eu.svjatoslav.sixth.e3d.gui;
+import static java.lang.Integer.compare;
+
+/**
+ * A pointer to a character in a text using row and column.
+ * <p>
+ * It can be used to represent a cursor position in a text.
+ * Also, it can be used to represent beginning and end of a selection.
+ */
public class TextPointer implements Comparable<TextPointer> {
+ /**
+ * The row of the character. Starts from 0.
+ */
public int row;
+
+ /**
+ * The column of the character. Starts from 0.
+ */
public int column;
public TextPointer() {
return result;
}
+ /**
+ * Compares this pointer to another pointer.
+ *
+ * @param textPointer The pointer to compare to.
+ * @return <ul>
+ * <li>-1 if this pointer is smaller than the argument pointer.</li>
+ * <li>0 if they are equal.</li>
+ * <li>1 if this pointer is bigger than the argument pointer.</li>
+ * </ul>
+ */
@Override
public int compareTo(final TextPointer textPointer) {
- if (textPointer.row > row)
+ if (row < textPointer.row)
return -1;
- if (textPointer.row < row)
+ if (row > textPointer.row)
return 1;
- return Integer.compare(column, textPointer.column);
-
+ return compare(column, textPointer.column);
}
+ /**
+ * Checks if this pointer is between the argument pointers.
+ * <p>
+ * This pointer is considered to be between the pointers if it is bigger or equal to the start pointer
+ * and smaller than the end pointer.
+ *
+ * @param start The start pointer.
+ * @param end The end pointer.
+ * @return True if this pointer is between the specified pointers.
+ */
public boolean isBetween(final TextPointer start, final TextPointer end) {
if (start == null)
if (end == null)
return false;
+ // Make sure that start is smaller than end.
TextPointer smaller;
TextPointer bigger;
bigger = start;
}
+ // Check if this pointer is between the specified pointers.
return (compareTo(smaller) >= 0) && (bigger.compareTo(this) > 0);
-
}
}