/*
- * 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.
+ * 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 specified pointers.
+ * 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.
+ * @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) {