- Platorm replay improvements - Forward/Backward 1 frame - Multiple slots - Save/Load replay to/from file - Select a starting state - Overwrite a recording buffer partially. - Idea: Always load/to Save.Buffer so that we have enough space to eventually get it out. - We could use an arena for permanent memory so that the platform knows exactly how much memory to write to disk to speed up load/save times. But in the end we might end up being using all that memory or more so does it really matter? - PlatformLog & AppLog which have FrameIdx attached. - Cycle panels - Fat panel struct instead of text panel nodes. - Popup window / Prompt / Command palette - Common UI button behavior - only "clicked" when button was pressed mouse goes up inside of it - albedo sample - Speed up atlas creation. - Glyph cache for faster atlas creating - text: Undo/Redo - text: Have text be clipped at pixel level and not rectangle level - Display images through shader - Sound - when hovering over an item - when clicking - ui: Assert when adding the same box twice. - panels: Go for megastruct instead, panel has kind (e.g., text) - cling: On windows get cling to run ./cling_temp.exe even when "norebuild" since that will be the most up-to-date version of the program. - Marker in arena's to not have to clear to 0 from freshly allocated pages. - platform: linux: release clipboard when exiting - text: when selecting with mouse, do not scroll - text: When selecting to the side of the text do select as well. - text: Virtual whitespace - text: Improve text rendering - Check text rendering extensively (xoff & leftsidebearing) - text: Unicode - kb_text_shape() - harfbuzz - implement all movements taking unicode into account - text: Non contiguous selection (e.g., with control) - make initialization with permanentarena homogenous ? Poisoning should take care of everything, do the rest manually, since we are using arena's it's not that much work - We should only be pushing once on PermanentArena. And be able to push onto PermanentArena when !Memory->Initialized - platform: keyboard input (pressing & holding, vs text) - easier query of keys & modifiers. - to have key binds. (WasPressed(Control, 'c') - platform: linux: investigate startup time. - choosing visual config ~40ms - atlas = 90ms - platform: window resizing - platform: sleep when idle - platform: custom borders and titlebar - unified logs - with date, system, level and stacktraces - Cmdline hash table - ui: Implement properties from https://www.dgtlgrove.com/p/ui-part-3-the-widget-building-language - ui: inset elements - ui: panels - rotate columns - tabs - ui: windows - tick() function? - win32: repaint and resizing. - 24:36 - shader: - group draw calls with those that need the same texture and those that don't without changing draw order (because foreground&background) - find a way to push a texture for a number of rectangles - then pop when not adding characters anymore # Archived x Ryan's layout algorithm x Specify axis x Draw background + border + gradient x ui_comm from UI_AddBox() x draw text from same shader x center text vertically & horizontally x specify vertical & horizontal padding for text, or maybe don't x Assert that rect instances does not exceed the max instances allowed.\ x Use DrawRect() in DrawRectChar() x Remove ReadOnlyMemoryBlock x Stacks for selecting options like ryan x make hot reloading shader optional x Spacer x Proper hashing of string and splitting up into DisplayString x Solving violations x win32: flickering x panels: x draggable array to change PercentOfParent x create/split new panel x close panel button x proper mouse dragging x clipping x after splitting multiply all old panes on same axis by (1 - 1/n) and give the new pane size 1/n x Evict boxes from cache when they aren't touched anymore x prune stale elements from cache on the end of UI_ResolveLayout() x Add back text rendering of the input buffer x profile compile times on linux - standard libraries (linux et al): 100ms, math.h: 100ms, gl_core: 50ms x Fix UI layouting not working for nested elements x Metaprogramming: x flag enums x shaders platform: x loop editing x profiler: toggle key bind x save/load state to disk windows: x editor_libs.o in .bat script x rename to editor.exe app: x ui bug when using PercentOfParent, can overflow with rounding error. (tested with .25f) -> wasn't a rounding error. x Custom draw command for rendering text edit view. x replace X macros x Eat up input events, because resizing a pane shouldn't be clicking buttons or selecting text. x concept of "selected" to receive key inputs. x Implement dragging in the platform layer x prune boxes correctly after closing panel x panels: resizing x panels: selected panel so that input events only go to one panel x panels: close panel button x panels: better positioned resize border x text: Scrolling text x text: Movements x text: Deletions x text: Selections x text: Clipboard x platform: clipboard: use bool instead of second buffer `PlatftormSetClipboard` x text: multiple buffers x Smooth smooth animations x replay: Separate renderer such that we can also render some debug UI from the platform. (Overlay debug info)