This repository has no description
1use itertools::Itertools;
2use measure_time::debug_time;
3
4use super::renderable::SVGRenderable;
5use crate::Layer;
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/layer");
16 let mut layer_group = svg::node::element::Group::new()
17 .set("class", "layer")
18 .set("data-layer", self.name.clone());
19
20 for (object_id, obj) in
21 self.objects.iter().sorted_by_key(|(oid, _)| (*oid).clone())
22 {
23 layer_group = layer_group.add(obj.render_to_svg(
24 colormap.clone(),
25 cell_size,
26 object_sizes,
27 &[id, object_id].join("--"),
28 )?);
29 }
30
31 Ok(layer_group.into())
32 }
33}