package term

import "fmt"

type CursorFlag bool

const (
	CursorOn  CursorFlag = true
	CursorOff CursorFlag = false
)

func TurnCursor(onOff CursorFlag) {
	if onOff == CursorOn {
		fmt.Printf("\033[?25h")
	} else {
		fmt.Printf("\033[?25l")
	}
}

func ClearScreen() {
	fmt.Printf("\033[2J")
}

func ResetTerminal() {
	fmt.Printf("\033c")
}

func GoHome() {
	fmt.Printf("\033[H")
}

func SaveCursor() {
	fmt.Printf("\033[s")
}

func RestoreCursor() {
	fmt.Printf("\033[u")
}

func EnableAlternateScreen() {
	fmt.Printf("\033[?1049h")
}

func DisableAlternateScreen() {
	fmt.Printf("\033[?1049l")
}

func StartFullscreen() {
	SaveCursor()
	EnableAlternateScreen()
	ClearScreen()
}

func FinishFullscreen() {
	DisableAlternateScreen()
	RestoreCursor()
}