use dotmax::image::{ColorMode, DitheringMethod, ImageRenderer};
use dotmax::TerminalRenderer;
use std::path::Path;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut renderer = TerminalRenderer::new()?;
println!("=== Custom Image Rendering Example ===\n");
println!("1. Custom dimensions (60×30) with adjustments:");
let mut builder1 = ImageRenderer::new()
.load_from_path(Path::new("tests/fixtures/images/sample.png"))?
.resize(60, 30, true)? .brightness(1.2)? .contrast(1.1)? .gamma(0.9)?; let grid1 = builder1.render()?;
renderer.render(&grid1)?;
println!();
println!("2. Atkinson dithering (softer appearance):");
let mut builder2 = ImageRenderer::new()
.load_from_path(Path::new("tests/fixtures/images/sample.png"))?
.resize_to_terminal()? .dithering(DitheringMethod::Atkinson);
let grid2 = builder2.render()?;
renderer.render(&grid2)?;
println!();
println!("3. Manual threshold at 128 (mid-point):");
let mut builder3 = ImageRenderer::new()
.load_from_path(Path::new("tests/fixtures/images/sample.png"))?
.resize(50, 25, true)?
.threshold(128); let grid3 = builder3.render()?;
renderer.render(&grid3)?;
println!();
println!("4. TrueColor mode (full RGB per braille cell):");
let mut builder4 = ImageRenderer::new()
.load_from_path(Path::new("tests/fixtures/images/sample.png"))?
.resize(40, 20, true)?
.color_mode(ColorMode::TrueColor);
let grid4 = builder4.render()?;
renderer.render(&grid4)?;
println!();
println!("=== All examples completed! ===");
Ok(())
}