From 977ef87b92874364746740e7303b9a3a86a88d58 Mon Sep 17 00:00:00 2001 From: Michael Savage Date: Mon, 17 Feb 2025 21:06:17 +0000 Subject: [PATCH 1/2] [Core] Add a userData pointer to Clay_TextElementConfig --- clay.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/clay.h b/clay.h index 65d2854..73aa22a 100644 --- a/clay.h +++ b/clay.h @@ -360,6 +360,8 @@ typedef struct { // CLAY_TEXT_ALIGN_CENTER - Horizontally aligns wrapped lines of text to the center of their bounding box. // CLAY_TEXT_ALIGN_RIGHT - Horizontally aligns wrapped lines of text to the right hand side of their bounding box. Clay_TextAlignment textAlignment; + // A pointer that will be transparently passed through to the resulting render command. + void *userData; // When set to true, clay will hash the entire text contents of this string as an identifier for its internal // text measurement cache, rather than just the pointer and length. This will incur significant performance cost for // long bodies of text. @@ -2660,7 +2662,7 @@ void Clay__CalculateFinalLayout(void) { .letterSpacing = textElementConfig->letterSpacing, .lineHeight = textElementConfig->lineHeight, }}, - .userData = sharedConfig->userData, + .userData = textElementConfig->userData, .id = Clay__HashNumber(lineIndex, currentElement->id).id, .zIndex = root->zIndex, .commandType = CLAY_RENDER_COMMAND_TYPE_TEXT, From d60b491c293421a432099de9d3fb143ac584544b Mon Sep 17 00:00:00 2001 From: Nic Barker Date: Mon, 24 Feb 2025 09:00:09 +1300 Subject: [PATCH 2/2] Move userdata pointer to top of text element config --- clay.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clay.h b/clay.h index 73aa22a..d39ce86 100644 --- a/clay.h +++ b/clay.h @@ -339,6 +339,8 @@ typedef CLAY_PACKED_ENUM { // Controls various functionality related to text elements. typedef struct { + // A pointer that will be transparently passed through to the resulting render command. + void *userData; // The RGBA color of the font to render, conventionally specified as 0-255. Clay_Color textColor; // An integer transparently passed to Clay_MeasureText to identify the font to use. @@ -360,8 +362,6 @@ typedef struct { // CLAY_TEXT_ALIGN_CENTER - Horizontally aligns wrapped lines of text to the center of their bounding box. // CLAY_TEXT_ALIGN_RIGHT - Horizontally aligns wrapped lines of text to the right hand side of their bounding box. Clay_TextAlignment textAlignment; - // A pointer that will be transparently passed through to the resulting render command. - void *userData; // When set to true, clay will hash the entire text contents of this string as an identifier for its internal // text measurement cache, rather than just the pointer and length. This will incur significant performance cost for // long bodies of text.