summaryrefslogtreecommitdiff
path: root/src/serialization-static-ui.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-static-ui.cpp
parent66ebed74456f76277597b3b07f3e67cc45388ece (diff)
pke: expose colors for FontRender and pke_ui_box
Diffstat (limited to 'src/serialization-static-ui.cpp')
-rw-r--r--src/serialization-static-ui.cpp54
1 files changed, 52 insertions, 2 deletions
diff --git a/src/serialization-static-ui.cpp b/src/serialization-static-ui.cpp
index e68f2ed..49dceaa 100644
--- a/src/serialization-static-ui.cpp
+++ b/src/serialization-static-ui.cpp
@@ -75,7 +75,7 @@ pk_handle pke_serialize_ui_box(srlztn_serialize_helper *h, pke_ui_box *box) {
kvec.children.bkt = h->bkt;
h->handle_head.itemIndex++;
- compt_a<160==sizeof(pke_ui_box)>();
+ compt_a<192==sizeof(pke_ui_box)>();
if (box->uuid != pk_uuid_zed && box->uuid != pk_uuid_max) {
kve.key = SRLZTN_UI_BOX_UUID;
s = pk_new<char>(37, h->bkt);
@@ -160,6 +160,26 @@ pk_handle pke_serialize_ui_box(srlztn_serialize_helper *h, pke_ui_box *box) {
kve.end = SRLZTN_KVE_END;
pk_arr_append_t(&kvec.arr, kve);
}
+ if (PK_HAS_FLAG(box->flags, PKE_UI_BOX_FLAG_VISIBILITY_INVISIBLE) == false)
+ {
+ kve.key = SRLZTN_UI_BOX_COLOR_BORDER;
+ len = snprintf(NULL, 0, "%f%s%f%s%f%s%f", box->color_border[0], SRLZTN_NUM_SEPARATOR, box->color_border[1], SRLZTN_NUM_SEPARATOR, box->color_border[2], SRLZTN_NUM_SEPARATOR, box->color_border[3]);
+ s = pk_new<char>(len+1, h->bkt);
+ sprintf(s, "%f%s%f%s%f%s%f", box->color_border[0], SRLZTN_NUM_SEPARATOR, box->color_border[1], SRLZTN_NUM_SEPARATOR, box->color_border[2], SRLZTN_NUM_SEPARATOR, box->color_border[3]);
+ kve.val = s;
+ kve.end = SRLZTN_KVE_END;
+ pk_arr_append_t(&kvec.arr, kve);
+ }
+ if (PK_HAS_FLAG(box->flags, PKE_UI_BOX_FLAG_VISIBILITY_INVISIBLE) == false)
+ {
+ kve.key = SRLZTN_UI_BOX_COLOR_BACKGROUND;
+ len = snprintf(NULL, 0, "%f%s%f%s%f%s%f", box->color_background[0], SRLZTN_NUM_SEPARATOR, box->color_background[1], SRLZTN_NUM_SEPARATOR, box->color_background[2], SRLZTN_NUM_SEPARATOR, box->color_background[3]);
+ s = pk_new<char>(len+1, h->bkt);
+ sprintf(s, "%f%s%f%s%f%s%f", box->color_background[0], SRLZTN_NUM_SEPARATOR, box->color_background[1], SRLZTN_NUM_SEPARATOR, box->color_background[2], SRLZTN_NUM_SEPARATOR, box->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);
pke_kve_container *kvec_ptr = &h->kvp_containers[h->kvp_containers.next-1];
@@ -196,7 +216,7 @@ void pke_deserialize_ui_box(srlztn_deserialize_helper *h, pke_kve_container *kve
pke_ui_box *parent_box = nullptr;
bx.type_data = nullptr;
- compt_a<160==sizeof(pke_ui_box)>();
+ compt_a<192==sizeof(pke_ui_box)>();
for (i = 0; i < kvec->arr.next; ++i) {
kve = &kvec->arr[i];
if (strstr(SRLZTN_UI_BOX_UUID, kve->key)) {
@@ -312,6 +332,36 @@ void pke_deserialize_ui_box(srlztn_deserialize_helper *h, pke_kve_container *kve
}
continue;
}
+ if (strstr(SRLZTN_UI_BOX_COLOR_BORDER, kve->key)) {
+ starting_char = kve->val;
+ index = 0;
+ do {
+ assert(index < 4);
+ res = pk_stn(&bx.color_border[index], starting_char, &stn_end);
+ if (res != PK_STN_RES_SUCCESS) break;
+ starting_char = stn_end + 1;
+ ++index;
+ } while (*stn_end != '\0');
+ if (res != PK_STN_RES_SUCCESS) {
+ fprintf(stderr, "[pke_deserialize_ui_box] Failed to parse value for: '%s', err: %i\n", SRLZTN_UI_BOX_COLOR_BORDER, res);
+ }
+ continue;
+ }
+ if (strstr(SRLZTN_UI_BOX_COLOR_BACKGROUND, kve->key)) {
+ starting_char = kve->val;
+ index = 0;
+ do {
+ assert(index < 4);
+ res = pk_stn(&bx.color_background[index], starting_char, &stn_end);
+ if (res != PK_STN_RES_SUCCESS) break;
+ starting_char = stn_end + 1;
+ ++index;
+ } while (*stn_end != '\0');
+ if (res != PK_STN_RES_SUCCESS) {
+ fprintf(stderr, "[pke_deserialize_ui_box] Failed to parse value for: '%s', err: %i\n", SRLZTN_UI_BOX_COLOR_BACKGROUND, res);
+ }
+ continue;
+ }
}
// deserialize data