use crate::error::Result;
use crate::model::{VolumetricLayer, VolumetricRef, VolumetricStack};
use crate::writer::xml_writer::XmlWriter;
use std::io::Write;
pub fn write_volumetric_stack<W: Write>(
writer: &mut XmlWriter<W>,
stack: &VolumetricStack,
) -> Result<()> {
writer
.start_element("volumetricstack")
.attr("id", &stack.id.0.to_string())
.write_start()?;
for layer in &stack.layers {
write_layer(writer, layer)?;
}
for vref in &stack.refs {
write_volumetricref(writer, vref)?;
}
writer.end_element("volumetricstack")?;
Ok(())
}
fn write_layer<W: Write>(writer: &mut XmlWriter<W>, layer: &VolumetricLayer) -> Result<()> {
writer
.start_element("layer")
.attr("z", &layer.z_height.to_string())
.attr("path", &layer.content_path)
.write_empty()?;
Ok(())
}
fn write_volumetricref<W: Write>(writer: &mut XmlWriter<W>, vref: &VolumetricRef) -> Result<()> {
writer
.start_element("volumetricref")
.attr("volumetricstackid", &vref.stack_id.0.to_string())
.attr("path", &vref.path)
.write_empty()?;
Ok(())
}