mirror of
https://github.com/storytold/craft-libs.git
synced 2026-11-14 06:22:24 +00:00
* craft-psd: Photoshop PSD/PSB reader and writer, moved from PhotoCraft PhotoCraft's `photocraft-psd` crate (crates/psd at storytold/photocraft 63b641b55e54bf8f5c83efd977fdb16a2c255431) as `craft-psd`: the lossless PSD/PSB model, reader, writer and builder, descriptors, the Photoshop resource files that share its primitives (.abr, .asl, .aco, .act, .ase, .grd, .pat, .atn, .csh, .shc) and the Photoshop blocks of a layered TIFF. The crate had no dependency on any other PhotoCraft crate. Code is unchanged apart from the crate name, craft-libs' rustfmt width, comments that named other PhotoCraft crates, issue references (now `photocraft#N`), and the corpus tests' directory (`CRAFT_PSD_CORPUS` or `corpus/` at the workspace root). Tests, proptests, fuzz targets and fixtures move with it. Part of #778, #786. * craft-psd: Head reads the header and image resources without layers or pixels `Head::from_bytes` takes the file or a prefix that reaches the end of the image resources; `Head::from_source` makes three reads and nothing after the resources. `Header::from_bytes` parses the 26-byte header alone, and `head::sniff` checks the signature. The readers in LightCraft (header probe, EXIF/XMP scan), DesignCraft and FilmCraft skip the layer section and work from the start of the file. `PsdFile` parses every layer record, and `Header::read` was private, so they had no equivalent here. Section lengths past the data are errors before anything is allocated.