Files
hcie-rust-v3.05/hcie-io/examples/verify_roundtrip.rs
T

40 lines
1.6 KiB
Rust
Raw Normal View History

2026-07-09 02:59:53 +03:00
use std::path::Path;
fn main() {
let path = Path::new("_tmp/roundtrip_output.psd");
let bytes = std::fs::read(path).expect("read");
println!("=== Verify roundtrip PSD parseable ===");
println!("File: {} bytes", bytes.len());
match hcie_psd::Psd::from_bytes(&bytes) {
Ok(psd) => {
println!("Psd::from_bytes OK: {}x{}, {} layers", psd.width(), psd.height(), psd.layers().len());
for (i, layer) in psd.layers().iter().enumerate() {
println!(" [{}] '{}' visible={} opacity={}", i, layer.name(), !layer.visible(), layer.opacity());
}
}
Err(e) => println!("Psd::from_bytes FAILED: {:?}", e),
}
match hcie_psd::import_psd(path) {
Ok(layers) => {
println!("\nimport_psd OK: {} layers", layers.len());
for (i, layer) in layers.iter().enumerate() {
println!(" [{}] '{}' effects={} blend={:?}", i, layer.name, layer.effects.len(), layer.blend_mode);
for (j, fx) in layer.effects.iter().enumerate() {
println!(" effect[{}]: {:?}", j, std::mem::discriminant(fx));
}
}
}
Err(e) => println!("import_psd FAILED: {}", e),
}
println!("\n=== Testing composited RGBA ===");
let psd = hcie_psd::Psd::from_bytes(&bytes).unwrap();
let rgba = psd.rgba();
println!("RGBA: {} bytes (expected {})", rgba.len(), psd.width() * psd.height() * 4);
let non_zero = rgba.iter().filter(|&&b| b > 0).count();
println!("Non-zero bytes: {} / {}", non_zero, rgba.len());
}