Files
img2ascii/src/main.rs
2025-01-25 21:04:45 +01:00

55 lines
1.3 KiB
Rust

//! Driver module.
#![feature(file_create_new)]
use crate::ascii_manipulation::*;
use crate::cli::Cli;
use crate::image_manipulation::*;
use crate::model_rgb_ascii::Ascii;
use crate::output::*;
use clap::Parser;
mod ascii_manipulation;
mod cli;
mod image_manipulation;
mod model_rgb_ascii;
mod output;
/// This is the main function.
///
/// It drives the CLI module, calls the appropriate convert functions and directs output.
fn main() {
std::env::set_var("RUST_LOG", "info");
//parse flags
let cli: Cli = Cli::parse();
cli.init();
cli.validate();
//preprocess image
let mut img = open_image(cli.image);
img = resize_image(img, cli.full, cli.braille, cli.width);
//converting to ASCII
let out: Vec<Vec<Ascii>>;
if cli.braille {
out = to_braille_ascii(img, cli.threshold);
} else if cli.complex {
out = to_complex_ascii(img);
} else if let Some(map) = cli.map {
out = to_custom_ascii(map, img);
} else {
out = to_simple_ascii(img);
}
//output
if let Some(output) = cli.output {
print_file(out, output);
} else {
if cli.background && (cli.colour || cli.grayscale) {
print_terminal_background(out, cli.colour, cli.grayscale);
} else {
print_terminal(out, cli.colour, cli.grayscale);
}
}
}