blitty 0.2.0

Display list based rendering engine with support for automatic damage based painting.
Documentation
use super::*;

use smol;

use embedded_graphics::{
    pixelcolor::{BinaryColor, Rgb888},
    prelude::*,
    primitives::{Circle, Line, Rectangle, PrimitiveStyle},
    mono_font::{ascii::FONT_6X9, MonoTextStyle},
    text::Text,
};

use embedded_graphics_simulator::{SimulatorDisplay, Window, OutputSettingsBuilder};


fn test2() -> Result<(), DisplayListError> {
    let mut display = SimulatorDisplay::<Rgb888>::new(Size::new(320, 240));

    let mut renderer = embedded_render::EmbeddedRender::new(&mut display, 16, 16);

    let mut commands = DisplayList::<3>::new();


    let bounds = BoundingBox::new( 176, 16, 192, 176);
    let rgb = Rgb::new( 0, 64, 128 );

    let rect = Command::new_rect(bounds, rgb);

    commands.set(0, rect)?;

    let bounds = BoundingBox::new( 208, 16, 224, 176);
    let rgb = Rgb::new( 0, 128, 64 );

    let rect = Command::new_rect(bounds, rgb);

    commands.set(2, rect)?;

    let mut bounds = BoundingBox::new( 64, 32, 160, 128);
    let mut rgb = Rgb::new( 64, 64, 64 );

    let rect = Command::new_rect(bounds.clone(), rgb.clone());

    commands.set(1, rect)?;


    smol::block_on(commands.draw(&mut renderer))?;


    let output_settings = OutputSettingsBuilder::new()
        .build();

    let mut window = Window::new("Hello World", &output_settings);

    window.update(renderer.get_display());

    for i in 0..128 {
        bounds.x1 += 1;
        bounds.x2 += 1;
        rgb.r += 1;

        let rect = Command::new_rect(bounds.clone(), rgb.clone());

        commands.update(1, rect)?;

        smol::block_on(commands.draw(&mut renderer))?;

        window.update(renderer.get_display());
    }

    Ok(())
}

#[test]
fn it_works2() {
    let result = test2();

    assert_eq!(result, Ok(()));
}