You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
621 B
27 lines
621 B
package terminal |
|
|
|
import ( |
|
"syscall" |
|
"unsafe" |
|
) |
|
|
|
func EraseLine(out FileWriter, mode EraseLineMode) { |
|
handle := syscall.Handle(out.Fd()) |
|
|
|
var csbi consoleScreenBufferInfo |
|
procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) |
|
|
|
var w uint32 |
|
var x Short |
|
cursor := csbi.cursorPosition |
|
switch mode { |
|
case ERASE_LINE_END: |
|
x = csbi.size.X |
|
case ERASE_LINE_START: |
|
x = 0 |
|
case ERASE_LINE_ALL: |
|
cursor.X = 0 |
|
x = csbi.size.X |
|
} |
|
procFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(x), uintptr(*(*int32)(unsafe.Pointer(&cursor))), uintptr(unsafe.Pointer(&w))) |
|
}
|
|
|