ascii_art/
lib.rs

1mod canvas;
2mod errors;
3mod renderer;
4
5use crate::renderer::AsciiColorMode;
6pub use crate::{
7    canvas::{AsciiCanvas, AsciiCanvasItem},
8    errors::{AsciiArtError, Result},
9    renderer::{AsciiData, AsciiSet},
10};
11use fontdue::Font;
12pub use image::{Luma, Rgb};
13
14#[derive(Debug, Clone)]
15pub struct AsciiArt {
16    pub pixel_aligned: bool,
17    pub reverse_color: bool,
18    pub font_size: f32,
19    pub char_set: AsciiSet,
20    pub color_mode: AsciiColorMode,
21}
22
23impl Default for AsciiArt {
24    fn default() -> Self {
25        Self {
26            pixel_aligned: false,
27            reverse_color: false,
28            font_size: 16.0,
29            char_set: Default::default(),
30            color_mode: Default::default(),
31        }
32    }
33}
34
35pub fn get_ascii_art_set(name: &str, font: &Font) -> Option<AsciiArt> {
36    let s = match name.to_lowercase().as_str() {
37        "ascii" => "a",
38        _ => return None,
39    };
40    let mut ctx = AsciiArt::default();
41    ctx.build_font_cache(font, s);
42    Some(ctx)
43}