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-static-ui.cpp | |
| parent | 66ebed74456f76277597b3b07f3e67cc45388ece (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.cpp | 54 |
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 |
