74 lines
1.4 KiB
Go
74 lines
1.4 KiB
Go
|
package cursor
|
||
|
|
||
|
var height int
|
||
|
|
||
|
// Bottom moves the cursor to the bottom of the terminal.
|
||
|
// This is done by calculating how many lines were moved by Up and Down.
|
||
|
func Bottom() {
|
||
|
if height > 0 {
|
||
|
Down(height)
|
||
|
StartOfLine()
|
||
|
height = 0
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// StartOfLine moves the cursor to the start of the current line.
|
||
|
func StartOfLine() {
|
||
|
HorizontalAbsolute(0)
|
||
|
}
|
||
|
|
||
|
// StartOfLineDown moves the cursor down by n lines, then moves to cursor to the start of the line.
|
||
|
func StartOfLineDown(n int) {
|
||
|
Down(n)
|
||
|
StartOfLine()
|
||
|
}
|
||
|
|
||
|
// StartOfLineUp moves the cursor up by n lines, then moves to cursor to the start of the line.
|
||
|
func StartOfLineUp(n int) {
|
||
|
Up(n)
|
||
|
StartOfLine()
|
||
|
}
|
||
|
|
||
|
// UpAndClear moves the cursor up by n lines, then clears the line.
|
||
|
func UpAndClear(n int) {
|
||
|
Up(n)
|
||
|
ClearLine()
|
||
|
}
|
||
|
|
||
|
// DownAndClear moves the cursor down by n lines, then clears the line.
|
||
|
func DownAndClear(n int) {
|
||
|
Down(n)
|
||
|
ClearLine()
|
||
|
}
|
||
|
|
||
|
// Move moves the cursor relative by x and y.
|
||
|
func Move(x, y int) {
|
||
|
if x > 0 {
|
||
|
Right(x)
|
||
|
} else if x < 0 {
|
||
|
x *= -1
|
||
|
Left(x)
|
||
|
}
|
||
|
|
||
|
if y > 0 {
|
||
|
Up(y)
|
||
|
} else if y < 0 {
|
||
|
y *= -1
|
||
|
Down(y)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ClearLinesUp clears n lines upwards from the current position and moves the cursor.
|
||
|
func ClearLinesUp(n int) {
|
||
|
for i := 0; i < n; i++ {
|
||
|
UpAndClear(1)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ClearLinesDown clears n lines downwards from the current position and moves the cursor.
|
||
|
func ClearLinesDown(n int) {
|
||
|
for i := 0; i < n; i++ {
|
||
|
DownAndClear(1)
|
||
|
}
|
||
|
}
|