This branch predates CI on `main`. `cargo fmt --all` only; no behaviour. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
93 lines
2.9 KiB
Rust
93 lines
2.9 KiB
Rust
use sylpheed_formats::{pak, ui_layout};
|
|
fn main() {
|
|
let mut a = std::env::args().skip(1);
|
|
let pk = a.next().unwrap();
|
|
let i: usize = a.next().unwrap().parse().unwrap();
|
|
let ar = pak::PakArchive::open(pk).unwrap();
|
|
let by = ar.read(&ar.entries()[i]).unwrap();
|
|
let b = ui_layout::parse_build(&by).unwrap();
|
|
println!(
|
|
"entry {i}: {} elements, {} records, {} sprites",
|
|
b.elements.len(),
|
|
b.records.len(),
|
|
b.sprites.len()
|
|
);
|
|
let mut rk: Vec<&String> = b.records.keys().collect();
|
|
rk.sort();
|
|
println!(" records: {:?}", rk);
|
|
for (rn, &(o, sz)) in &b.records {
|
|
if o + sz > by.len() {
|
|
continue;
|
|
}
|
|
let Some(lb) = ui_layout::parse_build(&by[o..o + sz]) else {
|
|
continue;
|
|
};
|
|
println!(" RECORD {rn}: {} elements", lb.elements.len());
|
|
for le in &lb.elements {
|
|
let lts: Vec<String> = le
|
|
.keyframes
|
|
.iter()
|
|
.map(|k| {
|
|
format!(
|
|
"t{}a{}",
|
|
k.time.map(|v| v as i64).unwrap_or(-1),
|
|
k.fade >> 24
|
|
)
|
|
})
|
|
.collect();
|
|
println!(
|
|
" [{}] {:<22} kind=0x{:<6x} {}",
|
|
le.index,
|
|
le.name,
|
|
le.kind,
|
|
lts.join(" ")
|
|
);
|
|
}
|
|
}
|
|
for e in &b.elements {
|
|
let ts: Vec<String> = e
|
|
.keyframes
|
|
.iter()
|
|
.map(|k| {
|
|
format!(
|
|
"t{}a{}",
|
|
k.time.map(|v| v as i64).unwrap_or(-1),
|
|
k.fade >> 24
|
|
)
|
|
})
|
|
.collect();
|
|
println!(
|
|
" [{}] {:<24} kind=0x{:<6x} {}",
|
|
e.index,
|
|
e.name,
|
|
e.kind,
|
|
ts.join(" ")
|
|
);
|
|
if let Some(&(o, s)) = b.records.get(&e.name) {
|
|
if o + s <= by.len() {
|
|
if let Some(lb) = ui_layout::parse_build(&by[o..o + s]) {
|
|
for le in &lb.elements {
|
|
let lts: Vec<String> = le
|
|
.keyframes
|
|
.iter()
|
|
.map(|k| {
|
|
format!(
|
|
"t{}a{}",
|
|
k.time.map(|v| v as i64).unwrap_or(-1),
|
|
k.fade >> 24
|
|
)
|
|
})
|
|
.collect();
|
|
println!(
|
|
" leaf {:<20} kind=0x{:<6x} {}",
|
|
le.name,
|
|
le.kind,
|
|
lts.join(" ")
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|