summaryrefslogtreecommitdiff
path: root/src/font.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/font.hpp
parent3fbf01b3466bb94a730cc94fea72ea661ffb9759 (diff)
pke: ui box type text cleanup
Diffstat (limited to 'src/font.hpp')
-rw-r--r--src/font.hpp41
1 files changed, 25 insertions, 16 deletions
diff --git a/src/font.hpp b/src/font.hpp
index 56977de..0396e8d 100644
--- a/src/font.hpp
+++ b/src/font.hpp
@@ -10,22 +10,31 @@
TypeSafeInt_H(FontTypeIndex, uint16_t, 0xFFFF);
TypeSafeInt_H(FontRenderIndex, uint16_t, 0xFFFF);
-enum FONT_GLYPH_CHAR_FLAGS : uint8_t {
- FONT_GLYPH_CHAR_FLAGS_NONE = (0 << 0),
- FONT_GLYPH_CHAR_FLAGS_CONTROL = (1 << 0),
- FONT_GLYPH_CHAR_FLAGS_WHITESPACE = (1 << 1),
- FONT_GLYPH_CHAR_FLAGS_ALIGN_ADVANCE = (1 << 2),
- FONT_GLYPH_CHAR_FLAGS_NEW_LINE = (1 << 3),
-};
+TypeSafeInt_H(FONT_GLYPH_CHAR_FLAG, uint8_t, 0xFF);
+TypeSafeInt_H(FONT_RENDER_SURFACE_AREA_TYPE_FLAG, uint8_t, 0xFF);
-enum FONT_RENDER_SURFACE_AREA_TYPE_FLAGS : uint8_t {
- FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_NONE = 0,
- FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_GROW_VERTICAL = (1 << 0),
- FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_GROW_HORIZONTAL = (1 << 1),
+constexpr FONT_GLYPH_CHAR_FLAG FONT_GLYPH_CHAR_FLAGS_NONE
+ = FONT_GLYPH_CHAR_FLAG((0 << 0));
+constexpr FONT_GLYPH_CHAR_FLAG FONT_GLYPH_CHAR_FLAGS_CONTROL
+ = FONT_GLYPH_CHAR_FLAG((1 << 0));
+constexpr FONT_GLYPH_CHAR_FLAG FONT_GLYPH_CHAR_FLAGS_WHITESPACE
+ = FONT_GLYPH_CHAR_FLAG((1 << 1));
+constexpr FONT_GLYPH_CHAR_FLAG FONT_GLYPH_CHAR_FLAGS_ALIGN_ADVANCE
+ = FONT_GLYPH_CHAR_FLAG((1 << 2));
+constexpr FONT_GLYPH_CHAR_FLAG FONT_GLYPH_CHAR_FLAGS_NEW_LINE
+ = FONT_GLYPH_CHAR_FLAG((1 << 3));
- FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_STATIC = 0,
- FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_FLUID = (1 << 0) | (1 << 1),
-};
+constexpr FONT_RENDER_SURFACE_AREA_TYPE_FLAG FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_NONE
+ = FONT_RENDER_SURFACE_AREA_TYPE_FLAG(0);
+constexpr FONT_RENDER_SURFACE_AREA_TYPE_FLAG FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_GROW_VERTICAL
+ = FONT_RENDER_SURFACE_AREA_TYPE_FLAG((1 << 0));
+constexpr FONT_RENDER_SURFACE_AREA_TYPE_FLAG FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_GROW_HORIZONTAL
+ = FONT_RENDER_SURFACE_AREA_TYPE_FLAG((1 << 1));
+
+constexpr FONT_RENDER_SURFACE_AREA_TYPE_FLAG FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_STATIC
+ = FONT_RENDER_SURFACE_AREA_TYPE_FLAG(0);
+constexpr FONT_RENDER_SURFACE_AREA_TYPE_FLAG FONT_RENDER_SURFACE_AREA_TYPE_FLAGS_FLUID
+ = FONT_RENDER_SURFACE_AREA_TYPE_FLAG((1 << 0) | (1 << 1));
struct FontRenderHandle {
FontTypeIndex index_ft;
@@ -38,7 +47,7 @@ struct FontGlyphChar {
glm::vec2 sprite_region_max;
glm::dvec4 plane_bounds;
uint32_t unicode;
- FONT_GLYPH_CHAR_FLAGS flags;
+ FONT_GLYPH_CHAR_FLAG flags;
};
struct FontRenderSettings {
float char_scale;
@@ -46,7 +55,7 @@ struct FontRenderSettings {
float char_spacing_scale;
glm::ivec2 surface_area_size; // TODO
glm::ivec2 surface_area_pos;
- FONT_RENDER_SURFACE_AREA_TYPE_FLAGS surface_area_type_flags; // TODO
+ FONT_RENDER_SURFACE_AREA_TYPE_FLAG surface_area_type_flags; // TODO
};
struct FontRender {
FontRenderHandle handle;