vtracer_webapp/
svg.rs

1use web_sys::Element;
2use visioncortex::{Color, CompoundPath, PointF64};
3use super::common::document;
4
5pub struct Svg {
6    element: Element,
7}
8
9impl Svg {
10    pub fn new_from_id(svg_id: &str) -> Self {
11        let element = document().get_element_by_id(svg_id).unwrap();
12
13        Self { element }
14    }
15
16    pub fn prepend_path(&mut self, paths: &CompoundPath, color: &Color, precision: Option<u32>) {
17        let path = document()
18            .create_element_ns(Some("http://www.w3.org/2000/svg"), "path")
19            .unwrap();
20        let (string, offset) = paths.to_svg_string(true, PointF64::default(), precision);
21        path.set_attribute("d", &string).unwrap();
22        path.set_attribute(
23            "transform",
24            format!("translate({},{})", offset.x, offset.y).as_str(),
25        )
26        .unwrap();
27        path.set_attribute(
28            "style",
29            format!("fill: {};", color.to_hex_string()).as_str(),
30        )
31        .unwrap();
32        self.element.prepend_with_node_1(&path).unwrap();
33    }
34}