mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-27 03:17:05 -06:00
* PSD: read smart-filter masks (FEid) with one section per smart object Photoshop writes the global Filter Effects block (`FEid`/`FXid`) as a version followed by one length-prefixed section per filtered smart object, each padded to 4 bytes outside its length. The reader took the first section's length as the whole body, so any document with two or more filtered smart objects failed with "filter effects: N unexpected bytes after the data": the smart filter masks were not imported and the open reported a warning. The 28 FEid files in the public corpora each hold a single section, which is why the corpus never hit it. The reader now walks every section (still accepting several items in one section, as earlier PhotoCraft versions wrote), and the writer emits one padded section per item, as Photoshop does. Tests: reads_one_section_per_item (fails before: parse error) and reads_several_items_in_one_section; malformed_data_is_an_error now cuts only before the end of the section. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * PSD FEid: an empty item list still writes one section, so it reads back Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: EthanSuquet <292885762+EthanSuquet@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>