With a placed graphic selected (Direct Selection, or the content
grabber), InDesign shows the graphic's own brown bounding box with eight
handles: dragging one resizes the image inside its frame (Shift keeps its
proportions, Alt from its centre) and leaves the frame as it is. LYH
Studio episode 14 does this at 2:46 to make the photo cover the page.
- tools: a content-handle hit test on the selected graphic's bounds
(after the frame's anchors under Direct Selection), a ContentResize
drag previewing `transform.set {content, bounds}`, the handle cursors,
and the content ghost while dragging. The frame's handles don't resize
the frame while its graphic is selected.
- engine: `transform.set` takes `bounds` for content: the graphic's new
bounding box on the spread (normalized, never empty).
- canvas: the brown content box gets its handles; the frame's handles
are hidden while the graphic is selected.
Builds on #415 (content selection and moves) and #550 (transform.set
on content).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With a placed graphic selected, transform.set acted on the graphic but
the Control bar and Properties still read the frame's values: after
setting the image of a -45° frame to 0°, a spinner step sent -44, and a
200 pt frame holding a 400 pt image showed W 200, so 201 halved the
image. transform.info now reports the graphic's values at the top level
in that case, and sel_info gives the graphic's bounds.
Also: `id` names the target explicitly, like `ids`, so it isn't taken
as a content selection; and a content selection of locked frames
records no empty undo step.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With a frame's content selected (Direct Selection, or selection.set
{content: true}), transform.set still rotated, scaled and moved the
frame. It now transforms the placed graphic inside the frame and leaves
the frame alone, as InDesign's Transform panel does: rotation, shear and
scale are absolute and measured as transform.info reports the content;
x, y, width and height are the graphic's bounds on the page. A
`content` parameter picks either explicitly.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Preserve paragraph breaks after a ParaStyle tag starts the story so leading empty paragraphs and their styles survive Tagged Text import.
Validated individually and after #638 with all six cargo xtask ci gates (1,278 tests passed, four existing tests ignored, 15 WASM compilation checks), six independent paragraph/header/Unicode probes, and an actual export-to-placement command smoke test.
Refs #641