summaryrefslogtreecommitdiff
path: root/src/font.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-04-09 17:20:23 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-04-09 17:20:23 -0400
commit496637b40ec3b241a0b09ed909dd3d26f68520ab (patch)
tree368f0a9f09e6af9df0556667b2aa168f1338bb7e /src/font.cpp
parent3aa4bf34cf1f8a710764bfd35849c2474589bf2e (diff)
pke: first-pass ui box with text
Diffstat (limited to 'src/font.cpp')
-rw-r--r--src/font.cpp25
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;