Compare commits

..

No commits in common. "efad3deef8f5b762562b83eb02642bcb665136a8" and "5fae7a6249f986d11307504b5bdc2bd1f6481b8f" have entirely different histories.

8 changed files with 9 additions and 21 deletions

View File

@ -111,13 +111,12 @@ TextWrapMode :: enum EnumBackingType {
} }
TextElementConfig :: struct { TextElementConfig :: struct {
textColor: Color, textColor: Color,
fontId: u16, fontId: u16,
fontSize: u16, fontSize: u16,
letterSpacing: u16, letterSpacing: u16,
lineHeight: u16, lineHeight: u16,
wrapMode: TextWrapMode, wrapMode: TextWrapMode,
hashStringContents: bool,
} }
ImageElementConfig :: struct { ImageElementConfig :: struct {

Binary file not shown.

Binary file not shown.

Binary file not shown.

17
clay.h
View File

@ -324,7 +324,6 @@ typedef struct {
uint16_t letterSpacing; uint16_t letterSpacing;
uint16_t lineHeight; uint16_t lineHeight;
Clay_TextElementConfigWrapMode wrapMode; Clay_TextElementConfigWrapMode wrapMode;
bool hashStringContents;
#ifdef CLAY_EXTEND_CONFIG_TEXT #ifdef CLAY_EXTEND_CONFIG_TEXT
CLAY_EXTEND_CONFIG_TEXT CLAY_EXTEND_CONFIG_TEXT
#endif #endif
@ -988,18 +987,9 @@ uint32_t Clay__HashTextWithConfig(Clay_String *text, Clay_TextElementConfig *con
uint32_t hash = 0; uint32_t hash = 0;
uintptr_t pointerAsNumber = (uintptr_t)text->chars; uintptr_t pointerAsNumber = (uintptr_t)text->chars;
if (config->hashStringContents) { hash += pointerAsNumber;
uint32_t maxLengthToHash = CLAY__MIN(text->length, 256); hash += (hash << 10);
for (int i = 0; i < maxLengthToHash; i++) { hash ^= (hash >> 6);
hash += text->chars[i];
hash += (hash << 10);
hash ^= (hash >> 6);
}
} else {
hash += pointerAsNumber;
hash += (hash << 10);
hash ^= (hash >> 6);
}
hash += text->length; hash += text->length;
hash += (hash << 10); hash += (hash << 10);
@ -1199,7 +1189,6 @@ Clay_LayoutElementHashMapItem* Clay__AddHashMapItem(Clay_ElementId elementId, Cl
if (hashItem->elementId.id == elementId.id) { // Collision - resolve based on generation if (hashItem->elementId.id == elementId.id) { // Collision - resolve based on generation
item.nextIndex = hashItem->nextIndex; item.nextIndex = hashItem->nextIndex;
if (hashItem->generation <= context->generation) { // First collision - assume this is the "same" element if (hashItem->generation <= context->generation) { // First collision - assume this is the "same" element
hashItem->elementId = elementId; // Make sure to copy this across. If the stringId reference has changed, we should update the hash item to use the new one.
hashItem->generation = context->generation + 1; hashItem->generation = context->generation + 1;
hashItem->layoutElement = layoutElement; hashItem->layoutElement = layoutElement;
hashItem->debugData->collision = false; hashItem->debugData->collision = false;