mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-10 18:10:01 -06:00
Selection: a click on a large compound path is culled by its control points
Every click and hover measured each path and compound path along its curves to cull it (Node::reach_bounds_with), and a compound path was then assembled whole to test its outline and fill. For a compound path of thousands of members that took milliseconds per click. Hit testing now culls paths and compound paths by the box of their control points (which holds the curves), grown by their strokes' reach, so the box is never smaller than the reach box it replaces. A compound path's outline and fill are tested against only the members whose control box, grown by the tolerance, holds the point: a member outside that box is farther than the tolerance and winds zero times round the point. Painted strokes still follow the whole compound path (alignment, dashes, width profiles) and are measured along all of it, as before. Tests (crates/doc/src/hit/tests.rs): - a 2,000-member compound path hits exactly as the whole-path test did, at random points, on and next to anchors and on the edges of the members' boxes, for both fill rules, in Outline view and with Object Selection by Path Only; - wide strokes painting past the control points are still hit, for a path and a compound path; - the cull box holds the reach box for paths and compound paths. Measured in a debug test build (one run, machine not idle): a click on a 20,000-member compound path went from about 18 ms to about 1 ms. vectorcraft-cli perf was not rerun.
This commit is contained in:
+9
-1
@@ -1,6 +1,6 @@
|
||||
# Gaps
|
||||
|
||||
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-11-03 · **Change:** minor (font-family fields accept the mouse wheel, #5253; scores and estimates unchanged) · **Target:** Adobe Illustrator 2026 (30.x; G12: Units › East Asian Type acts, with Q and Ha units; estimate unchanged) · **Target:** Adobe Illustrator 2026 (30.x)
|
||||
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-11-03 · **Change:** minor (G15: clicks on paths and compound paths are culled by their control points; estimate unchanged) · **Target:** Adobe Illustrator 2026 (30.x)
|
||||
|
||||
## Feature submission evidence
|
||||
|
||||
@@ -619,6 +619,13 @@ from G14 and the budget run of G15: **~170–270 h** one agent, ~50–80 h wall
|
||||
|
||||
## G15 Performance budgets and a GPU renderer
|
||||
|
||||
- **Improved (2026-11-02):** a click or hover culls paths and compound paths by the box of their control points
|
||||
(grown by their strokes' reach) instead of measuring along their curves, and tests a compound path's outline and
|
||||
fill against only the members whose control box, grown by the tolerance, holds the point; painted strokes are
|
||||
still measured along the whole compound path. The same objects are hit (`crates/doc/src/hit/tests.rs`: a
|
||||
2,000-member compound path against the whole-path test for both fill rules, Outline view and Object Selection by
|
||||
Path Only; wide strokes past the control points). A 20,000-member compound path went from about 18 ms to about
|
||||
1 ms a click in a debug test build (one run, not idle); `vectorcraft-cli perf` not rerun.
|
||||
- **Improved (#1257):** Craquelure, Mosaic Tiles and Stained Glass reuse squared distances during nearest-cell searches, with the original distance ordering retained near rounding/tie boundaries. A brute-force boundary regression and full-viewport pixel comparisons agree with the old result. `texture_drag_perf` reproduces a moved CMYK rounded rectangle at 190.07% and DPI 1.5; timings from a busy development machine are supporting evidence, with idle Windows drag QA still pending.
|
||||
- **Missing:** an idle-machine run of `vectorcraft-cli perf` at 50k paths (2026-10-11 at 25k paths, every budget
|
||||
met, 400% zoom 12.3 ms against 16 ms, measured; runs of 0.10.0 on Linux with 4 logical CPUs, reported in #1172
|
||||
@@ -717,6 +724,7 @@ trap, and the defaults (0.25 pt, 100%, 40%) are VectorCraft's own, the pages giv
|
||||
|
||||
| Date | Change | Summary |
|
||||
|---|---|---|
|
||||
| 2026-11-02 | minor | G15: hit testing culls paths and compound paths by their control points' box and tests a compound path's outline and fill against only its members near the click; the same objects are hit. Estimate unchanged. |
|
||||
| 2026-11-03 | minor | Symbol editing shows draggable 9-slice guides within the artwork (#5280). Guides outside the artwork remain unsupported. The G5 estimate remains 14–24 h. |
|
||||
| 2026-10-31 | minor | G12: Units › East Asian Type acts (#394): Q and Ha (a quarter of a millimetre each) are units that preference offers; 4 Preferences options remain stored but not acted on. Estimate unchanged. |
|
||||
| 2026-11-01 | minor | G5: dynamic symbols (#4938): Symbol Options › Symbol Type, per-instance fill, stroke, opacity and blend for objects of a dynamic symbol's art that stay linked (redefining keeps them, Break Link bakes them, Reset and Static drop them; `symbol.instance.setAppearance`, `symbol.instance.reset`; `crates/engine/src/tests/dynamic_symbols.rs`); on-canvas Direct Selection of the parts and `.ai` round trip remain. Estimate 15–26 → 14–24 h. |
|
||||
|
||||
Reference in New Issue
Block a user