80 findings, not the 14 the first run showed -- clippy stops at the first failing compilation unit, so `--keep-going` is what makes the list complete. 60 were machine-applicable (`cargo clippy --fix`). The rest by hand: * five descending `sort_by` -> `sort_by_key(Reverse(..))` * `chunks_exact(4)` on both sides of four zips, so the compared items stay `[u8; 4]` rather than one array against one slice * three `type` aliases for the census maps and the captured-quad tuple * `&PathBuf` -> `&Path` in two disc tests * two range loops; one of them keeps `#[allow(needless_range_loop)]` with the reason -- the index is into a map's value, which changes each iteration * the module doc list in `invert_capture` re-indented to markdown's rules * `blit`'s eight arguments get `#[allow(too_many_arguments)]`, not a struct One dead `let off = b.len();` in a `ratc` test is dropped rather than renamed. The sibling test at :162 is the one that asserts an offset; if this one was meant to as well, that is a test change and not a lint fix. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
37 lines
1.3 KiB
Rust
37 lines
1.3 KiB
Rust
// Leave-one-out over the elements that touch a band, dumping raw RGBA each time.
|
|
use sylpheed_formats::{pak, ui_layout};
|
|
fn main() {
|
|
let mut a = std::env::args().skip(1);
|
|
let pk = a.next().unwrap();
|
|
let bi: usize = a.next().unwrap().parse().unwrap();
|
|
let dir = a.next().unwrap();
|
|
let ar = pak::PakArchive::open(pk).unwrap();
|
|
let by = ar.read(&ar.entries()[bi]).unwrap();
|
|
let b = ui_layout::parse_build(&by).unwrap();
|
|
let o = ui_layout::ComposeOptions {
|
|
backdrop: [0, 0, 0, 255],
|
|
..Default::default()
|
|
};
|
|
let n = b.elements.len();
|
|
let base = ui_layout::compose(&b, &by, o, None);
|
|
std::fs::write(format!("{dir}/base.raw"), &base.rgba).unwrap();
|
|
println!("canvas {}x{} elements {n}", base.width, base.height);
|
|
for i in 0..n {
|
|
let e = &b.elements[i];
|
|
let Some(kf) = e.rest() else { continue };
|
|
// only bother with elements whose rest pose can touch the band
|
|
let mut v = vec![true; n];
|
|
v[i] = false;
|
|
let c = ui_layout::compose(&b, &by, o, Some(&v));
|
|
std::fs::write(format!("{dir}/wo-{i}.raw"), &c.rgba).unwrap();
|
|
println!(
|
|
"{i}\t{}\t{}\t({},{})\ta={}",
|
|
e.name,
|
|
e.sprite.clone().unwrap_or_default(),
|
|
kf.x,
|
|
kf.y,
|
|
kf.fade >> 24
|
|
);
|
|
}
|
|
}
|