summaryrefslogtreecommitdiff
path: root/src/serialization-font.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-06-17 11:12:54 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-06-17 11:12:54 -0400
commit48f56a7e5db638fb3526277513b8f14cbe405398 (patch)
tree36d3b013d704a35d0a0a9315df887f4857ed224e /src/serialization-font.cpp
parent66ebed74456f76277597b3b07f3e67cc45388ece (diff)
pke: expose colors for FontRender and pke_ui_box
Diffstat (limited to 'src/serialization-font.cpp')
-rw-r--r--src/serialization-font.cpp56
1 files changed, 52 insertions, 4 deletions
diff --git a/src/serialization-font.cpp b/src/serialization-font.cpp
index 4ccc55e..f31016e 100644
--- a/src/serialization-font.cpp
+++ b/src/serialization-font.cpp
@@ -31,7 +31,7 @@ pk_handle pke_serialize_font_render(srlztn_serialize_helper *h, FontRender *fr)
h->handle_head.itemIndex++;
pk_arr_append_t(&kvec.child_handles, font_render_settings_handle);
- compt_a<128==sizeof(FontRender)>();
+ compt_a<160==sizeof(FontRender)>();
{
kve.key = SRLZTN_UI_FONT_RENDER_UUID;
s = pk_new<char>(37, h->bkt);
@@ -80,7 +80,7 @@ void pke_deserialize_font_render(srlztn_deserialize_helper *h, pke_kve_container
uint32_t i;
char *s;
- compt_a<128==sizeof(FontRender)>();
+ compt_a<160==sizeof(FontRender)>();
for (i = 0; i < kvec->arr.next; ++i) {
kve = &kvec->arr[i];
if (strcmp(kve->key, SRLZTN_UI_FONT_RENDER_UUID) == 0) {
@@ -127,7 +127,7 @@ pk_handle pke_serialize_font_render_settings(srlztn_serialize_helper *h, FontRen
kvec.child_handles.bkt = h->bkt;
h->handle_head.itemIndex++;
- compt_a<32==sizeof(FontRenderSettings)>();
+ compt_a<64==sizeof(FontRenderSettings)>();
{
kve.key = SRLZTN_UI_FONT_RENDER_SETTINGS_CHAR_SCALE;
len = snprintf(NULL, 0, "%f", frs->char_scale);
@@ -181,6 +181,24 @@ pk_handle pke_serialize_font_render_settings(srlztn_serialize_helper *h, FontRen
kve.end = SRLZTN_KVE_END;
pk_arr_append_t(&kvec.arr, kve);
}
+ {
+ kve.key = SRLZTN_UI_FONT_RENDER_SETTINGS_COLOR_FOREGROUND;
+ len = snprintf(NULL, 0, "%f%s%f%s%f%s%f", frs->color_foreground[0], SRLZTN_NUM_SEPARATOR, frs->color_foreground[1], SRLZTN_NUM_SEPARATOR, frs->color_foreground[2], SRLZTN_NUM_SEPARATOR, frs->color_foreground[3]);
+ s = pk_new<char>(len+1, h->bkt);
+ sprintf(s, "%f%s%f%s%f%s%f", frs->color_foreground[0], SRLZTN_NUM_SEPARATOR, frs->color_foreground[1], SRLZTN_NUM_SEPARATOR, frs->color_foreground[2], SRLZTN_NUM_SEPARATOR, frs->color_foreground[3]);
+ kve.val = s;
+ kve.end = SRLZTN_KVE_END;
+ pk_arr_append_t(&kvec.arr, kve);
+ }
+ {
+ kve.key = SRLZTN_UI_FONT_RENDER_SETTINGS_COLOR_BACKGROUND;
+ len = snprintf(NULL, 0, "%f%s%f%s%f%s%f", frs->color_background[0], SRLZTN_NUM_SEPARATOR, frs->color_background[1], SRLZTN_NUM_SEPARATOR, frs->color_background[2], SRLZTN_NUM_SEPARATOR, frs->color_background[3]);
+ s = pk_new<char>(len+1, h->bkt);
+ sprintf(s, "%f%s%f%s%f%s%f", frs->color_background[0], SRLZTN_NUM_SEPARATOR, frs->color_background[1], SRLZTN_NUM_SEPARATOR, frs->color_background[2], SRLZTN_NUM_SEPARATOR, frs->color_background[3]);
+ kve.val = s;
+ kve.end = SRLZTN_KVE_END;
+ pk_arr_append_t(&kvec.arr, kve);
+ }
pk_arr_append_t(&h->kvp_containers, kvec);
kvec.arr.data = nullptr;
@@ -195,7 +213,7 @@ void pke_deserialize_font_render_settings(srlztn_deserialize_helper *h, pke_kve_
const char *starting_char;
PK_STN_RES stn_res;
char *str_end;
- compt_a<32==sizeof(FontRenderSettings)>();
+ compt_a<64==sizeof(FontRenderSettings)>();
for (i = 0; i < kvec->arr.next; ++i) {
if (strncmp(kvec->arr[i].key, SRLZTN_UI_FONT_RENDER_SETTINGS_CHAR_SCALE, strlen(SRLZTN_UI_FONT_RENDER_SETTINGS_CHAR_SCALE)) == 0) {
stn_res = pk_stn(&frs->char_scale, kvec->arr[i].val, &str_end);
@@ -256,5 +274,35 @@ void pke_deserialize_font_render_settings(srlztn_deserialize_helper *h, pke_kve_
frs->surface_area_type_flags = FONT_RENDER_SURFACE_AREA_TYPE_FLAG(flags);
continue;
}
+ if (strstr(SRLZTN_UI_FONT_RENDER_SETTINGS_COLOR_FOREGROUND, kvec->arr[i].key)) {
+ starting_char = kvec->arr[i].val;
+ index = 0;
+ do {
+ assert(index < 4);
+ stn_res = pk_stn(&frs->color_foreground[index], starting_char, &str_end);
+ if (stn_res != PK_STN_RES_SUCCESS) break;
+ starting_char = str_end + 1;
+ ++index;
+ } while (*str_end != '\0');
+ if (stn_res != PK_STN_RES_SUCCESS) {
+ fprintf(stderr, "[pke_deserialize_ui_box] Failed to parse value for: '%s', err: %i\n", SRLZTN_UI_FONT_RENDER_SETTINGS_COLOR_FOREGROUND, stn_res);
+ }
+ continue;
+ }
+ if (strstr(SRLZTN_UI_FONT_RENDER_SETTINGS_COLOR_BACKGROUND, kvec->arr[i].key)) {
+ starting_char = kvec->arr[i].val;
+ index = 0;
+ do {
+ assert(index < 4);
+ stn_res = pk_stn(&frs->color_background[index], starting_char, &str_end);
+ if (stn_res != PK_STN_RES_SUCCESS) break;
+ starting_char = str_end + 1;
+ ++index;
+ } while (*str_end != '\0');
+ if (stn_res != PK_STN_RES_SUCCESS) {
+ fprintf(stderr, "[pke_deserialize_ui_box] Failed to parse value for: '%s', err: %i\n", SRLZTN_UI_FONT_RENDER_SETTINGS_COLOR_BACKGROUND, stn_res);
+ }
+ continue;
+ }
}
}