# TODOs, semi-random sorting [x] Implement glyph draw command [x] Implement div.view and scrollbars [x] Port font system from C to C3 (rewrite1) [ ] Update ARCHITECTURE.md [ ] Write a README.md [ ] Use an arena allocator for cache [ ] Do not redraw if there was no update (no layout and no draw) [ ] Do command buffer damage tracking based on a context grid (see rxi writeup) [x] Better handling of the active and focused widgets, try to maintain focus until mouse release (fix scroll bars) [x] Clip element bounds to parent div, specifically text [ ] Resizeable divs [ ] Implement a z index and sort command buffer based on that [ ] Standardize element handling, for example all buttons do almost the same thing, so write a lot of boiler plate and reuse it [x] The id combination in gen_id() uses an intger division, which is costly, use another combination function that is non-linear and doesn't use division [ ] Animations, somehow [ ] Maybe cache codepoint converted strings [x] Fix scroll wheel when div is scrolled ## Layout [ ] Text reflow [x] Flexbox [ ] Center elements to the row/column ## Input [x] Keyboard input [x] Mouse scroll wheel [ ] Touch input [x] Do not set input event to true if the movement was zero (like no mouse movement) [ ] Use input event flags, for example to consume the input event ## Commands [x] rect commads should have: _ border width _ border radius [x] add a command to update an atlas [ ] New window command, useful for popups ## Atlases [ ] Add an interface to create, destroy, update and get atlases based on their ids [ ] Implement multiple font atlases ## Fonts [x] Fix the missing alpha channel [x] Fix the alignment ## Raylib [x] Implement type (Rect, Color, Point) conversion functions between rl:: and ugui:: [x] Implement pixel radius rounding for border radius ## Widgets [x] Dynamic text box to implement an fps counter [x] Button with label [ ] Text Input box [ ] Icon Buttons [ ] Switch