fix(bake): store complex linestyle runs — the baker never wrote them#17
Merged
Conversation
The bake surface's vtable CLAIMED, in a comment, to store complex runs
un-tessellated so replay could re-walk the period at the display's scale:
// Bake path: store complex runs un-tessellated (no size_scale set — bake is
// native; replay re-walks the period display-scaled).
...but .store_complex_run was never set on the vtable. So
canStoreComplexRun() returned false, drawComplexLine tessellated the
period at bake time at size_scale = 1, and no tile ever carried an
ls_style — the replay path that re-walks them has been dead code.
The bricks then scale with the display at render time while their SPACING
stays frozen at 1x, so on a HiDPI display (size_scale ~3) the symbols swell
into each other and a caution/restricted boundary reads as a smashed-up
sawtooth instead of spaced marks.
Wire storeComplexRun on the bake surface, writing the clipped run with its
style id, phase (arc0), colour and width — exactly what replay.zig already
reads. A rebaked Boston cell now carries CTNARE51/ENTRES51/NAVARE51 runs,
and the brick count falls as size_scale rises (74 -> 40 -> 32), i.e. the
spacing finally scales with the bricks.
REQUIRES A REBAKE: the period lives in the tiles.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The bake surface's vtable CLAIMED, in a comment, to store complex runs un-tessellated so replay could re-walk the period at the display's scale:
...but .store_complex_run was never set on the vtable. So canStoreComplexRun() returned false, drawComplexLine tessellated the period at bake time at size_scale = 1, and no tile ever carried an ls_style — the replay path that re-walks them has been dead code.
The bricks then scale with the display at render time while their SPACING stays frozen at 1x, so on a HiDPI display (size_scale ~3) the symbols swell into each other and a caution/restricted boundary reads as a smashed-up sawtooth instead of spaced marks.
Wire storeComplexRun on the bake surface, writing the clipped run with its style id, phase (arc0), colour and width — exactly what replay.zig already reads. A rebaked Boston cell now carries CTNARE51/ENTRES51/NAVARE51 runs, and the brick count falls as size_scale rises (74 -> 40 -> 32), i.e. the spacing finally scales with the bricks.
REQUIRES A REBAKE: the period lives in the tiles.