Skip to content

Part of #885: the Transform effect's dialog takes Transform Each's controls - #920

Merged
bflatastic merged 1 commit into
mainfrom
feat/885-transform-effect-dialog
Oct 10, 2026
Merged

bflatastic merged 1 commit into
mainfrom
feat/885-transform-effect-dialog

Conversation

@bflatastic

Copy link
Copy Markdown
Member

Part of #885.

Effect › Distort & Transform › Transform… was a plain list of fields. It now has Object › Transform › Transform Each's layout, kept with the effect so editing it from the Appearance panel shows the same values:

  • Scale and Move with sliders beside their fields (the fields take values past the rails), Rotate with an angle dial (drag to point it, Shift for 45° steps).
  • Options: Copies, Reflect X, Reflect Y, the 9-point reference point and Random.
  • The effect itself: it scales, rotates and reflects about the chosen reference point (reference, 0–8, the centre by default). Random applies a share of each value, drawn from the object's id: each object varies its own way and keeps its result on every redraw, and a group's members move together. Copies stop before one reaches past 1e9 pt and scale and move are capped, so huge values can't overflow.
  • Transform Each and the effect share one implementation of the sections and options; the angle dial is a new widget.
  • A plain number field now takes the keyboard focus when it's a dialog's first field, so both dialogs open with Scale › Horizontal selected for typing (Transform Each used to open on Move › Horizontal).
  • MCP/control: effect.dialog {effect: "distort.transform"} takes reference and random; the effect catalogue documents them. docs/control-protocol.md and ROADMAP updated.

Still missing, and listed in the ROADMAP: the Transform Objects, Transform Patterns and Scale Strokes & Effects options, because geometry effects only reshape paths so far.

Tested:

  • cargo xtask ci (all 7 steps); all 863 ui-egui tests.
  • New tests: the reference point (scale, rotate, reflect about corners and edges), Random's stability and range, copies stopping before overflow, a random Transform on a group moving its members together, the dialog's controls, preview and reopening from the Appearance panel, and typing straight into Scale › Horizontal in Transform Each and the effect.
  • Live: Transform with 3 copies, 40 pt move, 15° rotation about the bottom-left point previews as expected on the canvas, with the new controls laid out as above.

🤖 Generated with Claude Code

…ntrols

Effect › Distort & Transform › Transform… was a plain list of fields.
It now has Transform Each's layout: Scale and Move with sliders, Rotate
with an angle dial, then Copies, Reflect X and Y, the reference point and
Random, kept with the effect so editing it from the Appearance panel
shows them again.

- The effect scales, rotates and reflects about the chosen point of the
  9-point grid (`reference`, the centre by default).
- Random takes a share of each value, drawn from the object's id: each
  object varies its own way and keeps its result on every redraw; a
  group's members move together.
- Copies stop before one reaches past 1e9 pt, and the scale and move are
  capped, so large values can't overflow.
- Transform Each and the effect share the sections and options code; the
  angle dial is a new widget.
- A plain number field now takes the focus when it is a dialog's first
  field, so both dialogs open with Scale › Horizontal ready for typing.

Transform Objects, Transform Patterns and Scale Strokes & Effects are not
in the effect yet: the geometry effects reshape paths only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bflatastic
bflatastic merged commit dd61dfa into main Oct 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant