use sylpheed_formats::{pak, ui_layout}; fn main() { let ar = pak::PakArchive::open(std::env::args().nth(1).unwrap()).unwrap(); let by = ar.read(&ar.entries()[4]).unwrap(); let b = ui_layout::parse_build(&by).unwrap(); for n in ["ptloop01.rat", "ptloop02.rat"] { let el = b.elements.iter().find(|e| e.name == n).unwrap(); println!( "{n}: kind={:#x} animated={} rec={:?}", el.kind, el.animated, b.records.get(n).map(|&(o, s)| (o, s)) ); if let Some(&(o, s)) = b.records.get(n) { match ui_layout::parse_build(&by[o..o + s]) { Some(lb) => { for le in &lb.elements { println!( " leaf {:?} sprite={:?} in_sprites={}", le.name, le.sprite, le.sprite .as_ref() .map(|x| b.sprites.contains_key(x)) .unwrap_or(false) ); } } None => println!(" leaf parse FAILED"), } } } }