shapemaker/rendering/
layer.rs

1use measure_time::debug_time;
2
3use crate::Layer;
4
5use super::renderable::SVGRenderable;
6
7impl SVGRenderable for Layer {
8    fn render_to_svg(
9        &self,
10        colormap: crate::ColorMapping,
11        cell_size: usize,
12        object_sizes: crate::graphics::objects::ObjectSizes,
13        id: &str,
14    ) -> anyhow::Result<svg::node::element::Element> {
15        debug_time!("render_to_svg");
16
17        let mut layer_group = svg::node::element::Group::new()
18            .set("class", "layer")
19            .set("data-layer", self.name.clone());
20
21        for (object_id, obj) in &self.objects {
22            layer_group = layer_group.add(obj.render_to_svg(
23                colormap.clone(),
24                cell_size,
25                object_sizes,
26                &[id, object_id].join("--"),
27            )?);
28        }
29
30        Ok(layer_group.into())
31    }
32}