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.hpp | |
| parent | 3fbf01b3466bb94a730cc94fea72ea661ffb9759 (diff) | |
pke: ui box type text cleanup
Diffstat (limited to 'src/static-ui.hpp')
| -rw-r--r-- | src/static-ui.hpp | 74 |
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; |
