vectorcraft/crates
dotCooCoo 9f0a9a362b Render: objects that share an appearance keep their own stroke outlines between frames
The renderer kept the outline of a stroke under the address of the
stroke in the object's appearance, the bits of the width and the
tolerance level, and used an entry only when the entry held the object
being drawn. The slices of a gradient along or across a stroke were
kept the same way. Objects can share one appearance until one of them
changes it. Copies made by Duplicate Selection share the original's
appearance, gradients included. For objects without a gradient fill or
stroke, so do the art the renderer places for unstained symbol
instances, the copies a live repeat draws and copies made by
edit.duplicate. In each frame, the objects that share an appearance
replaced each other's entries. The renderer therefore outlined their
strokes again in every frame.

The two caches now key each entry by the address of the object as
well, and each object keeps its own outlines from frame to frame. Art
that the renderer makes again in every frame keeps the old key: symbol
art that placed_art does not keep, and the evaluations of live objects
and the art of objects with effects that their caches do not keep. The
copies in such art replace each other's entries as before.

vectorcraft-cli bench of 2,000 unstained instances of a symbol of
eight paths took 45.7 ms a frame on main and 31.1 ms with this change,
at 2880x1800 on 8 threads, and a grid repeat of the same paths, which
draws 2,000 groups, took 45.0 ms on main and 27.2 ms with this change.
The peak working set of a bench run on the instances went from 88 MiB
to 122 MiB. In the tests, each frame draws what a new renderer draws.
2026-10-14 04:56:29 +07:00
..
affinity Fix #1710: ruzstd 0.9.1 (RUSTSEC-2026-0344) 2026-10-13 21:14:00 +03:00
brush #1172: share an object's appearance with its undo history until it changes 2026-10-11 23:27:21 +07:00
cad fix(cad): a closed control-point DXF SPLINE is read as closed (#1299) 2026-10-12 15:16:43 +07:00
color ICC profiles written here have their tags 4-byte aligned 2026-10-13 10:52:38 +07:00
doc Select Behind: one test of what may be hit for both walks, and random documents checked against the repeated hit test 2026-10-13 10:52:38 +07:00
effects Scribble: one zig-zag per region, no lines across holes and notches (#1648) 2026-10-14 02:09:09 +07:00
engine Add a Precise Cursors command and fix the misleading Caps Lock comment 2026-10-14 03:55:41 +07:00
eps EPS import: a stitched shading keeps its hard colour changes (#1653) 2026-10-14 02:09:09 +07:00
format Merge pull request #1783 from MarekSpodBiedry/issue-1698 2026-10-14 03:49:09 +07:00
geom PDF/EPS import: a clip only counts as covering the page when it does 2026-10-13 08:51:40 +07:00
mcp MCP: a connection holding bytes nobody asked for is replaced before the request is sent 2026-10-14 04:31:44 +07:00
metafile Check embedded PNG/JPEG bitmap size from the header before decoding (#1716) 2026-10-13 18:17:05 +02:00
pathops Fix #1462: Split Into Grid has its row and column sizes, gutters, totals, Add Guides and Preview 2026-10-13 02:48:36 +07:00
pdf Search each shared name tree node once when finding the editing file (#1702) 2026-10-13 18:22:14 +02:00
plugins Plug-ins: numeric defaults stay in their declared range 2026-10-13 02:21:35 +07:00
render Render: objects that share an appearance keep their own stroke outlines between frames 2026-10-14 04:56:29 +07:00
scriptcheck Scripts: Check Script… reports what a .jsx script needs and does, without running it 2026-10-13 13:36:41 +07:00
svg SVG import: an Inkscape page whose box can't be placed is skipped 2026-10-13 13:36:41 +07:00
testkit Fix #1387: a .ai whose PDF part is only text opens from it 2026-10-12 19:50:53 +07:00
text Type: stylistic sets, alternates, titling, figure styles, superscript and subscript 2026-10-13 13:36:40 +07:00
three-d 3D and Materials: Inflate takes Twist, Taper and Cap 2026-10-13 05:22:00 +07:00
tools Pen: Space pressed inside the drag threshold moves the anchor by the next move only 2026-10-14 03:55:41 +07:00
trace Image Trace: Flat Logo takes the tones of an unevenly lit colour for one colour 2026-10-13 13:01:01 +07:00
ui-egui Add a Precise Cursors command and fix the misleading Caps Lock comment 2026-10-14 03:55:41 +07:00