func (c *Cursor) MoveNextLine(cur Coord, terminalSize *Coord) {
	c.NextLine(1)
}
for comparability purposes between windows
in windows we don't have to print out a new line
package terminal
import (
	"bytes"
	"syscall"
	"unsafe"
)
var COORDINATE_SYSTEM_BEGIN Short = 0
var cursorLoc Coord
type Cursor struct {
	In  FileReader
	Out FileWriter
}
func (c *Cursor) Up(n int) {
	c.cursorMove(0, n)
}
func (c *Cursor) Down(n int) {
	c.cursorMove(0, -1*n)
}
func (c *Cursor) Forward(n int) {
	c.cursorMove(n, 0)
}
func (c *Cursor) Back(n int) {
	c.cursorMove(-1*n, 0)
}
func (c *Cursor) Save() {
	cursorLoc, _ = c.Location(nil)
}
func (c *Cursor) Restore() {
	handle := syscall.Handle(c.Out.Fd())
	procSetConsoleCursorPosition.Call(uintptr(handle), uintptr(*(*int32)(unsafe.Pointer(&cursorLoc))))
}
func (cur Coord) CursorIsAtLineEnd(size *Coord) bool {
	return cur.X == size.X
}
func (cur Coord) CursorIsAtLineBegin() bool {
	return cur.X == 0
}
func (c *Cursor) cursorMove(x int, y int) {
	handle := syscall.Handle(c.Out.Fd())
	var csbi consoleScreenBufferInfo
	procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi)))
	var cursor Coord
	cursor.X = csbi.cursorPosition.X + Short(x)
	cursor.Y = csbi.cursorPosition.Y + Short(y)
	procSetConsoleCursorPosition.Call(uintptr(handle), uintptr(*(*int32)(unsafe.Pointer(&cursor))))
}
func (c *Cursor) NextLine(n int) {
	c.Up(n)
	c.HorizontalAbsolute(0)
}
func (c *Cursor) PreviousLine(n int) {
	c.Down(n)
	c.HorizontalAbsolute(0)
}