use std::rc::Rc; use usvg::NodeExt; fn main() { let opt = resvg_raqote::Options::default(); let size = usvg::Size::new(200.0, 200.0).unwrap(); let mut rtree = usvg::Tree::create(usvg::Svg { size, view_box: usvg::ViewBox { rect: size.to_rect(0.0, 0.0), aspect: usvg::AspectRatio::default(), }, }); rtree.append_to_defs(usvg::NodeKind::LinearGradient(usvg::LinearGradient { id: "lg1".into(), x1: 0.0, y1: 0.0, x2: 1.0, y2: 0.0, base: usvg::BaseGradient { units: usvg::Units::ObjectBoundingBox, transform: usvg::Transform::default(), spread_method: usvg::SpreadMethod::Pad, stops: vec![ usvg::Stop { offset: usvg::StopOffset::new(0.0), color: usvg::Color::new(0, 255, 0), opacity: usvg::Opacity::new(1.0), }, usvg::Stop { offset: usvg::StopOffset::new(1.0), color: usvg::Color::new(0, 255, 0), opacity: usvg::Opacity::new(0.0), }, ], }, })); let fill = Some(usvg::Fill { paint: usvg::Paint::Link("lg1".into()), ..usvg::Fill::default() }); rtree.root().append_kind(usvg::NodeKind::Path(usvg::Path { fill, data: Rc::new(usvg::PathData::from_rect(usvg::Rect::new(20.0, 20.0, 160.0, 160.0).unwrap())), .. usvg::Path::default() })); println!("{}", rtree.to_string(usvg::XmlOptions::default())); let img = resvg_raqote::render_to_image(&rtree, &opt).unwrap(); img.write_png("out.png").unwrap(); }