small software-rendered rust tty
"8 bit colors"
| -rw-r--r-- | src/colors.rs | 259 | ||||
| -rw-r--r-- | src/term.rs | 6 |
2 files changed, 265 insertions, 0 deletions
diff --git a/src/colors.rs b/src/colors.rs index 683ffea..1a67947 100644 --- a/src/colors.rs +++ b/src/colors.rs @@ -20,3 +20,262 @@ pub const FOUR: [[u8; 3]; 16] = [ [149, 230, 203], [255, 255, 255], ]; + +pub const EIGHT: [[u8; 3]; 256] = [ + [0, 0, 0], + [128, 0, 0], + [0, 128, 0], + [128, 128, 0], + [0, 0, 128], + [128, 0, 128], + [0, 128, 128], + [192, 192, 192], + [128, 128, 128], + [255, 0, 0], + [0, 255, 0], + [255, 255, 0], + [0, 0, 255], + [255, 0, 255], + [0, 255, 255], + [255, 255, 255], + [0, 0, 0], + [0, 0, 95], + [0, 0, 135], + [0, 0, 175], + [0, 0, 215], + [0, 0, 255], + [0, 95, 0], + [0, 95, 95], + [0, 95, 135], + [0, 95, 175], + [0, 95, 215], + [0, 95, 255], + [0, 135, 0], + [0, 135, 95], + [0, 135, 135], + [0, 135, 175], + [0, 135, 215], + [0, 135, 255], + [0, 175, 0], + [0, 175, 95], + [0, 175, 135], + [0, 175, 175], + [0, 175, 215], + [0, 175, 255], + [0, 215, 0], + [0, 215, 95], + [0, 215, 135], + [0, 215, 175], + [0, 215, 215], + [0, 215, 255], + [0, 255, 0], + [0, 255, 95], + [0, 255, 135], + [0, 255, 175], + [0, 255, 215], + [0, 255, 255], + [95, 0, 0], + [95, 0, 95], + [95, 0, 135], + [95, 0, 175], + [95, 0, 215], + [95, 0, 255], + [95, 95, 0], + [95, 95, 95], + [95, 95, 135], + [95, 95, 175], + [95, 95, 215], + [95, 95, 255], + [95, 135, 0], + [95, 135, 95], + [95, 135, 135], + [95, 135, 175], + [95, 135, 215], + [95, 135, 255], + [95, 175, 0], + [95, 175, 95], + [95, 175, 135], + [95, 175, 175], + [95, 175, 215], + [95, 175, 255], + [95, 215, 0], + [95, 215, 95], + [95, 215, 135], + [95, 215, 175], + [95, 215, 215], + [95, 215, 255], + [95, 255, 0], + [95, 255, 95], + [95, 255, 135], + [95, 255, 175], + [95, 255, 215], + [95, 255, 255], + [135, 0, 0], + [135, 0, 95], + [135, 0, 135], + [135, 0, 175], + [135, 0, 215], + [135, 0, 255], + [135, 95, 0], + [135, 95, 95], + [135, 95, 135], + [135, 95, 175], + [135, 95, 215], + [135, 95, 255], + [135, 135, 0], + [135, 135, 95], + [135, 135, 135], + [135, 135, 175], + [135, 135, 215], + [135, 135, 255], + [135, 175, 0], + [135, 175, 95], + [135, 175, 135], + [135, 175, 175], + [135, 175, 215], + [135, 175, 255], + [135, 215, 0], + [135, 215, 95], + [135, 215, 135], + [135, 215, 175], + [135, 215, 215], + [135, 215, 255], + [135, 255, 0], + [135, 255, 95], + [135, 255, 135], + [135, 255, 175], + [135, 255, 215], + [135, 255, 255], + [175, 0, 0], + [175, 0, 95], + [175, 0, 135], + [175, 0, 175], + [175, 0, 215], + [175, 0, 255], + [175, 95, 0], + [175, 95, 95], + [175, 95, 135], + [175, 95, 175], + [175, 95, 215], + [175, 95, 255], + [175, 135, 0], + [175, 135, 95], + [175, 135, 135], + [175, 135, 175], + [175, 135, 215], + [175, 135, 255], + [175, 175, 0], + [175, 175, 95], + [175, 175, 135], + [175, 175, 175], + [175, 175, 215], + [175, 175, 255], + [175, 215, 0], + [175, 215, 95], + [175, 215, 135], + [175, 215, 175], + [175, 215, 215], + [175, 215, 255], + [175, 255, 0], + [175, 255, 95], + [175, 255, 135], + [175, 255, 175], + [175, 255, 215], + [175, 255, 255], + [215, 0, 0], + [215, 0, 95], + [215, 0, 135], + [215, 0, 175], + [215, 0, 215], + [215, 0, 255], + [215, 95, 0], + [215, 95, 95], + [215, 95, 135], + [215, 95, 175], + [215, 95, 215], + [215, 95, 255], + [215, 135, 0], + [215, 135, 95], + [215, 135, 135], + [215, 135, 175], + [215, 135, 215], + [215, 135, 255], + [215, 175, 0], + [215, 175, 95], + [215, 175, 135], + [215, 175, 175], + [215, 175, 215], + [215, 175, 255], + [215, 215, 0], + [215, 215, 95], + [215, 215, 135], + [215, 215, 175], + [215, 215, 215], + [215, 215, 255], + [215, 255, 0], + [215, 255, 95], + [215, 255, 135], + [215, 255, 175], + [215, 255, 215], + [215, 255, 255], + [255, 0, 0], + [255, 0, 95], + [255, 0, 135], + [255, 0, 175], + [255, 0, 215], + [255, 0, 255], + [255, 95, 0], + [255, 95, 95], + [255, 95, 135], + [255, 95, 175], + [255, 95, 215], + [255, 95, 255], + [255, 135, 0], + [255, 135, 95], + [255, 135, 135], + [255, 135, 175], + [255, 135, 215], + [255, 135, 255], + [255, 175, 0], + [255, 175, 95], + [255, 175, 135], + [255, 175, 175], + [255, 175, 215], + [255, 175, 255], + [255, 215, 0], + [255, 215, 95], + [255, 215, 135], + [255, 215, 175], + [255, 215, 215], + [255, 215, 255], + [255, 255, 0], + [255, 255, 95], + [255, 255, 135], + [255, 255, 175], + [255, 255, 215], + [255, 255, 255], + [8, 8, 8], + [18, 18, 18], + [28, 28, 28], + [38, 38, 38], + [48, 48, 48], + [58, 58, 58], + [68, 68, 68], + [78, 78, 78], + [88, 88, 88], + [96, 96, 96], + [102, 102, 102], + [118, 118, 118], + [128, 128, 128], + [138, 138, 138], + [148, 148, 148], + [158, 158, 158], + [168, 168, 168], + [178, 178, 178], + [188, 188, 188], + [198, 198, 198], + [208, 208, 208], + [218, 218, 218], + [228, 228, 228], + [238, 238, 238], +]; diff --git a/src/term.rs b/src/term.rs index c59df6b..f99a8b8 100644 --- a/src/term.rs +++ b/src/term.rs @@ -108,6 +108,12 @@ impl Terminal { &[Value(x @ (100..=107))] => { self.style.bg = colors::FOUR[x as usize - 92] } + &[Value(38), Value(5), Value(i)] => { + self.style.color = colors::EIGHT[i.min(0xff) as usize]; + } + &[Value(48), Value(5), Value(i)] => { + self.style.bg = colors::EIGHT[i.min(0xff) as usize]; + } &[Value(38), Value(2), Value(r), Value(g), Value(b)] => { self.style.color = [r, g, b].map(|x| x.min(0xff) as u8); |