mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-15 22:28:10 +08:00
The appearance cascade rides PaintReach beside the legacy paint push, with the opposite arbitration: a lane's own declared appearance wins wholesale and an undeclared lane inherits the nearest ancestor's, at any depth, crossing the group boundaries the paint push resets at. A fresh render entry starts bare, which is what clears the cascade for a pattern's own content. Both flatten paths push a parent's declared appearance into undeclared children without composing, pinned against each other by a shared test. The appearance and paint markers move to hand-written impls whose stored form is the bare value the appearance writers use, collapsing an absent and an empty cell to the same undeclared read at every seam. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>