fn main() { let path = std::path::Path::new("_images/_psd_stil_test/blend.psd"); 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::>()); }