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

45 lines
2.3 KiB
Rust
Raw Normal View History

2026-07-09 02:59:53 +03:00
fn main() {
let path = std::path::Path::new("_images/_psd_stil_test/blend.psd");
2026-07-09 02:59:53 +03:00
let bytes = std::fs::read(path).unwrap();
let parsed = hcie_psd::parse_psd_sequential(&bytes).unwrap();
println!("=== Sequential Parser Output ===");
for (i, p) in parsed.iter().enumerate() {
println!("#{}: '{}' group={} size_hint={:?} effects={}", i, p.name, p.is_group,
p.mask_bounds.map(|m| (m[2]-m[0], m[3]-m[1])), p.effects.len());
for e in &p.effects {
println!(" - {} (enabled={})", e.effect_name(), e.is_enabled());
match e {
hcie_fx::LayerEffect::BevelEmboss { depth, size, .. } => {
println!(" depth={} size={}", depth, size);
}
hcie_fx::LayerEffect::InnerGlow { color, opacity, size, .. } => {
println!(" color={:?} opacity={} size={}", color, opacity, size);
}
hcie_fx::LayerEffect::OuterGlow { color, opacity, size, spread, .. } => {
println!(" color={:?} opacity={} size={} spread={}", color, opacity, size, spread);
}
hcie_fx::LayerEffect::Satin { opacity, angle, distance, size, .. } => {
println!(" opacity={} angle={} distance={} size={}", opacity, angle, distance, size);
}
hcie_fx::LayerEffect::DropShadow { opacity, angle, distance, size, .. } => {
println!(" opacity={} angle={} distance={} size={}", opacity, angle, distance, size);
}
hcie_fx::LayerEffect::ColorOverlay { color, opacity, .. } => {
println!(" color={:?} opacity={}", color, opacity);
}
hcie_fx::LayerEffect::GradientOverlay { opacity, angle, scale, .. } => {
println!(" opacity={} angle={} scale={}", opacity, angle, scale);
}
_ => {}
}
}
}
println!("\n=== PSD Crate Output ===");
let psd = hcie_psd::Psd::from_bytes(&bytes).unwrap();
for (i, layer) in psd.layers().iter().enumerate() {
println!("#{}: '{}' opacity={}", i, layer.name(), layer.opacity());
}
println!("Groups: {:?}", psd.groups().keys().collect::<Vec<_>>());
}