1package ansi
2
3import (
4	"os"
5	"syscall"
6	"unsafe"
7)
8
9func EraseInLine(mode int) {
10	handle := syscall.Handle(os.Stdout.Fd())
11
12	var csbi consoleScreenBufferInfo
13	procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))
14
15	var w uint32
16	var x short
17	cursor := csbi.cursorPosition
18	switch mode {
19	case 1:
20		x = csbi.size.x
21	case 2:
22		x = 0
23	case 3:
24		cursor.x = 0
25		x = csbi.size.x
26	}
27	procFillConsoleOutputCharacter.Call(uintptr(handle), uintptr(' '), uintptr(x), uintptr(*(*int32)(unsafe.Pointer(&cursor))), uintptr(unsafe.Pointer(&w)))
28}
29