Commit Graph

282 Commits

Author SHA1 Message Date
Ed_
93368a40ff Changed new shapers' namespace to just ve 2024-06-06 16:19:53 -04:00
Ed_
4a931dcbe5 Setup shaders for text rendering based on VEFontCache samples 2024-06-06 16:15:57 -04:00
Ed_
a81019d2a5 Decided against the mapping of parser and shaper infos
Parser and shaper should just be intrusive to w/e uses them adding a map directions slows things down for no reason..
2024-06-06 10:19:20 -04:00
Ed_
71e8fadcab VEFontCache: Initial hookup to sectr module & runtime bugfixes 2024-06-06 01:07:23 -04:00
Ed_
38be79d7a9 VEFontCache: runtime bugfixes 2024-06-06 00:43:18 -04:00
Ed_
566a90001b Finished draft porting pass for VE Font Cache (next is hook to sokol_gfx + runtime testing) 2024-06-05 19:52:25 -04:00
Ed_
d469fd53e8 progress on VEFontCache port 2024-06-05 13:27:34 -04:00
Ed_
991e7a81c0 Progress on VEFontCache port, only cache_glyph_to_atlas & shape_text_uncached left 2024-06-04 18:44:12 -04:00
Ed_
26e53bf327 VEFC: ported decide_codepoint_region 2024-06-04 13:30:30 -04:00
Ed_
38ebed8874 VEFC: Added bad edge case to handle parsing conic curves, progess on cache_glyph 2024-06-03 21:08:12 -04:00
Ed_
c182ab7173 An attempt at doing a freetype outline to the stbtt shape verts 2024-06-03 19:37:09 -04:00
Ed_
1741532d64 Progress on VEFontCache port, working on freetype outline to stbtt shape 2024-06-03 17:43:15 -04:00
Ed_
26ad2d1e49 VEFontCache : Finished porting the LRU 2024-06-03 01:04:24 -04:00
Ed_
f99157aae5 Starting the process of porting VEFontCache 2024-06-02 17:29:44 -04:00
Ed_
33ddd420b7 Progress on porting fontstash 2024-06-02 17:29:27 -04:00
Ed_
9ba718254c lifted the hash maps and the string cache to the grime package 2024-05-31 20:51:30 -04:00
Ed_
e84ec719b3 Progress on lifting the 'grime' module to its own package 2024-05-31 19:31:27 -04:00
Ed_
d63242ac9c Some progress on fontstash 2024-05-31 19:31:08 -04:00
Ed_
f415eada0d Doing some heavy refactors on the container interfaces
Trying to set up their use to be more ideomatic to the core containers
2024-05-31 17:58:18 -04:00
Ed_
3db403017e Lifted fontstash to its own package, made packages for RFont and VEFontCache
Going to do fonstash first then rfont ports.

After will complete the VEFontCache port
2024-05-31 13:04:52 -04:00
Ed_
300727198b made empty files for the projection parsers
Planning to isolate the implementation into a separate package

