diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-04-09 17:20:23 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-04-09 17:20:23 -0400 |
| commit | 496637b40ec3b241a0b09ed909dd3d26f68520ab (patch) | |
| tree | 368f0a9f09e6af9df0556667b2aa168f1338bb7e /src/font.cpp | |
| parent | 3aa4bf34cf1f8a710764bfd35849c2474589bf2e (diff) | |
pke: first-pass ui box with text
Diffstat (limited to 'src/font.cpp')
| -rw-r--r-- | src/font.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/font.cpp b/src/font.cpp index 0335017..03ca3fd 100644 --- a/src/font.cpp +++ b/src/font.cpp @@ -218,8 +218,20 @@ void FontType_Inner_CalcTransforms(const FontType *ft, FontRender *fr, FontInsta buf_item->bg_color = glm::vec4(0.0, 0.0, 0.0, 0.0); buf_item->sprite_region_min = fgc->sprite_region_min; buf_item->sprite_region_max = fgc->sprite_region_max; - buf_item->bounding_region_min = glm::vec2(-1.1, -1.1); - buf_item->bounding_region_max = glm::vec2(1.1, 1.1); + + buf_item->bounding_region_min.x = fr->settings.surface_area_pos.x; + buf_item->bounding_region_min.y = fr->settings.surface_area_pos.y; + buf_item->bounding_region_max.x = fr->settings.surface_area_pos.x + fr->settings.surface_area_size.x; + buf_item->bounding_region_max.y = fr->settings.surface_area_pos.y + fr->settings.surface_area_size.y; + buf_item->bounding_region_min.x -= (Extent.width / 2.0); + buf_item->bounding_region_min.x /= (Extent.width / 2.0); + buf_item->bounding_region_max.x -= (Extent.width / 2.0); + buf_item->bounding_region_max.x /= (Extent.width / 2.0); + buf_item->bounding_region_min.y -= (Extent.height / 2.0); + buf_item->bounding_region_min.y /= (Extent.height / 2.0); + buf_item->bounding_region_max.y -= (Extent.height / 2.0); + buf_item->bounding_region_max.y /= (Extent.height / 2.0); + buf_item->width = (fr->settings.char_scale / ft->msdf_settings.minimum_scale) * ft->msdf_settings.px_range; @@ -926,6 +938,15 @@ FontRenderHandle FontType_AddStringRender(FontTypeIndex idx_ft, const pk_str str return fr->handle; } +void FontType_UpdateStringRender(FontRenderHandle frh, FontRenderSettings *settings) { + assert(settings != nullptr); + assert((FontTypeIndex_T)ftd.h_ft > (FontTypeIndex_T)frh.index_ft); + FontType *ft = &ftd.arr_ft[(FontTypeIndex_T)frh.index_ft]; + assert((FontRenderIndex_T)ft->h_render > (FontRenderIndex_T)frh.index_fr); + ft->gr.should_update_instance_buffer = true; + ft->renders[(FontRenderIndex_T)frh.index_fr].settings = *settings; +} + void FontType_RemoveStringRender(FontRenderHandle handle) { FontRender *fr; uint32_t buffer_start_index; |
