use crate::MltResult;
use crate::encoder::model::StagedLayer;
use crate::encoder::property::encode::write_prop;
use crate::encoder::{Codecs, Encoder, StagedId};
pub(crate) fn encode_into01(
layer: StagedLayer,
mut enc: Encoder,
codecs: &mut Codecs,
) -> MltResult<Encoder> {
let column_count = usize::from(!matches!(layer.id, StagedId::None))
+ 1 + layer.properties.len();
let StagedLayer {
name,
extent,
id,
geometry,
properties,
} = layer;
id.write_to(&mut enc, codecs)?;
geometry.write_to(&mut enc, codecs)?;
for prop in properties {
write_prop(&prop, &mut enc, codecs)?;
}
enc.write_header01(&name, extent.get(), column_count)?;
Ok(enc)
}