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}