use rasterize::*;
use std::{fs::File, sync::Arc};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let fill_rule = FillRule::default();
let rasterizer = ActiveEdgeRasterizer::default();
let rad = GradRadial::new(
vec![
GradStop::new(0.0, "#ffbd4f".parse()?),
GradStop::new(0.5, "#ff0000".parse()?),
GradStop::new(0.7, "#ff00ff".parse()?),
GradStop::new(1.0, "#000000".parse()?),
],
Units::UserSpaceOnUse,
false,
GradSpread::Reflect,
Transform::new_skew(deg2rad(30.0), 0.0)
.pre_translate(-30.0, -20.0)
.pre_rotate(deg2rad(20.0)),
(50.0, 50.0),
40.0,
(50.0, 50.0),
0.0,
);
let scene = Scene::fill(
Arc::new("M10,10 70,10 70,70 10,70z".parse()?),
Arc::new(rad),
fill_rule,
);
let img = scene.render(
&rasterizer,
Transform::new_rotate(deg2rad(30.0)).pre_translate(10.0, 10.0),
Some(BBox::new((0.0, 0.0), (80.0, 80.0))),
None,
);
img.write_bmp(std::io::stdout())?;
Ok(())
}
fn deg2rad(rad: Scalar) -> Scalar {
PI * rad / 180.0
}