shapemaker 1.1.1

An experimental WASM-capable, generative SVG-based video rendering engine that reacts to MIDI or audio data
Documentation
use measure_time::debug_time;

use crate::Layer;

use super::renderable::SVGRenderable;

impl SVGRenderable for Layer {
    fn render_to_svg(
        &self,
        colormap: crate::ColorMapping,
        cell_size: usize,
        object_sizes: crate::graphics::objects::ObjectSizes,
        id: &str,
    ) -> anyhow::Result<svg::node::element::Element> {
        debug_time!("render_to_svg");

        let mut layer_group = svg::node::element::Group::new()
            .set("class", "layer")
            .set("data-layer", self.name.clone());

        for (object_id, obj) in &self.objects {
            layer_group = layer_group.add(obj.render_to_svg(
                colormap.clone(),
                cell_size,
                object_sizes,
                &[id, object_id].join("--"),
            )?);
        }

        Ok(layer_group.into())
    }
}