summaryrefslogtreecommitdiff
path: root/src/static-ui.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-04-10 11:41:29 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-04-10 11:41:29 -0400
commita066448effaa9a56c049136067a73ba0156f65d3 (patch)
tree7eee2f9db2f23d1847d53f67874d7af0d80732e0 /src/static-ui.cpp
parent3fbf01b3466bb94a730cc94fea72ea661ffb9759 (diff)
pke: ui box type text cleanup
Diffstat (limited to 'src/static-ui.cpp')
-rw-r--r--src/static-ui.cpp29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/static-ui.cpp b/src/static-ui.cpp
index 1c089b9..9df7ffa 100644
--- a/src/static-ui.cpp
+++ b/src/static-ui.cpp
@@ -13,6 +13,9 @@
#include <cstring>
#include <vulkan/vulkan_core.h>
+TypeSafeInt_B(PKE_UI_BOX_TYPE);
+TypeSafeInt_B(PKE_UI_BOX_FLAG);
+
struct pke_ui_box_instance_buffer_item {
glm::mat4 pos_scale;
glm::vec2 px_scale;
@@ -195,6 +198,16 @@ void pke_ui_calc_px(DynArray<pke_ui_box_instance_buffer_item> &buffer, pke_ui_fl
box->internal.parent->internal.px_padding_t += px_size.y;
}
+ if (box->type_data != nullptr) {
+ // type-specific changes
+ if (box->type == PKE_UI_BOX_TYPE_TEXT) {
+ pke_ui_box_type_data_text *data_text = reinterpret_cast<pke_ui_box_type_data_text*>(box->type_data);
+ data_text->font_render_settings.surface_area_pos = box->internal.px_corner;
+ data_text->font_render_settings.surface_area_size = box->internal.px_size;
+ FontType_UpdateStringRender(data_text->font_render_handle, &data_text->font_render_settings);
+ }
+ }
+
if (PK_HAS_FLAG(box->flags, PKE_UI_BOX_FLAG_VISIBILITY_INVISIBLE)) {
return;
}
@@ -224,25 +237,14 @@ void pke_ui_calc_px(DynArray<pke_ui_box_instance_buffer_item> &buffer, pke_ui_fl
buffer_item->px_scale.x = (2.0 / (float)Extent.width);
buffer_item->px_scale.y = (2.0 / (float)Extent.height);
buffer_item->depth = (float)box->layer;
-
- if (box->type_data == nullptr) return;
-
- // type-specific changes
- if (box->type == PKE_UI_BOX_TYPE_TEXT) {
- pke_ui_box_type_data_text *data_text = reinterpret_cast<pke_ui_box_type_data_text*>(box->type_data);
- data_text->font_render_settings.surface_area_pos = box->internal.px_corner;
- data_text->font_render_settings.surface_area_size = box->internal.px_size;
- FontType_UpdateStringRender(data_text->font_render_handle, &data_text->font_render_settings);
- return;
- }
}
void pke_ui_recalc_sizes_recursive(DynArray<pke_ui_box_instance_buffer_item> &arr, pke_ui_box *box, uint8_t depth = 0) {
- uint64_t flags_masked;
+ PKE_UI_BOX_FLAG_T flags_masked;
uint8_t flex_count = 0;
pke_ui_flex_params flex_params{};
- flags_masked = box->flags & (PKE_UI_BOX_FLAG_POSITION_TYPE_ALL);
+ flags_masked = PKE_UI_BOX_FLAG_T(box->flags & PKE_UI_BOX_FLAG_POSITION_TYPE_ALL);
if (flags_masked == 0b000 || flags_masked == 0b011 || flags_masked == 0b101 || flags_masked == 0b110 || flags_masked == 0b111) {
fprintf(stderr, "[%s] ui box invalid flags: position type", __FILE__);
return;
@@ -447,6 +449,7 @@ void pke_ui_internal_new_typed_box(pke_ui_box *box, const PKE_UI_BOX_TYPE type)
break;
case PKE_UI_BOX_TYPE_TEXT:
box->type_data = pk_new<pke_ui_box_type_data_text>(pke_ui_master.bkt);
+ box->flags |= PKE_UI_BOX_FLAG_VISIBILITY_INVISIBLE;
break;
case PKE_UI_BOX_TYPE_INPUT_TEXT:
break;