ghostPathFor function
The outline of entry's leaves in the symbol's local frame (the
definition's coordinates, base point not subtracted), built on the first
call and the same object on every later call for the same entry.
A line is a segment, a polyline its segments (closed when
isClosedPolyline), a circle addOval and an arc addArc with the
payload's start and sweep unchanged ([r, start, sweep]): the path's
angles are the engine's c + r·(cos θ, sin θ), and a matrix with a
y-flip or a mirror carries them as it carries every other point (F-14).
Points, texts and fills draw nothing.
Implementation
ui.Path ghostPathFor(SymbolEntry entry) =>
_ghostPaths[entry] ??= _buildGhostPath(entry);