wcurses/
lib.rs

1#![no_std]
2extern crate libw;
3use libw::*;
4extern crate alloc;
5use alloc::string::ToString;
6
7const XTERM_ESCAPE: &'static str = "\u{001b}";
8
9pub fn clear() {
10    print("\u{001b}c");
11}
12
13pub fn dimensions() -> (u32, u32) {
14    let mut rows = 0;
15    let mut cols = 0;
16    let vars = environment_variables();
17    for v in vars {
18        if v.name == "LINES" {
19            rows = v.value.parse::<u32>().unwrap()
20        }
21        if v.name == "COLUMNS" {
22            cols = v.value.parse::<u32>().unwrap()
23        }
24    }
25    (rows, cols)
26}
27
28pub fn set_cursor_position(row: u32, col: u32) {
29    let mut cmd = XTERM_ESCAPE.to_string();
30    cmd.push_str("[");
31    cmd.push_str(&row.to_string());
32    cmd.push_str(";");
33    cmd.push_str(&col.to_string());
34    cmd.push_str("f");
35    print(&cmd);
36}
37
38pub fn save_cursor_position() {
39    print("\u{001b}[s");
40}
41
42pub fn restore_cursor_position() {
43    print("\u{001b}[u");
44}
45
46pub fn set_foreground_color(r: u8, g: u8, b: u8) {
47    let mut cmd = XTERM_ESCAPE.to_string();
48    cmd.push_str("[38;2;");
49    cmd.push_str(&r.to_string());
50    cmd.push_str(";");
51    cmd.push_str(&g.to_string());
52    cmd.push_str(";");
53    cmd.push_str(&b.to_string());
54    cmd.push_str("m");
55    print(&cmd);
56}
57
58pub fn set_background_color(r: u8, g: u8, b: u8) {
59    let mut cmd = XTERM_ESCAPE.to_string();
60    cmd.push_str("[48;2;");
61    cmd.push_str(&r.to_string());
62    cmd.push_str(";");
63    cmd.push_str(&g.to_string());
64    cmd.push_str(";");
65    cmd.push_str(&b.to_string());
66    cmd.push_str("m");
67    print(&cmd);
68}
69
70pub fn reset_color() {
71    print("\u{001b}[0m");
72}
73
74pub fn bold() {
75    print("\u{001b}[1m");
76}
77
78pub fn italic() {
79    print("\u{001b}[3m");
80}
81
82pub fn slow_blink() {
83    print("\u{001b}[5m");
84}
85
86pub fn fast_blink() {
87    print("\u{001b}[6m");
88}
89
90pub fn underline() {
91    print("\u{001b}[4m");
92}