25 lines
851 B
Rust
25 lines
851 B
Rust
use ratatui::style::{Color, Style};
|
|
use ratatui::text::{Line, Span, Text};
|
|
|
|
use crate::art::ArtImage;
|
|
|
|
/// Render half-block art as ratatui text: one `▀` per cell, foreground =
|
|
/// top pixel, background = bottom pixel.
|
|
pub fn to_text(art: &ArtImage) -> Text<'static> {
|
|
let mut lines = Vec::with_capacity(usize::from(art.height_cells));
|
|
for y in 0..art.height_cells {
|
|
let mut spans = Vec::with_capacity(usize::from(art.width_cells));
|
|
for x in 0..art.width_cells {
|
|
let (top, bottom) = art.cell(x, y);
|
|
spans.push(Span::styled(
|
|
"▀",
|
|
Style::new()
|
|
.fg(Color::Rgb(top[0], top[1], top[2]))
|
|
.bg(Color::Rgb(bottom[0], bottom[1], bottom[2])),
|
|
));
|
|
}
|
|
lines.push(Line::from(spans));
|
|
}
|
|
Text::from(lines)
|
|
}
|