use crate::vpx::biff::{self, BiffRead, BiffReader};
#[derive(Debug, PartialEq)]
pub struct Collection {
pub name: String,
pub is_locked: bool,
pub editor_layer: u32,
pub editor_layer_name: String, pub editor_layer_visibility: bool,
}
impl BiffRead for Collection {
fn biff_read(reader: &mut BiffReader<'_>) -> Self {
let mut name = Default::default();
let mut is_locked: bool = false;
let mut editor_layer: u32 = Default::default();
let mut editor_layer_name: String = Default::default();
let mut editor_layer_visibility: bool = true;
loop {
reader.next(biff::WARN);
if reader.is_eof() {
break;
}
let tag = reader.tag();
let tag_str = tag.as_str();
match tag_str {
"NAME" => {
name = reader.get_wide_string();
}
"LOCK" => {
is_locked = reader.get_bool();
}
"LAYR" => {
editor_layer = reader.get_u32();
}
"LANR" => {
editor_layer_name = reader.get_string();
}
"LVIS" => {
editor_layer_visibility = reader.get_bool();
}
_ => {
println!(
"Unknown tag {} for {}",
tag_str,
std::any::type_name::<Self>()
);
reader.skip_tag();
}
}
}
Self {
name,
is_locked,
editor_layer,
editor_layer_name,
editor_layer_visibility,
}
}
}