diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-06-17 11:12:54 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-06-17 11:12:54 -0400 |
| commit | 48f56a7e5db638fb3526277513b8f14cbe405398 (patch) | |
| tree | 36d3b013d704a35d0a0a9315df887f4857ed224e /src/serialization-font.cpp | |
| parent | 66ebed74456f76277597b3b07f3e67cc45388ece (diff) | |
pke: expose colors for FontRender and pke_ui_box
Diffstat (limited to 'src/serialization-font.cpp')
| -rw-r--r-- | src/serialization-font.cpp | 56 |
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; + } } } |
