vectorcraft/crates/eps/src
arhammusheer 0724aafbb6 #1172: share an object's appearance with its undo history until it changes
Every edit of an object copied its whole appearance (its fills, strokes and effects, about
540 bytes for a basic object) into the new node, though a move leaves it as it is. Over 45
whole-selection moves of 10,000 paths, undo history grew by 589 MB; now 349 MB (41 % less), and
a nudge or a drag of the selection takes 12 ms instead of 15.

- Node::appearance is a vectorcraft_doc::Shared<Appearance>: copy-on-write. A clone shares it,
  and the first change through DerefMut copies it (Arc::make_mut). Reads, writes, equality (also
  against a plain Appearance) and the saved form are those of the Appearance itself, so call
  sites read and change it as before. Sites that build or assign a whole appearance add .into(),
  and the few that need a plain copy take (*n.appearance).clone().
- Node::transform changes the appearance only when it has gradients to transform, and pattern
  paints are transformed only when there are some: a move no longer copies an appearance it
  doesn't change.

The workspace suite (5,301 tests) and clippy pass with the change; the doc and engine suites
pass again after the transform guard.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VmMmc1J8XeNLxhRihWv9cc
2026-10-11 23:27:21 +07:00
..
import #1172: share an object's appearance with its undo history until it changes 2026-10-11 23:27:21 +07:00
print M4.92: Print to a PostScript file 2026-10-05 17:01:36 +07:00
lib.rs Fix #735: Illustrator EPS and .ai files match their page in Fit to Artwork Bounds and the page check 2026-10-10 06:51:50 +07:00
ps.rs M4.67: TIFF export in RGB, CMYK or grayscale, with LZW, either byte order and the profile 2026-10-05 15:24:29 +07:00
scene.rs Placed documents: the object, drawn exactly and kept as art by every exporter 2026-10-08 12:20:51 -07:00
tests.rs M4.76: EPS export (PostScript Level 2 and 3) with EPS Options, TIFF previews and the document embedded 2026-10-05 13:50:50 +07:00
tiff.rs Fix #234: EPS files from the reference app open 2026-10-07 09:34:27 +07:00