images
    settings (sampler)

text
    figure out ways to speed up / what costs the most
    resizing (per frame) is really slow (assuming painter isn't griefing)
    bug where x offset doesn't shift texture correctly (eg typing a vs j)

masks r just made to bare minimum work

move span lengths to the children themselves

retained mode is broken
    problematic path:
        resize target gets set to something above an aligned
        aligned finds size 0 for example on og draw
        element gets size > 0 and redraws the resize target
        target doesn't change aligned region, so it gets skipped
        og gets redrawn, but aligned originally set region to 0 and didn't get updated
    so should probably just store direct parents and go up that way
        but need to be careful to not break the chain

scaling
    could be just a simple scaling factor that multiplies abs
    and need to ensure text uses raw abs and not scaled abs
    naming? (pt, px)
    want to keep (drawn) regions using px? or should I add another field to UiScalar/Vec
    field could be best solution so redrawing stuff isn't needed & you can specify both as user

WidgetRef<W> or smth instead of Id
    enum that's either an Id or an actual concrete instance of W
    painter takes them in instead of (or in addition to) id
    then type wrapper widgets to contain them
    allows for compile time optimization if a widget wrapper's inner is known at compile time
        and the id of inner is not needed anywhere
    maybe introduce InnerWidget trait to allow for editors to expose & modify inner type
    maybe could also store a parent widget and keep using InnerWidget trait? unsure if possible

really weird limitation:
    I don't think you can currently remove an element from a parent and put it in a child of the same parent
    because it removes the unused children after the entire parent redraw
    but the child gets drawn during that, so it will think the child is still active !!!
    or something like that idk, maybe I need a special enum for parent that includes a undecided state where it may or may not get redrawn by the parent
    or just do ref counting and ensure all drawn things == 1 afterwards (seems like best way)

consider unsafe cell for layer transmute stuff
    I don't think it's needed bc of usage but I don't know optimizations :skull:

tags
vecs for each widget type?
