Animation data for widgets
A canvas is how a widget displays contents
you can create a mutable canvas with a certain size and position
relative to the parent, and then tell a widget to draw to that canvas
via a mutable reference
The context, this handles everything.
It handles drawing the frames, it stores the root
widget, it calls backend commands, etc…
Context configuration, this contains config options for different
things regarding the context
These are things that should be set and then never touched again.
These things relate to setting up and restoring the terminal environment.
Position in the terminal where (col: 0, row: 0) is the top left
Shader configuration
Size of an area in the terminal
Style for content that appears in the frame buffer
Terminal transform for an area
Widget data for internal use of the library
Widget information