mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-27 11:27:21 -06:00
* Smart objects keep their four-corner (Distort / Perspective) placement A smart object's placement was an affine transform, so a perspective placement lost its fourth corner: a mockup PSD's distorted screen looked right on open (Photoshop's cached pixels) but re-rendered as a parallelogram after Edit Contents → Save. - SmartObject gains `perspective`, the full projective map (source px → document px); `transform` keeps its affine approximation - Re-renders go through it (place_source_projective), as do moves, canvas rotations and edit.transform, so Distort / Perspective now work on smart objects instead of being refused - PSD import reads the quad (nonAffineTransform / Trnf) and export writes it back; .pcraft stores the field (absent for affine placements) - Test: a distorted smart object survives Edit Contents → Save Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Smart objects: warp maps through a distorted placement; perspective round-trip tests Warp handles and stored warps on a Distort / Perspective smart object go through its full projective placement (smart_cmds::placement) instead of the affine approximation, so they sit on the distorted corners. Tests: SoLd perspective round trip and quad_moved (io), a perspective smart layer in the .pcraft rich_doc, warp on a distorted smart object (engine). Comments no longer name another product. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Jason Short <3344856+jason4short@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>