package vtty 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 { unk, quit, back, forward, } Console :: struct { using _: _Console, width: int, height: int, } create :: proc(con: ^Console) { _create(con) } destroy :: proc(con: ^Console) { _destroy(con) } 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, y) } putch :: proc(con: ^Console, c: rune, x, y: int) { _putch(con, c, x, y) } putch_s :: proc(con: ^Console, c: rune, x, y: int) -> string { return fmt.tprintf(CURSOR_POSITION + "%c", y, x, c) } wait_for_input :: proc(con: ^Console) -> Keys { return _wait_for_input(con) } get_size :: proc(con: ^Console) -> (int, int) { return _get_size(con) }