Eventually the UI and Font handling will also be.
2024-05-31 11:28:24 -04:00
Ed_
3998776f4b Beginning to lift the "grime" files to their own pacakge 2024-05-31 11:26:52 -04:00
Ed_
0b74a8115e Minor cleanup to current bad impl of font rendering
Just trying to really "get" sokol_gfx.h
2024-05-31 11:25:27 -04:00
Ed_
64e56485fa remove .bkup of the learngl shader as its no longer needed 2024-05-30 13:18:28 -04:00
Ed_
936c0100ba Got text rendering to work with sokol_gfx (learngl text rendering article #1)
Need to todo the altas article next then the optimizing vod
2024-05-30 13:06:51 -04:00
Ed_
c681370d8b Just restore some code that I deleted from the raylib font provider file. 2024-05-26 13:58:55 -04:00
Ed_
5c2f55148a zpl_hmap prefix to hmap_zpl, plus some todos to go back to builtin containers 2024-05-26 13:35:08 -04:00
Ed_
469fa5f8ec Fixed hot-reload for sokol 2024-05-26 13:33:54 -04:00
Ed_
bb06d3b44e Don't poll input (we need to gut raylib's and switch over to sokol) 2024-05-26 12:24:11 -04:00
Ed_
0d2c5e478b Don't reload font_provider_data's cache (since we don't have that swapped yet) 2024-05-26 12:23:50 -04:00
Ed_
797ab227e9 Gut raylib usage from the codebase.
Going to either fully commit to sokol or if it fails, rolling the platform layer myself.
2024-05-25 11:52:23 -04:00
Ed_
13c3032dba Initial setup of sokol_gfx to replace the raylib impl for rendering.
Next I need to setup sokol_gp
2024-05-24 16:31:22 -04:00
Ed_
cf81d3f9bd Renamed str_fmt_alloc to str_fmt, str_fmt to str_fmt_out, allocator convention enforcement in context
I'm enforcing aprintf it as the default formatter.
I changed up the context allocator assignment to reflect how I've been intending to allocation in startup & platform events vs tick.
Tick uses the frame slab's by default with transient on temp. Startup & platform events use the transient by default & for temp, with any use of the persistent allocator being explicit.
2024-05-22 17:13:56 -04:00
Ed_
368abefccf Restored some of the window awareness previously avail in raylib for the new sokol layer.
Switched frametime_delta32 to frametime_avg_ms.

I'll problably rename it and keept delta32 for actual delta. Reading over the sokol_app code I noticed it uses the avg frametime and definitely want to do that for spike alleviation...
2024-05-22 15:39:19 -04:00
Ed_
8130faa6ad got the sokol_app library starting up and ticking!
Now I just need to get the events and rendering and fonts and... all hooked up
2024-05-22 03:44:14 -04:00
Ed_
9cd0692e56 Got it to compile with sokol changes (UNTESTED) 2024-05-22 03:28:22 -04:00
Ed_
405716e52b Mostly reviewing progress so far
Prepping in the background for swapping raylib with sokol.
2024-05-21 23:35:36 -04:00
Ed_
31bc207c75 Fixed the layout boxes & resize handles anchors & alignemnts 2024-05-21 11:50:53 -04:00
Ed_
17859a5eb9 Hopefully last design change to auto-layout algorithim
I'm sticking with not supporting the top-left alignment for default and instead going with bottom left.
This allows for 0,0 alignment to the "bottom left pivot" for a box and 1,1 to the "top-right pivot" of a box.
These naturally coincide with where the actual min-max points that define the box are for the coodrindate convention I decided to go with. I'll write docs to migitate confusion.

Now I just need to fix the layout presets I have for the currently existing constructions...
2024-05-21 11:06:51 -04:00
Ed_
e5be246d30 Cleanup and setup of drop down widget
Got an initial variant of the drop down widget, not completely set on it..
I put some more time to figuring out how I'm going to be ideomatically constructing the widgets. screen.odin I think its getting pretty close to what it will be like.
I'm ready to start lifting the input box. I'll be adding the constraints when I lift it.

Added the option to toggle the debug text in screenspace
Added the fixes from the ui_layout_children_horizontally for margins to ui_layout_children_vertically

Known issue:
There is a bug with test_whitespace that forced me todo a null check on a box. Not sure why.
It needs to be redone anyway.. (compose it with the h/vboxes instead)

There is some sublime files added in, started to use it.
2024-05-20 22:05:52 -04:00
Ed_
cdfc3d65bb Added sokol library to thirdparty
Going to get sokol_gp soonish
Need to look into figuring out text rendering...

I'm preemtively getting this stuff now but I problably won't be swapping raylib impl anytime soon.
2024-05-19 14:04:54 -04:00
Ed_
275ffcf143 Got the first 'input box' to work. Did some changes to keyboard input
Renamed KeyboardKey to KeyCode, redid the encoding layout (preemtively getting ready for SDL later as well)

I got the input box working but it has no constraints and needs to be lifted. The scroll box construction does as well.
2024-05-19 11:06:09 -04:00
Ed_
b137bc542c WIP: Stuff related to working on the settings menu + more
Moved core ui to its own folder.
Worked on theming (proper light and dark theme)
Began to work on the scroll box widget and input box constructions

I added back a script for flattening the codebase: gen_flattened_codebase.ps1
2024-05-19 01:21:51 -04:00
Ed_
ddff1fcae6 typos and buildscript fixes & additions 2024-05-16 18:16:14 -04:00
Ed_
b30f3c3466 Restructured the codebase yet again but this time with compiler support for monlithic packages
So no need to stage generate symbolic links in a flat directory for the compiler
2024-05-16 17:27:48 -04:00
Ed_
40ffed9538 Changed codebase to be foldered (breaking compiler's conventions)
I now generate the layout the compiler wants, eventually I'll just have a custom policy so that the compiler can accept the non-idiomatic layout

See scripts/build.ps1 & gen_staged_compiler_codebase.ps1 for how this is handled.
2024-05-16 13:18:27 -04:00
Ed_
5ceef39410 Some general refactors and compaction
Made a distinction from the "core" ui vs the rest of the ui that composes from there.
2024-05-16 11:21:07 -04:00
Ed_
7250456db5 Got centered resize working for the handles
Impl feels jank... but thats what I get for supporting two origins for the auto-layout
2024-05-16 02:14:54 -04:00
Ed_
85cf9d8db2 More progress on themes + workspace resize handles support
Still need to add support for centered resize of boxes with the handles. (Will need a different alignment configuration)

Theme manipulation is getting cleaned up iteratively code is slowly looking less nosiy
2024-05-15 18:48:20 -04:00
Ed_
48ee98f22d detached head bullshit 2024-05-15 03:44:18 -04:00
Ed_
af757cfdaa Began working on a proper default theme
Going with dark mode at first,
I'll also be making a lightmode, but I want to have a post-processing shader for tonemapping the app screen's tone by the user before doing so.
2024-05-15 03:37:00 -04:00
Ed_
fd2552a82f improve layout visibile lag to none for vbox & hbox on the settings menu 2024-05-14 21:54:12 -04:00
Ed_
a29632daea Fix for DLL_NodeFL 2024-05-14 14:50:38 -04:00
Ed_
70b13ce107 fixes for hmap_chained_init and other stuff 2024-05-14 14:07:29 -04:00
Ed_
26771ff2fd made a new hashtable container: HMapChained
Will be used isntead of the zpl in some places
2024-05-14 11:47:44 -04:00
Ed_
12c99bee26 Mostly cleanup
Text is athe biggest bottleneck right now. Raylib as a renderer fails for this prototype in that front.

I'll eventually need to look into other solutions such as SDL2 + something that renders UI boxes & text very fast...
2024-05-13 21:53:08 -04:00
Ed_
adc75f6977 Got support for persistent ordering of UI_Boxes using UI_FloatingManager 2024-05-13 16:07:49 -04:00
Ed_
0744069b0d pushing what I have rn, decided not to go this route
Instead going with ![img](https://i.imgur.com/S3tjZUu.png)
2024-05-13 10:40:29 -04:00
Ed_
e8c3312b69 more progress... 2024-05-13 01:56:39 -04:00
Ed_
595de438af WIP: Persistent order support for rooted boxes (top-most boxes)
I wasn't expecting it to be this to bad to support it...

Also:
* I renamed some of the files to group better with the virtual codebase view
2024-05-13 01:53:19 -04:00
Ed_
1b32fe916e Large refactor of the entire codebase
Saw that layout really should be separated from the style struct, so went ahead and pulled the trigger...
A bunch of other refactors have also been done

* Lifted layout out of style, its not separate in UI_Box and in UI_State there is not a UI_LayoutCombo stack.
* UI_StyleTheme renamed to UI_StyleCombo
* UI_Theme has both UI_StyleCombo & UI_LayoutCombo
* Made files for the "project" related code
* ui_layout_compute moved to its own file, ui_layout now used for layout related data structures and interfacing
* Impovements to horizontal & vertical box impl
* UI_Box now keeps track of how many ancestors it has
2024-05-11 22:38:05 -04:00
Ed_
6a4f7ac6de minor changes, prepping for next tasks 2024-05-11 01:30:54 -04:00
Ed_
e40e3ddf85 small refactors for organization 2024-05-10 19:50:37 -04:00
Ed_
2b1565e35b AppUI lifted to its own file, Got horizontal and vertical boxes working 2024-05-10 19:20:50 -04:00
Ed_
5b24e591eb Fixed issue with ui_signal_from_box
Biggest win was getting the intial fixes for overlapping boxes.
Eventually I'll need to add support for sorting actives of top-most ancestors
(pretty much just remove from linked list and add to last position (adjust indices of adjacent and new top most, etc)
2024-05-10 04:16:04 -04:00
Ed_
1afe74b4b5 Some cleanup, resize handles lifted to ui_resizeable_handles
Fixed some bugs with the handles as well. Old cruft for resizing was removed.
2024-05-10 02:08:36 -04:00
Ed_
a2b6325b5b coordinate space math fixes, got resize handles working in settings menu prototype
will eventually lift to its own generic widget

I still need to implement the corner resize..
2024-05-09 04:02:33 -04:00
Ed_
b8e8e7c88a Progress on setting up app's UI and horizontal/vertical box widgets 2024-05-08 02:26:39 -04:00
Ed_
e282397bf0 Nvm, took me way to long to realize the string cache needs a different hastable
This hashtable is not tolerant over going 'over capacity'. I have to eventually swap to another solution similar to Ryans linear probing for string caching.
For now I'll just abuse ram with an oversized table.
2024-05-07 01:34:43 -04:00
Ed_
3336ab2e1c Its the pool free lists... 2024-05-07 01:16:02 -04:00
Ed_
059a63ccbb Fixed issues with logging on the memory tracker 2024-05-07 01:12:02 -04:00
Ed_
1e6e9581c3 Bug fixes to allocators and containers
Still haven't found the main bug with resizing zpl_hashmap on string interning
2024-05-06 23:29:47 -04:00
Ed_
0e27635a9b Updates to readme 2024-05-04 12:59:08 -04:00
Ed_
046d79c9bd Attempt to add example vod 2024-05-04 12:10:30 -04:00
Ed_
f27a69de9a Get the project to compile once again. 2024-05-04 11:47:21 -04:00
Ed_
4492ca3079 Corrections to ols config, moved ols out of repo
ols is now assumed to exist installed by the user
2024-05-04 08:26:52 -04:00
Ed_
7162c5a14d last state of the prototype.
* Still has memory issue
* Was last using it to learn some PGA from Lengyel's books
2024-04-08 01:35:53 -04:00
Ed_
e3ff1ce70f Finally fixed memory allocations for slabs/pools/virtual arenas 2024-03-20 22:34:18 -04:00
Ed_
714d60ee34 Trying to figure out this bug with pools... 2024-03-20 13:34:47 -04:00
Ed_
fb1a6063a7 fixed hot reload
there is still memory issues T-T
2024-03-20 01:23:50 -04:00
Ed_
2d5e308046 misc changes, hot reload is broken 2024-03-20 00:44:43 -04:00
Ed_
737e8596f3 Fixed a dumb memory bug with arrays 2024-03-19 23:25:48 -04:00
Ed_
bf211a8e14 Fixed bad resize_non_zeroed impl (cannot use default_resize_bytes_align_non_zeroed, its not a resize) 2024-03-19 12:18:39 -04:00
Ed_
d29a1e20e7 very minor tidying 2024-03-19 08:36:58 -04:00
Ed_
8a40b1462b Setup a 3d viewport for some extra stuff.
Want to mess aroudn with my math notes possibly in this prototype...
2024-03-18 11:44:58 -04:00
Ed_
b0b8f3d595 latest (doing some ark vcs stuff) 2024-03-17 15:30:30 -04:00
Ed_
49a4e117a2 Got "Line LODs" working for the whitespace AST test, first step toward hboxes
Yet another issue with memory persists (seems to be related to slab free)
2024-03-15 00:02:28 -04:00
Ed_
ee8b68ac3e Fixed text auto-layout 2024-03-14 10:11:04 -04:00
Ed_
cf7660e385 first 'full' layout draft impl done.
found a memory bug...
2024-03-14 02:02:09 -04:00
Ed_
180c296556 Updates and fixes to memory 2024-03-14 00:00:44 -04:00
Ed_
0627794e28 saving a mess of stuff with auto-layout before updating with new mess 2024-03-14 00:00:22 -04:00
Ed_
159aedb592 Memory fixes, progress towards anchors support in the UI auto-layout
Also support for margins
2024-03-12 20:55:29 -04:00
Ed_
b4c6fd1866 More fixes & performance improvements
Still havent figured out the realloc issue with virtual arenas... But the fixes the slab perforamnce mitigate it at least.
2024-03-12 02:32:16 -04:00
Ed_
8b8c4948ad Added screeenspace culling for ui boxes 2024-03-11 02:05:30 -04:00
Ed_
1656dffb67 Setup spall profiling, did first optimizations! 2024-03-11 02:05:18 -04:00
Ed_
304e710c16 It works but there is a memory issue... (parsing in tick update) 2024-03-10 20:09:04 -04:00
Ed_
c80254adbc Got whitespace parser working + widget generation for basic case! 2024-03-10 10:31:21 -04:00
Ed_
197dd82e78 update odin repo 2024-03-09 14:53:51 -05:00
Ed_
7b69723f35 Made the ui_resize_border_width percent based instead of pixel based. 2024-03-09 14:24:02 -05:00
Ed_
4a53a158e0 Lefted text box test to its own widget proc, fixed overlapping widget interaction! 2024-03-09 13:55:47 -05:00
Ed_
635ce91a9d First text box!!! 2024-03-09 10:21:48 -05:00
Ed_
f1edf1c43e Added basic string interning 2024-03-08 23:20:49 -05:00
Ed_
c395cbaeb6 Some cleanup
need todo string interning next....
2024-03-08 19:51:46 -05:00
Ed_
cb58f4faef Improvements to UI signal 2024-03-08 18:45:27 -05:00
Ed_
4b026c379a Started to do manual control of the frame timing (no longer using raylib) 2024-03-08 18:45:08 -05:00
Ed_
191d5076ea Dragging! & basic proportional box resize frm cursor distance to box pos
Still need to add resize via 'pulling' to stretch the box out from a side or 2 sides diagonally.

Also some general clenaup of code
2024-03-08 03:34:21 -05:00
Ed_
a5208f2be2 Slab allocator works! 2024-03-07 19:15:54 -05:00
Ed_
aa47f0ead0 Slab allocator compiler bug fixes 2024-03-07 18:29:49 -05:00
Ed_
f17aead3ea Comment cleanup 2024-03-07 17:58:28 -05:00
Ed_
568e8043bb removing no longer used code from env 2024-03-07 17:57:58 -05:00
Ed_
06a040d056 Removing commetns from grime 2024-03-07 17:57:36 -05:00
Ed_
0afb4c3197 rename parser_code to parser_code_agnostic 2024-03-07 17:57:10 -05:00
Ed_
f2237e7211 Started to overhaul memory setup + runtime fixes 2024-03-07 15:57:17 -05:00
Ed_
6836459a1d Completed first draft of slab allocator 2024-03-07 03:10:21 -05:00
Ed_
d63c58008e Completed first draft iteration of grime_pool_allocator 2024-03-06 22:41:36 -05:00
Ed_
c71ed67d6a minor fromatting changes 2024-03-06 22:41:17 -05:00
Ed_
1f2f0c66d8 Added impl for singly-linked lists 2024-03-06 22:41:01 -05:00
Ed_
6e52a79ca2 Compile fix for grime_arena 2024-03-06 22:40:45 -05:00
Ed_
d92e4e1c7c Rolled my own virtual arena allocator
Much more straight forward and setup for my specific use case
2024-03-06 16:47:40 -05:00
Ed_
8eef63e84f Minor unicode file changes 2024-03-06 16:47:00 -05:00
Ed_
64229e6ca5 Updates to zpl hash map description 2024-03-06 16:46:33 -05:00
Ed_
9229358a16 Updates to general memory defs 2024-03-06 16:46:23 -05:00
Ed_
aa9ce39224 Typo in grime_stack file 2024-03-06 16:45:50 -05:00
Ed_
3ab6bb8616 Rolled my own virtual memory baseline interface
Mostly use the core library's functionality but wanted a nicer wrap for my use case
2024-03-06 16:45:12 -05:00
Ed_
0656a41cf7 Move context_ext to its own file
Will be adding context related features here in the future
2024-03-06 16:44:38 -05:00
Ed_
59ad47162d Update font_provider with raylib changes 2024-03-06 16:44:01 -05:00
Ed_
3c8abc5333 Start to setup the other allocators I'm going to roll my own of, also created a string interning file 2024-03-05 10:41:42 -05:00
Ed_
898f359470 Removed box serialial unmarshaling def 2024-03-05 10:41:11 -05:00
Ed_
eb66f5c70d Beginning setup of the code agnostic parser 2024-03-05 10:40:42 -05:00
Ed_
43a1c20d73 General refactors to various files
* Moved all mapped procedure overloads to grime.odin
* Removed extraneous entity_box related procedures
* Major refactor to grime_array its header is now allocated as part of its initialization
*
2024-03-05 10:40:28 -05:00
Ed_
3ee5dd7d65 First complete iteration of stack allocator 2024-03-05 10:38:12 -05:00
Ed_
509b73f79c Fix for linked lists 2024-03-05 10:37:51 -05:00
Ed_
3a63914282 Deleting entity_box2 for now as its not needed 2024-03-05 10:20:18 -05:00
Ed_
ceb746e537 Rolled my own string_to_runes 2024-03-05 10:19:27 -05:00
Ed_
fd44001456 Added vmem arena file
Going to need to roll my own for my use case.
2024-03-05 10:18:38 -05:00
Ed_
bba45ce96b deleting hot_reload file (not needed right now) 2024-03-05 10:18:13 -05:00
Ed_
0622add196 Added WYSIWYG odin parser file 2024-03-05 10:17:53 -05:00
Ed_
fb6d66140e Iteration on whitespace parser 2024-03-05 10:17:27 -05:00
Ed_
218af644d6 Added more helpers for memory ptr math 2024-03-05 10:16:50 -05:00
Ed_
d83d1cc128 Added push_back/pop_back for doubly-linked lists 2024-03-05 10:16:23 -05:00
Ed_
b05c87e250 Minor cleanup of font provider 2024-03-05 10:15:56 -05:00
Ed_
5147a53c4d Prepping for new vmem layout 2024-03-05 10:15:44 -05:00
Ed_
bd6e79d005 Runtime fixes 2024-03-02 20:22:28 -05:00
Ed_
b4feb9e506 make slab allocator file 2024-03-02 19:29:08 -05:00
Ed_
b0adfbf5f5 Made the initial whitespace parser 2024-03-02 18:19:27 -05:00
Ed_
035c726a71 got basic ui elmental interaction working, + alignment of anchor 2024-03-02 10:24:09 -05:00
Ed_
77449819af Deleting redundant hash table files for now.
I can bring them back from the commit history when I decide to explor again.
2024-02-29 19:38:29 -05:00
Ed_
12aa6b4870 Mostly exploring hashtables, some new files...
I made the files for the ast but they're not populated yet.
I made some initial implementation for raddbg flavored linked-lists.
2024-02-29 19:37:37 -05:00
Ed_
1de141288f Made font_cache use the zpl hash map, make a proper setup for how many atlases to sore in the size_table 2024-02-27 09:32:26 -05:00
Ed_
4deee942a8 General codebase refactor & cleanup
Renamed HashTable to HMapZPL, with procs having the zpl_ namespace prefix.
(I want to eventually get away from using it)

Started to use the grime pattern for library aliasing better.
2024-02-27 07:50:57 -05:00