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/static-ui.hpp | |
| parent | 3aa4bf34cf1f8a710764bfd35849c2474589bf2e (diff) | |
pke: first-pass ui box with text
Diffstat (limited to 'src/static-ui.hpp')
| -rw-r--r-- | src/static-ui.hpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/static-ui.hpp b/src/static-ui.hpp index 6586a02..3d64ce8 100644 --- a/src/static-ui.hpp +++ b/src/static-ui.hpp @@ -2,6 +2,8 @@ #define PKE_STATIC_UI_HPP #include "components-vk.hpp" +#include "font.hpp" +#include "pk.h" #include "vendor-glm-include.hpp" #include <cstdint> @@ -16,6 +18,20 @@ struct MSDFGlyphSettings { float range_em; }; +enum PKE_UI_BOX_TYPE : uint8_t { + // layouts + PKE_UI_BOX_TYPE_STANDARD = 000, + // TODO columns, rows, tabs, etc + + // special (content) + PKE_UI_BOX_TYPE_TEXT = 050, + // TODO image, render target, etc + + // inputs + PKE_UI_BOX_TYPE_INPUT_TEXT = 100, // TODO + // TODO multi-line text, scalar, float, slider, button, etc +}; + enum PKE_UI_BOX_FLAGS : uint64_t { PKE_UI_BOX_FLAG_NONE = 0, // [00-04] position type @@ -43,8 +59,10 @@ struct pke_ui_box { float min_width, min_height; float max_width, max_height; float flex_weight; + PKE_UI_BOX_TYPE type; uint8_t flex_direction; uint8_t layer; + void *type_data; struct pke_ui_box_internals { // the exact px to translate (shader) glm::vec2 px_corner; @@ -60,6 +78,11 @@ struct pke_ui_box { } internal; }; +struct pke_ui_box_type_data_text { + FontRenderHandle font_render_handle; + FontRenderSettings font_render_settings; +}; + struct pke_ui_graphics_bindings { VkDeviceMemory deviceMemoryVert = VK_NULL_HANDLE; VkDeviceMemory deviceMemoryInst = VK_NULL_HANDLE; @@ -77,8 +100,8 @@ void pke_ui_init_bindings(); void pke_ui_tick(double delta); void pke_ui_teardown(); -pke_ui_box *pke_ui_box_new_root(); -pke_ui_box *pke_ui_box_new_child(pke_ui_box *parent); +pke_ui_box *pke_ui_box_new_root(const PKE_UI_BOX_TYPE type = PKE_UI_BOX_TYPE_STANDARD); +pke_ui_box *pke_ui_box_new_child(pke_ui_box *parent, const PKE_UI_BOX_TYPE type = PKE_UI_BOX_TYPE_STANDARD); #ifdef PKE_TEST_EXPOSE void pke_ui_calc_px(DynArray<pke_ui_box_instance_buffer_item> &buffer, pke_ui_flex_params *flex_params, pke_ui_box *box); |
