123456789101112131415161718192021222324252627 |
- 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)))
- }
|