aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorache <ache@ache.one>2026-08-09 18:17:08 +0200
committerache <ache@ache.one>2026-08-09 18:17:08 +0200
commitdef3f9d519fdfab5e687af1a6b7bccc80735d54a (patch)
treeecd022c57e70114bdb8888dd0c14628b2d030795 /src
parentRemove not necessary temp variable (diff)
Add function to pprint the legende
Doesn't quite works
Diffstat (limited to 'src')
-rw-r--r--src/print.rs61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/print.rs b/src/print.rs
index 2717a1c..63f730f 100644
--- a/src/print.rs
+++ b/src/print.rs
@@ -2,6 +2,7 @@
use crate::state::State;
use crate::stats::Stats;
+use term_size;
struct SymbolTableElement {
fg: &'static str,
@@ -146,8 +147,68 @@ const CHARS_TABLE: [SymbolTableElement; 25] = [
},
];
+const TO_HIDE_LEGENDE_ELEMENTS: [u32; 25] = [
+ 0b000_000_000_000_1_000_000_000_000,
+ 0b000_000_001_000_0_000_100_000_000,
+ 0b000_000_100_000_1_000_001_000_000,
+ 0b000_010_000_100_0_001_000_010_000,
+ 0b000_100_010_000_1_000_010_001_000, // 5
+ 0b001_000_100_010_0_010_001_000_100,
+ 0b010_001_000_100_1_001_000_100_010,
+ 0b010_010_001_001_0_100_100_010_010,
+ 0b010_010_010_010_1_010_010_010_010,
+ 0b001_010_100_101_0_101_001_010_100, // 10
+ 0b010_101_010_100_1_001_010_101_010,
+ 0b010_101_010_101_0_101_010_101_010,
+ 0b011_010_101_010_1_010_101_010_110,
+ 0b011_010_101_011_0_110_101_010_110,
+ 0b011_101_011_010_1_010_110_101_110, // 15
+ 0b011_101_101_101_0_101_101_101_110,
+ 0b011_101_110_110_1_011_011_101_110,
+ 0b011_110_111_011_0_110_111_011_110,
+ 0b011_101_111_011_1_110_111_101_110,
+ 0b011_111_011_111_0_111_110_111_110, // 20
+ 0b011_111_110_111_1_111_011_111_110,
+ 0b011_111_111_111_0_111_111_111_110,
+ 0b011_111_111_111_1_111_111_111_110,
+ 0b111_111_111_111_1_111_111_111_110,
+ 0b111_111_111_111_1_111_111_111_111, // 25
+];
+
pub fn print_legende_line() {
+ let nb_cols: u32 = if let Some((w, _)) = term_size::dimensions() {
+ w as u32
+ } else {
+ 0
+ };
+
+ let size_elem = 6;
+ let nb_elements_to_print = CHARS_TABLE.len() as u32;
+
+ if nb_cols == 0 || nb_cols >= nb_elements_to_print * size_elem {
+ for (index, element) in CHARS_TABLE.iter().enumerate() {
+ print!(
+ "{} {}{}{}\x1b[0m ",
+ 10 * index, element.fg, element.bg, element.character
+ );
+ }
+ println!("{}", ERASE_LINE_END);
+ return;
+ }
+ println!("Nb_cols: {} / Line_size: {}", nb_cols, CHARS_TABLE.len() as u32 * size_elem);
+ let nb_elements_to_skip = if (CHARS_TABLE.len() as u32 * size_elem) > nb_cols {
+ (CHARS_TABLE.len() as u32 * size_elem - nb_cols + size_elem - 1) / size_elem
+ } else {
+ 0
+ };
+ let skip_mod : u32 = nb_elements_to_print / (nb_elements_to_skip as u32 + 1);
+ println!("Print: {} / Skip: {} / Mod: {}", nb_elements_to_print, nb_elements_to_skip, skip_mod);
+ println!("Print2: {} / Len: {} / Cols: {}", (nb_elements_to_print - nb_elements_to_skip), (nb_elements_to_print - nb_elements_to_skip) * size_elem, nb_cols);
+
for (index, element) in CHARS_TABLE.iter().enumerate() {
+ if (TO_HIDE_LEGENDE_ELEMENTS[nb_elements_to_skip as usize]) & (1 << index) != 0 {
+ continue;
+ }
print!(
"{} {}{}{}\x1b[0m ",
10 * index, element.fg, element.bg, element.character