diff --git a/.gitignore b/.gitignore index 257aa8c..6a640b8 100644 --- a/.gitignore +++ b/.gitignore @@ -9,5 +9,5 @@ Sectr.sublime-project Sectr.sublime-workspace ols.json .vscode/settings.json -# thirdparty -# toolchain +thirdparty +toolchain diff --git a/Readme.md b/Readme.md index 1b9d6b7..733f76c 100644 --- a/Readme.md +++ b/Readme.md @@ -22,16 +22,19 @@ The dependencies are: * Remove implicit assignments for container allocators in the Base and Core packages * I did not enjoy bug hunting a memory corruption because I mistakenly didn't properly initialize a core container with their designated initiatizer: new, make, or init. * See fork Readme for which procedures were changed.. -* Odin repo's base, core, and vendor(raylib) libaries -* An ini parser +* Odin repo's base, core, and some of vendor +* [VEFontCache-Odin](https://github.com/Ed94/VEFontCache-Odin): Text rendering & shaping library created for this prototype +* [stb_truetype-odin](https://github.com/Ed94/stb_truetype-odin): Variant of the stb/truetype package in odin's vendor collection made for VEFontCache-Odin +* [harfbuzz-odin](https://github.com/Ed94/harfbuzz-odin): Custom repo with tailor made bindings for VEFontCache-Odin +* [sokol-odin (Sectr Fork)](https://github.com/Ed94/sokol-odin) +* [sokol-tools](https://github.com/floooh/sokol-tools) +* Powershell (if you want to use my build scripts) * backtrace (not used yet) * freetype (not used yet) -* harfbuzz -* sokol -* sokol-tools -* Powershell (if you want to use my build scripts) +* Eventually some config parser (maybe I'll use metadesk, or [ini](https://github.com/laytan/odin-ini-parser)) The project is so far in a "codebase boostrapping" phase. Most the work being done right now is setting up high performance linear zoom rendering for text and UI. +Text has recently hit sufficient peformance targets, and now inital UX has become the focus. The project's is organized into 2 runtime modules sectr_host & sectr. The host module loads the main module & its memory. Hot-reloading it's dll when it detects a change. @@ -43,7 +46,6 @@ Codebase organization: * Has the following definitions: startup, shutdown, reload, tick, clean_frame (which host hooks up to when managing the client dll) * Will handle async ops. * Font Provider: Manages fonts. - * Bulk of visualization must be able to render text effectively * Bulk of implementation maintained as a separate library: [VEFontCache-Odin](https://github.com/Ed94/VEFontCache-Odin) * Grime: Name speaks for itself, stuff not directly related to the target features to iterate upon for the prototype. * Defining dependency aliases or procedure overload tables, rolling own allocator, data structures, etc. diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 8e1151e..40c9055 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -141,22 +141,25 @@ push-location $path_root $path_font = join-path $path_code 'font' - $module_scripts = $PSScriptRoot - $package_grime = join-path $path_code 'grime' - $package_VEFontCache = join-path $path_font 'VEFontCache' - $module_host = join-path $path_code 'host' - $module_sectr = join-path $path_code 'sectr' + $module_scripts = $PSScriptRoot + $package_grime = join-path $path_code 'grime' + $package_VEFontCache = join-path $path_font 'VEFontCache' + $package_stb_truetype = join-path $path_thirdparty 'stb' + $module_host = join-path $path_code 'host' + $module_sectr = join-path $path_code 'sectr' if ($force){ mark-ModuleDirty $module_scripts mark-ModuleDirty $package_VEFontCache + mark-ModuleDirty $package_stb_truetype mark-ModuleDirty $package_grime mark-ModuleDirty $module_sectr mark-ModuleDirty $module_host } - $module_scripts_dirty = check-ModuleForChanges $module_scripts - $pkg_VEFontCache_dirty = check-ModuleForChanges $package_VEFontCache - $pkg_grime_dirty = check-ModuleForChanges $package_grime + $module_scripts_dirty = check-ModuleForChanges $module_scripts + $pkg_VEFontCache_dirty = check-ModuleForChanges $package_VEFontCache + $pkg_stb_truetype_dirty = check-ModuleForChanges $package_stb_truetype + $pkg_grime_dirty = check-ModuleForChanges $package_grime $pkg_collection_codebase = 'codebase=' + $path_code $pkg_collection_thirdparty = 'thirdparty=' + $path_thirdparty @@ -174,7 +177,7 @@ push-location $path_root function build-sectr { - $should_build = (check-ModuleForChanges $module_sectr) -or $pkg_grime_dirty -or $pkg_VEFontCache_dirty -or $module_scripts_dirty + $should_build = (check-ModuleForChanges $module_sectr) -or $pkg_grime_dirty -or $pkg_VEFontCache_dirty -or $pkg_stb_truetype_dirty -or $module_scripts_dirty if ( -not( $should_build)) { write-host 'Skipping sectr build, module up to date' return $module_unchanged diff --git a/scripts/update_deps.ps1 b/scripts/update_deps.ps1 index f69aad3..985e623 100644 --- a/scripts/update_deps.ps1 +++ b/scripts/update_deps.ps1 @@ -77,8 +77,13 @@ $path_devshell = join-path $path_helpers 'devshell.ps1' $path_stb = join-path $path_thirdparty 'stb' $path_stb_src = join-path $path_stb 'src' -push-location $path_stb_src +$pkg_stb_truetype_dirty = check-ModuleForChanges $path_stb -& '.\build.bat' +if ( $pkg_stb_truetype_dirty) +{ + push-location $path_stb_src -pop-location + & '.\build.bat' + + pop-location +} diff --git a/thirdparty/stb/lib/stb_truetype.lib b/thirdparty/stb/lib/stb_truetype.lib index f645f2e..715881f 100644 Binary files a/thirdparty/stb/lib/stb_truetype.lib and b/thirdparty/stb/lib/stb_truetype.lib differ