package console
import "core:fmt"
ESC :: "\x1b"
CSI :: ESC + "["
CLEAR :: CSI + "2J"
CURSOR_HIDE :: CSI + "?25l"
CURSOR_SHOW :: CSI + "?25h"
CURSOR_POSITION :: CSI + "%d;%dH"
FORMAT :: CSI + "%d;%dm"
RESET_FORMAT :: CSI + "0m"
BOLD :: 1
ITALIC :: 2
UNDERLINE :: 4
STRIKETHROUGH :: 9
BRIGHT_BLACK :: 90
LINE_DRAWING_MODE :: ESC + "(0"
ASCII_DRAWING_MODE :: ESC + "(B"
Keys :: enum {
none,
unk,
quit,
back,
forward,
}
Console :: struct {
using _: _Console,
width: int,
height: int,
}
create :: proc() -> Console {
return _create()
}
destroy :: proc(con: ^Console) {
_destroy(con)
}
should_quit :: proc() -> bool {
return _should_quit()
}
clear :: proc(con: Console) {
_clear(con)
}
write :: proc(con: Console, msg: string) {
_write(con, msg)
}
write_at :: proc(con: Console, msg: string, x, y: int) {
_write_at(con, msg, x + 1, y + 1)
}
putch :: proc(con: Console, c: rune, x, y: int) {
_putch(con, c, x + 1, y + 1)
}
putch_s :: proc(con: Console, c: rune, x, y: int) -> string {
return fmt.tprintf(CURSOR_POSITION + "%c", y + 1, x + 1, c)
}
wait_for_input :: proc(con: Console) -> Keys {
return _wait_for_input(con)
}
get_size :: proc(con: Console) -> (int, int) {
return _get_size(con)
}