From b2bb714ad8287a33a1ee399999e340471b0bb4b4 Mon Sep 17 00:00:00 2001 From: cc Date: Thu, 28 Aug 2025 02:02:37 -0700 Subject: Unifying label formats --- src/lib.rs | 58 +++++++++++++++++++++++++--------------------------------- 1 file changed, 25 insertions(+), 33 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 46c7cd6..7278c45 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,16 +1,14 @@ -mod large_label_format; mod label_format; pub mod binfile; -pub use large_label_format::LargeLabelFormat; -pub use label_format::LabelFormat; +use crate::label_format::{LabelFormat,LabelU16}; -pub(crate) fn flood_u32(source: &LargeLabelFormat, destination: &mut Vec, +pub(crate) fn flood(source: &LabelFormat, destination: &mut Vec, x: usize, y: usize, - from_color: u32, to_color: u16) { + from_color: T, to_color: R) { let width = source.width; let destination_color = destination[x + y * width]; - if destination_color != 0 { + if destination_color != destination_color.zero() { return; } let source_color = source.buffer[x + y * width]; @@ -19,42 +17,36 @@ pub(crate) fn flood_u32(source: &LargeLabelFormat, destination: &mut Vec, } destination[x + y * width] = to_color; if x > 0 { - flood_u32(source, destination, x-1, y, from_color, to_color); + flood(source, destination, x-1, y, from_color, to_color); } if (x+1) < width { - flood_u32(source, destination, x+1, y, from_color, to_color); + flood(source, destination, x+1, y, from_color, to_color); } if y > 0 { - flood_u32(source, destination, x, y-1, from_color, to_color); + flood(source, destination, x, y-1, from_color, to_color); } if (y+1) < source.height { - flood_u32(source, destination, x, y+1, from_color, to_color); + flood(source, destination, x, y+1, from_color, to_color); } } -pub(crate) fn flood_u16(source: &LabelFormat, destination: &mut Vec, - x: usize, y: usize, - from_color: u16, to_color: u16) { - let width = source.width; - let destination_color = destination[x + y * width]; - if destination_color != 0 { - return; +pub(crate) mod color { + pub(crate) fn reset_color() { + print!("\x1b[0m"); } - let source_color = source.buffer[x + y * width]; - if source_color != from_color { - return; - } - destination[x + y * width] = to_color; - if x > 0 { - flood_u16(source, destination, x-1, y, from_color, to_color); - } - if (x+1) < width { - flood_u16(source, destination, x+1, y, from_color, to_color); - } - if y > 0 { - flood_u16(source, destination, x, y-1, from_color, to_color); - } - if (y+1) < source.height { - flood_u16(source, destination, x, y+1, from_color, to_color); + + // Set background color from a number + pub(crate) fn set_color(color: usize) { + if color == 0 { + reset_color(); + return; + } + let paint_color = color-1; + let paint_color = paint_color % 13; + if paint_color < 7 { + print!("\x1b[{}m", 40 + (paint_color+1)); + } else { + print!("\x1b[{}m", 100 + (paint_color+1-7)); + } } } -- cgit v1.2.1