mirror of
https://github.com/storytold/figcraft.git
synced 2026-10-29 04:46:50 -06:00
M4: shape builder tool (Shift+M): merge or remove the regions of overlapping shapes (#39)
The selected shapes' outlines split the canvas into regions, computed as the faces of their arrangement with linesweeper (curves kept, per-shape fill rules, holes and islands handled) and cached per document version and selection. - Engine: shapeBuilder.regions / merge / remove / mode commands, ToolId::ShapeBuilder and tool.shapeBuilder (catalog: Tools > Shape builder, Shift+M). Merge makes one vector from the picked regions styled like the top-most shape over the first; every shape covering a picked region loses that area (becomes a vector, or is deleted when nothing is left). One gesture or command is one undo step. Session::tool_key routes Enter (finish) and vector edit keys. - Pathops: faces() (arrangement faces with their covering inputs) and union_faces(). - UI: region edges on the canvas, hovered/collected regions hatched (danger colour to remove), no transform box while building, a toolbar pill with Merge/Remove modes, a hint and Done; shared pill/tool-cell/divider/Done helpers; original merge/remove icons drawn in code. - Tests: pathops faces; engine regions, merge, remove, curves, groups, rotation, pointer click/drag/Alt, modes, Escape/Enter, cache, junk parameters and degenerate geometry. - Docs: ROADMAP, README, docs/mcp.md, docs/control-protocol.md, docs/parity.md. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -77,7 +77,7 @@ A mouse gesture with the current tool. `kind`: `down`, `move`, `up`, `click`, `d
|
||||
|
||||
### `ui.key {key, shift?, alt?, cmd?, ctrl?}`
|
||||
|
||||
A key as if typed on the canvas (in vector edit mode the edit keys come first: `V` `P` `Q` `X` `Shift+B` tools, arrows nudge points, `Delete`/`Shift+Delete`, `Cmd+A`, `Cmd+J`): a menu shortcut (`{"key":"G","cmd":true}` groups), a tool key,
|
||||
A key as if typed on the canvas (in vector edit mode the edit keys come first: `V` `P` `Q` `X` `Shift+B` tools, arrows nudge points, `Delete`/`Shift+Delete`, `Cmd+A`, `Cmd+J`; with the shape builder, `Enter` finishes): a menu shortcut (`{"key":"G","cmd":true}` groups), a tool key,
|
||||
`Escape`, `Delete`/`Backspace`, `Enter`, arrows (nudge; shift = big nudge; auto layout children move one place along the flow; with `cmd` they resize the selection). While text is being
|
||||
edited, keys go to the text editor. Returns `{"command": id}` for shortcuts.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user