reorg: be much more deliberate about mutable state

on.draw no longer mutates anything but the screen.

We now have levels of recomputation:

  • A: convert hierarchies of text (Page) into a flat array of shapes (Surface)
  • B: convert surface coordinates to viewport coordinates.
  • ..and lots of room to grow. Importantly, these levels are decoupled from on.* events.

The level at which we start using viewport settings (B) is also responsible for updating the default font, a global setting used all over the place inside the editor widget.

Hopefully we won't see bad box heights any more. We still have text rendering differently at different zoom levels, though.

Created by  Kartik K. Agaram  on December 23, 2022
4TL2FLYP36JS4K6QBXZBCFCTIBMIT7OAF7KMAAFGPAF5OWSP4QFAC
Change contents