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}