raqote 0.1.2

2D graphics library
Documentation
use crate::draw_target::*;
use crate::path_builder::*;

#[test]
fn basic_rasterizer() {
    let mut dt = DrawTarget::new(2, 2);
    let mut pb = PathBuilder::new();
    pb.rect(1., 1., 1., 1.);
    dt.fill(&pb.finish(), &Source::Solid(SolidSource{r: 0xff, g: 0xff, b: 0xff, a: 0xff}), Winding::NonZero);
    let white = 0xffffffff;
    assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..])
}

#[test]
fn clip_rect() {
    let mut dt = DrawTarget::new(2, 2);
    dt.push_clip_rect(rect(1, 1, 2, 2));
    let mut pb = PathBuilder::new();
    pb.rect(0., 0., 2., 2.);
    dt.fill(&pb.finish(),
            &Source::Solid(SolidSource{r: 0xff, g: 0xff, b: 0xff, a: 0xff}),
            Winding::NonZero);
    let white = 0xffffffff;
    assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..])
}

#[test]
fn nested_clip_rect() {
    let mut dt = DrawTarget::new(2, 2);
    dt.push_clip_rect(rect(0, 1, 2, 2));
    dt.push_clip_rect(rect(1, 0, 2, 2));
    let mut pb = PathBuilder::new();
    pb.rect(0., 0., 2., 2.);
    dt.fill(&pb.finish(),
            &Source::Solid(SolidSource{r: 0xff, g: 0xff, b: 0xff, a: 0xff}),
            Winding::NonZero);
    let white = 0xffffffff;
    assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..])
}

#[test]
fn even_odd_rect() {
    let mut dt = DrawTarget::new(2, 2);
    let mut pb = PathBuilder::new();
    pb.rect(0., 0., 2., 2.);
    pb.rect(0., 0., 2., 2.);
    pb.rect(1., 1., 2., 2.);
    dt.fill(&pb.finish(),
            &Source::Solid(SolidSource{r: 0xff, g: 0xff, b: 0xff, a: 0xff}),
            Winding::EvenOdd);
    let white = 0xffffffff;
    assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..])
}