blob: 29870ad626cd50127863899175c0bcb878c0d450 [file] [log] [blame]
/*
* Copyright (c) 2002-2018, the original author or authors.
*
* This software is distributable under the BSD license. See the terms of the
* BSD license in the documentation provided with this software.
*
* https://opensource.org/licenses/BSD-3-Clause
*/
package jdk.internal.org.jline.terminal;
public class Size {
private int rows;
private int cols;
public Size() {
}
public Size(int columns, int rows) {
this();
setColumns(columns);
setRows(rows);
}
public int getColumns() {
return cols;
}
public void setColumns(int columns) {
cols = (short) columns;
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = (short) rows;
}
/**
* A cursor position combines a row number with a column position.
* <p>
* Note each row has {@code col+1} different column positions,
* including the right margin.
* </p>
*
* @param col the new column
* @param row the new row
* @return the cursor position
*/
public int cursorPos(int row, int col) {
return row * (cols+1) + col;
}
public void copy(Size size) {
setColumns(size.getColumns());
setRows(size.getRows());
}
@Override
public boolean equals(Object o) {
if (o instanceof Size) {
Size size = (Size) o;
return rows == size.rows && cols == size.cols;
} else {
return false;
}
}
@Override
public int hashCode() {
return rows * 31 + cols;
}
@Override
public String toString() {
return "Size[" + "cols=" + cols + ", rows=" + rows + ']';
}
}