use crate::import::patternslot::PatternSlot;
use alloc::{vec, vec::Vec};
pub struct XpPattern;
impl XpPattern {
pub fn save(pattern: &[Vec<PatternSlot>]) -> Option<Vec<u8>> {
let mut data: Vec<u8> = vec![];
let version: u16 = 1;
let nrow: u16 = pattern.len() as u16;
if pattern[0].len() != 32 {
return None;
}
data.append(
&mut bincode::serde::encode_to_vec(version, bincode::config::legacy()).unwrap(),
);
data.append(&mut bincode::serde::encode_to_vec(nrow, bincode::config::legacy()).unwrap());
for row in pattern {
for ps in row {
let mut d = ps.save_xm_unpack();
data.append(&mut d);
}
}
Some(data)
}
}