Files
hcie-rust-v3.05/hcie-io/examples/dump_blend.rs
T
2026-07-09 02:59:53 +03:00

32 lines
1.4 KiB
Rust

fn main() {
let psd_path = "/home/hc/Pictures/_psd_stil_test/blend.psd";
let layers = match hcie_psd::import_psd(std::path::Path::new(psd_path)) {
Ok(l) => l,
Err(e) => {
println!("import_psd failed: {}", e);
return;
}
};
println!("Total layers: {}", layers.len());
for (i, layer) in layers.iter().enumerate() {
let effs = if layer.effects.is_empty() { "no effects".to_string() } else {
format!("{} effects: {}", layer.effects.len(), layer.effects.iter().map(|e| format!("{}({})", e.effect_name(), if e.is_enabled() {"on"} else {"off"})).collect::<Vec<_>>().join(", "))
};
let nonzero = layer.pixels.iter().filter(|v| **v > 0).count();
println!("Layer {}: '{}' {}x{} visible={} opacity={:.2} blend={:?} nonzero_pixels={} {}",
i, layer.name, layer.width, layer.height, layer.visible, layer.opacity, layer.blend_mode, nonzero, effs);
}
println!("\n--- Raw sequential parse ---");
let bytes = std::fs::read(psd_path).unwrap();
let parsed = hcie_psd::parse_psd_sequential(&bytes).unwrap();
for (i, p) in parsed.iter().enumerate() {
println!("Parsed #{}: '{}' group={} effects={}", i, p.name, p.is_group, p.effects.len());
for e in &p.effects {
println!(" - {} (enabled={})", e.effect_name(), e.is_enabled());
}
}
}