chinedufn / psd

A Rust API for parsing and working with PSD files.
https://chinedufn.github.io/psd
Apache License 2.0
265 stars 40 forks source link

Add Tree structure and traversal #54

Open kevzettler opened 7 months ago

kevzettler commented 7 months ago

This PR adds a tree structure that represents the Psd layer tree. This PR preserves the existing layer and group interfaces. I added this tree feature because I needed to navigate without knowing the group names in advanced. Also I failed to construct a tree externally and maintain sort order on hierarchy levels that have mixed groups and layers using the existing group and layer interfaces. I needed to construct the tree at decode time to persevere the order. I feel this is a more intuitive interface to navigate the tree. This PR also adds a test that copies one_group_with_two_subgroups test but uses the tree interface to navigate.

@chinedufn let me know your thoughts on the implementation I'm fairly new to rust and not sure if there's any optimizations to make here.