summaryrefslogtreecommitdiff
path: root/src/static-ui.hpp
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/static-ui.hpp
parent3aa4bf34cf1f8a710764bfd35849c2474589bf2e (diff)
pke: first-pass ui box with text
Diffstat (limited to 'src/static-ui.hpp')
-rw-r--r--src/static-ui.hpp27
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);