mirror of
https://github.com/nicbarker/clay.git
synced 2025-05-14 14:28:06 +00:00
Compare commits
5 Commits
a84d014be8
...
8066eda535
Author | SHA1 | Date | |
---|---|---|---|
|
8066eda535 | ||
|
5a328da308 | ||
|
3030390038 | ||
|
92582f66d8 | ||
|
65d2122dd6 |
@ -317,7 +317,7 @@ ElementDeclaration :: struct {
|
|||||||
userData: rawptr
|
userData: rawptr
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorType :: enum {
|
ErrorType :: enum EnumBackingType {
|
||||||
TextMeasurementFunctionNotProvided,
|
TextMeasurementFunctionNotProvided,
|
||||||
ArenaCapacityExceeded,
|
ArenaCapacityExceeded,
|
||||||
ElementsCapacityExceeded,
|
ElementsCapacityExceeded,
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
31
clay.h
31
clay.h
@ -21,6 +21,11 @@
|
|||||||
#include <arm_neon.h>
|
#include <arm_neon.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __JETBRAINS_IDE__
|
||||||
|
// Help jetbrains IDEs like CLion and Rider with intellisense & debugging
|
||||||
|
#define CLAY_IMPLEMENTATION
|
||||||
|
#endif
|
||||||
|
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
// HEADER DECLARATIONS ---------------------
|
// HEADER DECLARATIONS ---------------------
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
@ -1274,13 +1279,14 @@ Clay_LayoutElementHashMapItem *Clay__GetHashMapItem(uint32_t id) {
|
|||||||
return &Clay_LayoutElementHashMapItem_DEFAULT;
|
return &Clay_LayoutElementHashMapItem_DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Clay__GenerateIdForAnonymousElement(Clay_LayoutElement *openLayoutElement) {
|
Clay_ElementId Clay__GenerateIdForAnonymousElement(Clay_LayoutElement *openLayoutElement) {
|
||||||
Clay_Context* context = Clay_GetCurrentContext();
|
Clay_Context* context = Clay_GetCurrentContext();
|
||||||
Clay_LayoutElement *parentElement = Clay_LayoutElementArray_Get(&context->layoutElements, Clay__int32_tArray_GetValue(&context->openLayoutElementStack, context->openLayoutElementStack.length - 2));
|
Clay_LayoutElement *parentElement = Clay_LayoutElementArray_Get(&context->layoutElements, Clay__int32_tArray_GetValue(&context->openLayoutElementStack, context->openLayoutElementStack.length - 2));
|
||||||
Clay_ElementId elementId = Clay__HashNumber(parentElement->childrenOrTextContent.children.length, parentElement->id);
|
Clay_ElementId elementId = Clay__HashNumber(parentElement->childrenOrTextContent.children.length, parentElement->id);
|
||||||
openLayoutElement->id = elementId.id;
|
openLayoutElement->id = elementId.id;
|
||||||
Clay__AddHashMapItem(elementId, openLayoutElement, 0);
|
Clay__AddHashMapItem(elementId, openLayoutElement, 0);
|
||||||
Clay__StringArray_Add(&context->layoutElementIdStrings, elementId.stringId);
|
Clay__StringArray_Add(&context->layoutElementIdStrings, elementId.stringId);
|
||||||
|
return elementId;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Clay__ElementHasConfig(Clay_LayoutElement *layoutElement, Clay__ElementConfigType type) {
|
bool Clay__ElementHasConfig(Clay_LayoutElement *layoutElement, Clay__ElementConfigType type) {
|
||||||
@ -1515,11 +1521,8 @@ void Clay__ConfigureOpenElement(const Clay_ElementDeclaration declaration) {
|
|||||||
.errorText = CLAY_STRING("An element was configured with CLAY_SIZING_PERCENT, but the provided percentage value was over 1.0. Clay expects a value between 0 and 1, i.e. 20% is 0.2."),
|
.errorText = CLAY_STRING("An element was configured with CLAY_SIZING_PERCENT, but the provided percentage value was over 1.0. Clay expects a value between 0 and 1, i.e. 20% is 0.2."),
|
||||||
.userData = context->errorHandler.userData });
|
.userData = context->errorHandler.userData });
|
||||||
}
|
}
|
||||||
if (declaration.id.id != 0) {
|
|
||||||
Clay__AttachId(declaration.id);
|
Clay_ElementId openLayoutElementId = declaration.id;
|
||||||
} else if (openLayoutElement->id == 0) {
|
|
||||||
Clay__GenerateIdForAnonymousElement(openLayoutElement);
|
|
||||||
}
|
|
||||||
|
|
||||||
openLayoutElement->elementConfigs.internalArray = &context->elementConfigs.internalArray[context->elementConfigs.length];
|
openLayoutElement->elementConfigs.internalArray = &context->elementConfigs.internalArray[context->elementConfigs.length];
|
||||||
Clay_SharedElementConfig *sharedConfig = NULL;
|
Clay_SharedElementConfig *sharedConfig = NULL;
|
||||||
@ -1572,6 +1575,9 @@ void Clay__ConfigureOpenElement(const Clay_ElementDeclaration declaration) {
|
|||||||
} else if (declaration.floating.attachTo == CLAY_ATTACH_TO_ROOT) {
|
} else if (declaration.floating.attachTo == CLAY_ATTACH_TO_ROOT) {
|
||||||
floatingConfig.parentId = Clay__HashString(CLAY_STRING("Clay__RootContainer"), 0, 0).id;
|
floatingConfig.parentId = Clay__HashString(CLAY_STRING("Clay__RootContainer"), 0, 0).id;
|
||||||
}
|
}
|
||||||
|
if (!openLayoutElementId.id) {
|
||||||
|
openLayoutElementId = Clay__HashString(CLAY_STRING("Clay__FloatingContainer"), context->layoutElementTreeRoots.length, 0);
|
||||||
|
}
|
||||||
Clay__LayoutElementTreeRootArray_Add(&context->layoutElementTreeRoots, CLAY__INIT(Clay__LayoutElementTreeRoot) {
|
Clay__LayoutElementTreeRootArray_Add(&context->layoutElementTreeRoots, CLAY__INIT(Clay__LayoutElementTreeRoot) {
|
||||||
.layoutElementIndex = Clay__int32_tArray_GetValue(&context->openLayoutElementStack, context->openLayoutElementStack.length - 1),
|
.layoutElementIndex = Clay__int32_tArray_GetValue(&context->openLayoutElementStack, context->openLayoutElementStack.length - 1),
|
||||||
.parentId = floatingConfig.parentId,
|
.parentId = floatingConfig.parentId,
|
||||||
@ -1584,6 +1590,13 @@ void Clay__ConfigureOpenElement(const Clay_ElementDeclaration declaration) {
|
|||||||
if (declaration.custom.customData) {
|
if (declaration.custom.customData) {
|
||||||
Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .customElementConfig = Clay__StoreCustomElementConfig(declaration.custom) }, CLAY__ELEMENT_CONFIG_TYPE_CUSTOM);
|
Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .customElementConfig = Clay__StoreCustomElementConfig(declaration.custom) }, CLAY__ELEMENT_CONFIG_TYPE_CUSTOM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (openLayoutElementId.id != 0) {
|
||||||
|
Clay__AttachId(openLayoutElementId);
|
||||||
|
} else if (openLayoutElement->id == 0) {
|
||||||
|
openLayoutElementId = Clay__GenerateIdForAnonymousElement(openLayoutElement);
|
||||||
|
}
|
||||||
|
|
||||||
if (declaration.scroll.horizontal | declaration.scroll.vertical) {
|
if (declaration.scroll.horizontal | declaration.scroll.vertical) {
|
||||||
Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .scrollElementConfig = Clay__StoreScrollElementConfig(declaration.scroll) }, CLAY__ELEMENT_CONFIG_TYPE_SCROLL);
|
Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .scrollElementConfig = Clay__StoreScrollElementConfig(declaration.scroll) }, CLAY__ELEMENT_CONFIG_TYPE_SCROLL);
|
||||||
Clay__int32_tArray_Add(&context->openClipElementStack, (int)openLayoutElement->id);
|
Clay__int32_tArray_Add(&context->openClipElementStack, (int)openLayoutElement->id);
|
||||||
@ -3107,11 +3120,11 @@ void Clay__RenderDebugView(void) {
|
|||||||
CLAY({{0}}) {
|
CLAY({{0}}) {
|
||||||
CLAY_TEXT(CLAY_STRING("{ left: "), infoTextConfig);
|
CLAY_TEXT(CLAY_STRING("{ left: "), infoTextConfig);
|
||||||
CLAY_TEXT(Clay__IntToString(borderConfig->width.left), infoTextConfig);
|
CLAY_TEXT(Clay__IntToString(borderConfig->width.left), infoTextConfig);
|
||||||
CLAY_TEXT(CLAY_STRING("{ right: "), infoTextConfig);
|
CLAY_TEXT(CLAY_STRING(", right: "), infoTextConfig);
|
||||||
CLAY_TEXT(Clay__IntToString(borderConfig->width.right), infoTextConfig);
|
CLAY_TEXT(Clay__IntToString(borderConfig->width.right), infoTextConfig);
|
||||||
CLAY_TEXT(CLAY_STRING("{ top: "), infoTextConfig);
|
CLAY_TEXT(CLAY_STRING(", top: "), infoTextConfig);
|
||||||
CLAY_TEXT(Clay__IntToString(borderConfig->width.top), infoTextConfig);
|
CLAY_TEXT(Clay__IntToString(borderConfig->width.top), infoTextConfig);
|
||||||
CLAY_TEXT(CLAY_STRING("{ bottom: "), infoTextConfig);
|
CLAY_TEXT(CLAY_STRING(", bottom: "), infoTextConfig);
|
||||||
CLAY_TEXT(Clay__IntToString(borderConfig->width.bottom), infoTextConfig);
|
CLAY_TEXT(Clay__IntToString(borderConfig->width.bottom), infoTextConfig);
|
||||||
CLAY_TEXT(CLAY_STRING(" }"), infoTextConfig);
|
CLAY_TEXT(CLAY_STRING(" }"), infoTextConfig);
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user