1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
use fmt;
use tb = termbox2;
fn paint_cell(x: size, y: size, c: tb::uattr) void =
tb::set_cell(x: int, y: int, ' ', tb::COLOR.DEFAULT, c)!;
fn show_colors() size = {
let colors = [
tb::COLOR.BLACK,
tb::COLOR.RED,
tb::COLOR.GREEN,
tb::COLOR.YELLOW,
tb::COLOR.BLUE,
tb::COLOR.MAGENTA,
tb::COLOR.CYAN,
tb::COLOR.WHITE,
];
tb::print(0, 0, tb::COLOR.DEFAULT, tb::COLOR.DEFAULT,
"8 regular colors:")!;
tb::print(0, 2, tb::COLOR.DEFAULT, tb::COLOR.DEFAULT,
"8 bright colors:")!;
for (let i: size = 0; i < len(colors); i += 1) {
// 8 regular colors.
paint_cell(i, 1, colors[i]);
// 8 bright colors.
paint_cell(i, 3, colors[i] | tb::ATTRIBUTE.BRIGHT);
};
return 4;
};
export fn main() int = {
let e = tb::init();
if (e is tb::err)
fmt::fatalf(tb::strerror(e as tb::err));
defer tb::shutdown()!;
let w = tb::width()!;
let h = tb::height()!;
tb::print(0, (h - 1): int, tb::COLOR.DEFAULT, tb::COLOR.DEFAULT,
"Press any key to exit")!;
show_colors();
for (true) {
let e = tb::present();
if (e is tb::err)
fmt::fatalf(tb::strerror(e as tb::err));
match (tb::poll_event()) {
case let e: tb::err => {
if (e == tb::ERR.NO_EVENT)
continue
else
tb::print(0, h:int -1,
tb::COLOR.DEFAULT, tb::COLOR.DEFAULT,
"Unexpected error {}!", tb::strerror(e))!;
};
case tb::key_event => break;
case (tb::mouse_event | tb::resize_event) => continue;
};
};
return 0;
};
|