mirror of
https://github.com/storytold/photocraft.git
synced 2026-11-10 18:20:31 -06:00
* Content-Aware Move: Transform On Drop (#3071) The Content-Aware Move tool gains Photoshop's Transform On Drop checkbox. With it on, the drop puts a transform box on the moved patch (the Free Transform box's handles, limited to move, scale and rotate); Enter, the check button or a double-click computes the content-aware blend with the transformed patch, Esc or the cancel button drops the whole move. The document is untouched until the commit, so the move stays one History step. Engine: paint.contentAwareMove takes scaleX / scaleY (%, 1..10000, negative flips) and rotate (degrees, clockwise) about the selection's centre before the offset, validated (Err, not a panic, for non-finite, out-of-range or off-canvas placements). The content and the selection's shape are resampled through the inverse map on float samples (any depth); the selection is transformed with the content. A plain move keeps the old, exact code path. UI: cam_transform.rs holds the box (UiState.cam_transform, view state); the option is remembered in ToolOptions and settable with ui.set camTransformOnDrop; ui.inspect reports camTransform. Scorecard TOOL-213-4 stays partial: no live preview of the blended result yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Tests: keep Transform On Drop cases in the Content-Aware Move test, not Patch (#3071) paint.patch takes no scaleX/scaleY/rotate, so those cases (which only paint.contentAwareMove rejects) failed patch_fails_gracefully. They are already covered by content_aware_move_fails_gracefully. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>