summaryrefslogtreecommitdiff
path: root/src/static-ui.hpp
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.hpp
parent3fbf01b3466bb94a730cc94fea72ea661ffb9759 (diff)
pke: ui box type text cleanup
Diffstat (limited to 'src/static-ui.hpp')
-rw-r--r--src/static-ui.hpp74
1 files changed, 43 insertions, 31 deletions
diff --git a/src/static-ui.hpp b/src/static-ui.hpp
index 3d64ce8..95506d7 100644
--- a/src/static-ui.hpp
+++ b/src/static-ui.hpp
@@ -18,43 +18,55 @@ 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
- // exact screen coordinates
- PKE_UI_BOX_FLAG_POSITION_TYPE_FLEX = (1 << 0),
- PKE_UI_BOX_FLAG_POSITION_TYPE_STATIC = (1 << 1),
- PKE_UI_BOX_FLAG_POSITION_TYPE_DYNAMIC = (1 << 2),
- PKE_UI_BOX_FLAG_POSITION_TYPE_ALL = (1 << 0) | (1 << 1) | (1 << 2),
- // [05-06] center
- PKE_UI_BOX_FLAG_CENTER_HORIZONTAL = (1 << 5),
- PKE_UI_BOX_FLAG_CENTER_VERTICAL = (1 << 6),
- PKE_UI_BOX_FLAG_CENTER_BOTH = (1 << 5) | (1 << 6),
- // [07-09] visibility
- PKE_UI_BOX_FLAG_VISIBILITY_INVISIBLE = (1 << 7),
- // [10-??]
-};
+TypeSafeInt_H(PKE_UI_BOX_TYPE, uint8_t, 0xFF);
+TypeSafeInt_H(PKE_UI_BOX_FLAG, uint64_t, 0xFFFFFFFFFFFFFFFF);
+
+// layouts
+constexpr PKE_UI_BOX_TYPE PKE_UI_BOX_TYPE_STANDARD
+ = PKE_UI_BOX_TYPE(000);
+// TODO columns, rows, tabs, etc
+
+// special (content)
+constexpr PKE_UI_BOX_TYPE PKE_UI_BOX_TYPE_TEXT
+ = PKE_UI_BOX_TYPE(050);
+// TODO image, render target, etc
+
+// inputs
+constexpr PKE_UI_BOX_TYPE PKE_UI_BOX_TYPE_INPUT_TEXT
+ = PKE_UI_BOX_TYPE(100);
+// TODO multi-line text, scalar, float, slider, button, etc
+
+
+constexpr PKE_UI_BOX_FLAG PKE_UI_BOX_FLAG_NONE
+ = PKE_UI_BOX_FLAG(0);
+// [00-04] position type
+// exact screen coordinates
+constexpr PKE_UI_BOX_FLAG PKE_UI_BOX_FLAG_POSITION_TYPE_FLEX
+ = PKE_UI_BOX_FLAG((1 << 0));
+constexpr PKE_UI_BOX_FLAG PKE_UI_BOX_FLAG_POSITION_TYPE_STATIC
+ = PKE_UI_BOX_FLAG((1 << 1));
+constexpr PKE_UI_BOX_FLAG PKE_UI_BOX_FLAG_POSITION_TYPE_DYNAMIC
+ = PKE_UI_BOX_FLAG((1 << 2));
+constexpr PKE_UI_BOX_FLAG PKE_UI_BOX_FLAG_POSITION_TYPE_ALL
+ = PKE_UI_BOX_FLAG((1 << 0) | (1 << 1) | (1 << 2));
+// [05-06] center
+constexpr PKE_UI_BOX_FLAG PKE_UI_BOX_FLAG_CENTER_HORIZONTAL
+ = PKE_UI_BOX_FLAG((1 << 5));
+constexpr PKE_UI_BOX_FLAG PKE_UI_BOX_FLAG_CENTER_VERTICAL
+ = PKE_UI_BOX_FLAG((1 << 6));
+constexpr PKE_UI_BOX_FLAG PKE_UI_BOX_FLAG_CENTER_BOTH
+ = PKE_UI_BOX_FLAG((1 << 5) | (1 << 6));
+// [07-09] visibility
+constexpr PKE_UI_BOX_FLAG PKE_UI_BOX_FLAG_VISIBILITY_INVISIBLE
+ = PKE_UI_BOX_FLAG((1 << 7));
+// [10-??]
typedef uint16_t pke_ui_box_count_T;
struct pke_ui_box;
struct pke_ui_box {
- PKE_UI_BOX_FLAGS flags;
+ PKE_UI_BOX_FLAG flags;
float pos_top_left_x, pos_top_left_y;
float min_width, min_height;
float max_width, max_height;