diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-04-10 11:41:29 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-04-10 11:41:29 -0400 |
| commit | a066448effaa9a56c049136067a73ba0156f65d3 (patch) | |
| tree | 7eee2f9db2f23d1847d53f67874d7af0d80732e0 /src/static-ui.cpp | |
| parent | 3fbf01b3466bb94a730cc94fea72ea661ffb9759 (diff) | |
pke: ui box type text cleanup
Diffstat (limited to 'src/static-ui.cpp')
| -rw-r--r-- | src/static-ui.cpp | 29 |
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; |
