- Transform box around 2+ selected points (Move tool): corners/edges scale
them (Shift keeps proportions, Alt from the centre), just outside a corner
rotates them (Shift: 15° steps, the box turns with them), dragging inside
moves them; one undo step each. Corners win over points, points over edges,
edges over segments.
- Commands: vector.edit.bounds, vector.edit.resize, vector.edit.rotate,
vector.edit.transform; object.flipH/V and the 90°/180° rotations act on the
selected points while editing (unless ids are given).
- Design panel in edit mode: W/H for the selected points next to X/Y (the
layer's dimensions are hidden while points are selected).
- Point snapping for dragged points and handles and both pens: points and
segment midpoints of this and other vectors, the usual layer targets and
the pixel grid, with guides and a marker on the point landed on; Ctrl/Cmd
turns object snapping off. Snap code generalised in snap.rs (Targets spans).
- Fix: handle/bend drags read positions in the gesture snapshot's coordinates,
so handles no longer lag when the preview re-fits the vector.
- Shared resize math (tools::resized_box) and handle hit-testing for layer
and point boxes; canvas draws both boxes through one helper.
- Tests in vectoredit/transform_tests.rs (incl. junk sweep for the
edit-aware commands).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>