diff options
Diffstat (limited to 'src/print.rs')
| -rw-r--r-- | src/print.rs | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/src/print.rs b/src/print.rs index 63f730f..f063322 100644 --- a/src/print.rs +++ b/src/print.rs @@ -147,7 +147,8 @@ const CHARS_TABLE: [SymbolTableElement; 25] = [ }, ]; -const TO_HIDE_LEGENDE_ELEMENTS: [u32; 25] = [ +const TO_HIDE_LEGENDE_ELEMENTS: [u32; 26] = [ + 0b000_000_000_000_0_000_000_000_000, 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, @@ -175,6 +176,11 @@ const TO_HIDE_LEGENDE_ELEMENTS: [u32; 25] = [ 0b111_111_111_111_1_111_111_111_111, // 25 ]; +const LEN_BY_NB_ELEMENT: [u32; 26] = [ + 139, 133, 128, 122, 117, 111, 105, 100, 94, 88, 83, 78, 72, 66, 60, 55, 50, 44, 38, 32, 27, 21, + 16, 10, 4, 0, +]; + pub fn print_legende_line() { let nb_cols: u32 = if let Some((w, _)) = term_size::dimensions() { w as u32 @@ -182,36 +188,26 @@ pub fn print_legende_line() { 0 }; + let mut index = 0; + while LEN_BY_NB_ELEMENT[index] > nb_cols { + index += 1 + } + 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); + let nb_elements_to_skip = index as usize; for (index, element) in CHARS_TABLE.iter().enumerate() { - if (TO_HIDE_LEGENDE_ELEMENTS[nb_elements_to_skip as usize]) & (1 << index) != 0 { + if (TO_HIDE_LEGENDE_ELEMENTS[nb_elements_to_skip]) & (1 << index) != 0 { continue; } print!( "{} {}{}{}\x1b[0m ", - 10 * index, element.fg, element.bg, element.character + 10 * index, + element.fg, + element.bg, + element.character ); } println!("{}", ERASE_LINE_END); |