use std::f64::consts::{PI, TAU};

use ab_glyph::FontArc;
use glam::{DVec2, dvec2};
use palette::Srgba;
use render_agnostic::{
    Renderer, image_registries::image_image_registry::ImageImageRegistry,
    renderers::image::ImageRenderer,
};

fn main() {
    let mut image_renderer = ImageRenderer::new(
        64,
        64,
        2.0,
        DVec2::splat(0.5),
        1,
        FontArc::try_from_slice(include_bytes!("roboto.ttf")).unwrap(),
        ImageImageRegistry::default(),
    );

    image_renderer.render_rectangle(
        DVec2::splat(8.0),
        16.0,
        16.0,
        DVec2::splat(0.0),
        0.0,
        Srgba::new(1.0, 1.0, 1.0, 1.0),
    );

    image_renderer.render_rectangle(
        dvec2(32.0, 32.0),
        16.0,
        16.0,
        DVec2::splat(0.5),
        -PI / 2.0,
        Srgba::new(1.0, 0.0, 1.0, 1.0),
    );

    image_renderer.render_rectangle_lines(
        DVec2::splat(40.0),
        8.0,
        16.0,
        DVec2::splat(0.5),
        0.0,
        1.0,
        Srgba::new(0.0, 0.0, 1.0, 1.0),
    );

    image_renderer.render_rectangle_lines(
        DVec2::splat(40.0),
        16.0,
        16.0,
        DVec2::splat(0.0),
        0.0,
        1.0,
        Srgba::new(1.0, 0.0, 0.0, 1.0),
    );

    image_renderer.render_rectangle_lines(
        DVec2::splat(40.0),
        8.0,
        16.0,
        DVec2::splat(0.5),
        TAU / 8.0,
        1.0,
        Srgba::new(0.0, 1.0, 0.0, 1.0),
    );

    image_renderer
        .render_image_onto(image_renderer.black())
        .save("rectangles.png")
        .unwrap();
}
