mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-14 19:26:56 -04:00
Fix #511: Live Corners on any path's corners (stars, polygons, pen paths)
Corner widgets only ever showed on live rectangles: CornerWidgets::of bailed out unless the selection's live shape was LiveShape::Rectangle, and object.setLiveShape only edited rectangle radii. A star is a plain path, so it had no widgets with either selection tool. - geom::corners: the corners of any path (anchors without handles between two straight sides) and the path with them cut round, inverted round or chamfered, each corner a circle tangent to both sides, its radius no larger than takes the cut halfway along its shorter side. Rectangles now cut their corners with it (bit-identical anchors and layout). - doc::corners::LiveCorners/set_corners: one model for a live rectangle's, a live polygon's (new radii/kinds) and any other path's corners (new LiveShape::Path keeping the uncut outline, plain again once nothing is cut); radii scale with transforms (Scale Corners) and stay circular. - object.setLiveShape takes anchor indices for `corners` on any path; polygons keep a shared radius as their sides change. - Widgets: Direct Selection on any path, Selection on live rectangles and polygons; placed on each corner's bisector, the drag follows it, the red limit outline marks corners at their own limit; the angle preference and View > Hide Corner Widget apply. Corners dialog and the Properties and Transform panels' Corner Radius (now on polygons too) work on them. - Tests for the star, the polygon and a pen path in geom, doc, tools, engine and ui-egui; docs and ROADMAP. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
89ea46c805
commit
1d14f337db
24 files changed
+1281
-393
No files matched your search
@@ -291,9 +291,9 @@ Width Point Edit: double-clicking a width point with the Width tool, or `ui.widt
|
||||
value: true}` then confirm (the Delete button) removes the point with `stroke.widthPoint.remove`.
|
||||
|
||||
Corners: double-clicking a Live Corners widget with the Selection or Direct Selection tool, or `ui.corners {id?,
|
||||
corners?}`, opens the `corners` dialog for a live rectangle's corners (the Direct-Selected ones, else all four; fields
|
||||
`id`, `corners`: indices 0–3 clockwise from the top-left, `kind`: round, invertedRound or chamfer, `radius` in points;
|
||||
`kind` or `radius` is absent while the corners differ). `ui.dialog.confirm` runs `object.setLiveShape` with them.
|
||||
corners?}`, opens the `corners` dialog for a path's corners (the Direct-Selected ones, else every corner; fields `id`,
|
||||
`corners`: anchor indices of the path with its corners uncut, a rectangle's 0–3 clockwise from the top-left, `kind`:
|
||||
round, invertedRound or chamfer, `radius` in points; `kind` or `radius` is absent while the corners differ). `ui.dialog.confirm` runs `object.setLiveShape` with them.
|
||||
|
||||
Perspective plane options: double-clicking a plane widget of the perspective grid, or `ui.perspectivePlane {plane}`,
|
||||
opens the `perspectivePlane` dialog (fields `plane`: left, right or ground; `location`: points along the plane's
|
||||
|
||||
Reference in new issue
Block a user