From 591bf68e1e08b23496c37f4df6c172e280d63841 Mon Sep 17 00:00:00 2001 From: Nic Barker Date: Thu, 30 Jan 2025 15:40:29 +1300 Subject: [PATCH] Add shared layouts to examples, improve hover and style overrides --- clay.h | 173 ++++++------ .../CMakeLists.txt | 2 +- examples/introducing-clay-video-demo/main.c | 255 +---------------- .../CMakeLists.txt | 35 --- .../main.c | 256 ------------------ .../resources/Roboto-Regular.ttf | Bin 168260 -> 0 bytes .../resources/RobotoMono-Medium.ttf | Bin 87172 -> 0 bytes .../resources/profile-picture.png | Bin 103413 -> 0 bytes examples/raylib-multi-context/CMakeLists.txt | 2 +- .../raylib-sidebar-scrolling-container/main.c | 12 +- examples/shared-layouts/clay-video-demo.c | 248 +++++++++++++++++ 11 files changed, 360 insertions(+), 623 deletions(-) delete mode 100644 examples/multi-context-raylib-sidebar-scrolling-container/CMakeLists.txt delete mode 100644 examples/multi-context-raylib-sidebar-scrolling-container/main.c delete mode 100644 examples/multi-context-raylib-sidebar-scrolling-container/resources/Roboto-Regular.ttf delete mode 100644 examples/multi-context-raylib-sidebar-scrolling-container/resources/RobotoMono-Medium.ttf delete mode 100644 examples/multi-context-raylib-sidebar-scrolling-container/resources/profile-picture.png create mode 100644 examples/shared-layouts/clay-video-demo.c diff --git a/clay.h b/clay.h index faf0bf2..fd0934f 100644 --- a/clay.h +++ b/clay.h @@ -212,9 +212,9 @@ typedef struct { typedef CLAY_PACKED_ENUM { CLAY__ELEMENT_CONFIG_TYPE_NONE = 0, CLAY__ELEMENT_CONFIG_TYPE_RECTANGLE = 1, - CLAY__ELEMENT_CONFIG_TYPE_BORDER_CONTAINER = 2, - CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER = 4, - CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER = 8, + CLAY__ELEMENT_CONFIG_TYPE_BORDER = 2, + CLAY__ELEMENT_CONFIG_TYPE_FLOATING = 4, + CLAY__ELEMENT_CONFIG_TYPE_SCROLL = 8, CLAY__ELEMENT_CONFIG_TYPE_IMAGE = 16, CLAY__ELEMENT_CONFIG_TYPE_TEXT = 32, CLAY__ELEMENT_CONFIG_TYPE_CUSTOM = 64, @@ -550,15 +550,6 @@ void Clay__ConfigureOpenElement(const Clay_ElementDeclaration config); void Clay__CloseElement(void); Clay_LayoutConfig * Clay__StoreLayoutConfig(Clay_LayoutConfig config); Clay_ElementId Clay__AttachId(Clay_ElementId id); -void Clay__AttachLayoutConfig(Clay_LayoutConfig *config); -void Clay__AttachElementConfig(Clay_ElementConfigUnion config, Clay__ElementConfigType type); -Clay_RectangleElementConfig * Clay__StoreRectangleElementConfig(Clay_RectangleElementConfig config); -Clay_TextElementConfig * Clay__StoreTextElementConfig(Clay_TextElementConfig config); -Clay_ImageElementConfig * Clay__StoreImageElementConfig(Clay_ImageElementConfig config); -Clay_FloatingElementConfig * Clay__StoreFloatingElementConfig(Clay_FloatingElementConfig config); -Clay_CustomElementConfig * Clay__StoreCustomElementConfig(Clay_CustomElementConfig config); -Clay_ScrollElementConfig * Clay__StoreScrollElementConfig(Clay_ScrollElementConfig config); -Clay_BorderElementConfig * Clay__StoreBorderElementConfig(Clay_BorderElementConfig config); Clay_ElementId Clay__HashString(Clay_String key, uint32_t offset, uint32_t seed); void Clay__OpenTextElement(Clay_String text, Clay_TextElementConfig *textConfig); uint32_t Clay__GetParentElementId(void); @@ -918,6 +909,26 @@ bool Clay__ElementHasConfig(Clay_LayoutElement *element, Clay__ElementConfigType return (element->configsEnabled & type); } +Clay_LayoutConfig * Clay__StoreLayoutConfig(Clay_LayoutConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &CLAY_LAYOUT_DEFAULT : Clay__LayoutConfigArray_Add(&Clay_GetCurrentContext()->layoutConfigs, config); } +Clay_RectangleElementConfig * Clay__StoreRectangleElementConfig(Clay_RectangleElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_RectangleElementConfig_DEFAULT : Clay__RectangleElementConfigArray_Add(&Clay_GetCurrentContext()->rectangleElementConfigs, config); } +Clay_TextElementConfig * Clay__StoreTextElementConfig(Clay_TextElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_TextElementConfig_DEFAULT : Clay__TextElementConfigArray_Add(&Clay_GetCurrentContext()->textElementConfigs, config); } +Clay_ImageElementConfig * Clay__StoreImageElementConfig(Clay_ImageElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_ImageElementConfig_DEFAULT : Clay__ImageElementConfigArray_Add(&Clay_GetCurrentContext()->imageElementConfigs, config); } +Clay_FloatingElementConfig * Clay__StoreFloatingElementConfig(Clay_FloatingElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_FloatingElementConfig_DEFAULT : Clay__FloatingElementConfigArray_Add(&Clay_GetCurrentContext()->floatingElementConfigs, config); } +Clay_CustomElementConfig * Clay__StoreCustomElementConfig(Clay_CustomElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_CustomElementConfig_DEFAULT : Clay__CustomElementConfigArray_Add(&Clay_GetCurrentContext()->customElementConfigs, config); } +Clay_ScrollElementConfig * Clay__StoreScrollElementConfig(Clay_ScrollElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_ScrollElementConfig_DEFAULT : Clay__ScrollElementConfigArray_Add(&Clay_GetCurrentContext()->scrollElementConfigs, config); } +Clay_BorderElementConfig * Clay__StoreBorderElementConfig(Clay_BorderElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_BorderElementConfig_DEFAULT : Clay__BorderElementConfigArray_Add(&Clay_GetCurrentContext()->borderElementConfigs, config); } + +Clay_ElementConfig Clay__AttachElementConfig(Clay_ElementConfigUnion config, Clay__ElementConfigType type) { + Clay_Context* context = Clay_GetCurrentContext(); + if (context->booleanWarnings.maxElementsExceeded) { + return CLAY__INIT(Clay_ElementConfig) CLAY__DEFAULT_STRUCT; + } + Clay_LayoutElement *openLayoutElement = Clay__GetOpenLayoutElement(); + openLayoutElement->elementConfigs.length++; + openLayoutElement->configsEnabled |= type; + return *Clay__ElementConfigArray_Add(&context->elementConfigs, CLAY__INIT(Clay_ElementConfig) { .type = type, .config = config }); +} + Clay_ElementConfigUnion Clay__FindElementConfigWithType(Clay_LayoutElement *element, Clay__ElementConfigType type) { for (int32_t i = 0; i < element->elementConfigs.length; i++) { Clay_ElementConfig *config = Clay__ElementConfigArraySlice_Get(&element->elementConfigs, i); @@ -928,6 +939,42 @@ Clay_ElementConfigUnion Clay__FindElementConfigWithType(Clay_LayoutElement *elem return CLAY__INIT(Clay_ElementConfigUnion) { NULL }; } +Clay_ElementConfig Clay__CurrentConfigUnion(Clay__ElementConfigType type) { + Clay_Context *context = Clay_GetCurrentContext(); + Clay_LayoutElement *openElement = Clay__GetOpenLayoutElement(); + if (Clay__ElementHasConfig(openElement, type)) { + return CLAY__INIT(Clay_ElementConfig) { .config = Clay__FindElementConfigWithType(openElement, type), .type = type }; + } + // Unhandled: structural changes to element + switch (type) { + case CLAY__ELEMENT_CONFIG_TYPE_NONE: + return CLAY__INIT(Clay_ElementConfig) CLAY__DEFAULT_STRUCT; + case CLAY__ELEMENT_CONFIG_TYPE_RECTANGLE: + return Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .rectangleElementConfig = Clay__RectangleElementConfigArray_Add(&Clay_GetCurrentContext()->rectangleElementConfigs, CLAY__INIT(Clay_RectangleElementConfig) CLAY__DEFAULT_STRUCT) }, type); + case CLAY__ELEMENT_CONFIG_TYPE_BORDER: + return Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .textElementConfig = Clay__TextElementConfigArray_Add(&Clay_GetCurrentContext()->textElementConfigs, CLAY__INIT(Clay_TextElementConfig) CLAY__DEFAULT_STRUCT) }, type); + case CLAY__ELEMENT_CONFIG_TYPE_FLOATING: + return Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .imageElementConfig = Clay__ImageElementConfigArray_Add(&Clay_GetCurrentContext()->imageElementConfigs, CLAY__INIT(Clay_ImageElementConfig) CLAY__DEFAULT_STRUCT) }, type); + case CLAY__ELEMENT_CONFIG_TYPE_SCROLL: + return Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .floatingElementConfig = Clay__FloatingElementConfigArray_Add(&Clay_GetCurrentContext()->floatingElementConfigs, CLAY__INIT(Clay_FloatingElementConfig) CLAY__DEFAULT_STRUCT) }, type); + case CLAY__ELEMENT_CONFIG_TYPE_IMAGE: + Clay__int32_tArray_Add(&context->imageElementPointers, context->layoutElements.length - 1); + return Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .customElementConfig = Clay__CustomElementConfigArray_Add(&Clay_GetCurrentContext()->customElementConfigs, CLAY__INIT(Clay_CustomElementConfig) CLAY__DEFAULT_STRUCT) }, type); + case CLAY__ELEMENT_CONFIG_TYPE_TEXT: + return Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .scrollElementConfig = Clay__ScrollElementConfigArray_Add(&Clay_GetCurrentContext()->scrollElementConfigs, CLAY__INIT(Clay_ScrollElementConfig) CLAY__DEFAULT_STRUCT) }, type); + case CLAY__ELEMENT_CONFIG_TYPE_CUSTOM: + return Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .borderElementConfig = Clay__BorderElementConfigArray_Add(&Clay_GetCurrentContext()->borderElementConfigs, CLAY__INIT(Clay_BorderElementConfig) CLAY__DEFAULT_STRUCT) }, type); + } +} + +Clay_RectangleElementConfig * Clay_CurrentConfigRectangle() { return Clay__CurrentConfigUnion(CLAY__ELEMENT_CONFIG_TYPE_RECTANGLE).config.rectangleElementConfig; } +Clay_TextElementConfig * Clay_CurrentConfigText() { return Clay__CurrentConfigUnion(CLAY__ELEMENT_CONFIG_TYPE_TEXT).config.textElementConfig; } +Clay_ImageElementConfig * Clay_CurrentConfigImage() { return Clay__CurrentConfigUnion(CLAY__ELEMENT_CONFIG_TYPE_IMAGE).config.imageElementConfig; } +Clay_FloatingElementConfig * Clay_CurrentConfigFloating() { return Clay__CurrentConfigUnion(CLAY__ELEMENT_CONFIG_TYPE_FLOATING).config.floatingElementConfig; } +Clay_CustomElementConfig * Clay_CurrentConfigCustom() { return Clay__CurrentConfigUnion(CLAY__ELEMENT_CONFIG_TYPE_CUSTOM).config.customElementConfig; } +Clay_ScrollElementConfig * Clay_CurrentConfigScroll() { return Clay__CurrentConfigUnion(CLAY__ELEMENT_CONFIG_TYPE_SCROLL).config.scrollElementConfig; } +Clay_BorderElementConfig * Clay_CurrentConfigBorder() { return Clay__CurrentConfigUnion(CLAY__ELEMENT_CONFIG_TYPE_BORDER).config.borderElementConfig; } + Clay_ElementId Clay__HashNumber(const uint32_t offset, const uint32_t seed) { uint32_t hash = seed; hash += (offset + 48); @@ -1261,8 +1308,8 @@ void Clay__CloseElement(void) { Clay_LayoutConfig *layoutConfig = openLayoutElement->layoutConfig; bool elementHasScrollHorizontal = false; bool elementHasScrollVertical = false; - if (Clay__ElementHasConfig(openLayoutElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER)) { - Clay_ScrollElementConfig *scrollConfig = Clay__FindElementConfigWithType(openLayoutElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER).scrollElementConfig; + if (Clay__ElementHasConfig(openLayoutElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL)) { + Clay_ScrollElementConfig *scrollConfig = Clay__FindElementConfigWithType(openLayoutElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL).scrollElementConfig; elementHasScrollHorizontal = scrollConfig->horizontal; elementHasScrollVertical = scrollConfig->vertical; context->openClipElementStack.length--; @@ -1335,7 +1382,7 @@ void Clay__CloseElement(void) { openLayoutElement->dimensions.height = 0; } - bool elementIsFloating = Clay__ElementHasConfig(openLayoutElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER); + bool elementIsFloating = Clay__ElementHasConfig(openLayoutElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING); // Close the currently open element int32_t closingElementIndex = Clay__int32_tArray_RemoveSwapback(&context->openLayoutElementStack, (int)context->openLayoutElementStack.length - 1); @@ -1402,7 +1449,7 @@ void Clay__OpenElement() { return; } Clay_LayoutElement layoutElement = CLAY__DEFAULT_STRUCT; - Clay_LayoutElement* openLayoutElement = Clay_LayoutElementArray_Add(&context->layoutElements, layoutElement); + Clay_LayoutElementArray_Add(&context->layoutElements, layoutElement); Clay__int32_tArray_Add(&context->openLayoutElementStack, context->layoutElements.length - 1); if (context->openClipElementStack.length > 0) { Clay__int32_tArray_Set(&context->layoutElementClipElementIds, context->layoutElements.length - 1, Clay__int32_tArray_GetValue(&context->openClipElementStack, (int)context->openClipElementStack.length - 1)); @@ -1493,14 +1540,14 @@ void Clay__ConfigureOpenElement(const Clay_ElementDeclaration declaration) { .clipElementId = clipElementId, .zIndex = floatingConfig.zIndex, }); - Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .floatingElementConfig = Clay__StoreFloatingElementConfig(declaration.floating) }, CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER); + Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .floatingElementConfig = Clay__StoreFloatingElementConfig(declaration.floating) }, CLAY__ELEMENT_CONFIG_TYPE_FLOATING); } } if (!Clay__MemCmp((char *)(&declaration.custom), (char *)(&Clay_CustomElementConfig_DEFAULT), sizeof(Clay_CustomElementConfig))) { Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .customElementConfig = Clay__StoreCustomElementConfig(declaration.custom) }, CLAY__ELEMENT_CONFIG_TYPE_CUSTOM); } if (!Clay__MemCmp((char *)(&declaration.scroll), (char *)(&Clay_ScrollElementConfig_DEFAULT), sizeof(Clay_ScrollElementConfig))) { - Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .scrollElementConfig = Clay__StoreScrollElementConfig(declaration.scroll) }, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER); + 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); // Retrieve or create cached data to track scroll position across frames Clay__ScrollContainerDataInternal *scrollOffset = CLAY__NULL; @@ -1520,7 +1567,7 @@ void Clay__ConfigureOpenElement(const Clay_ElementDeclaration declaration) { } } if (!Clay__MemCmp((char *)(&declaration.border), (char *)(&Clay_BorderElementConfig_DEFAULT), sizeof(Clay_BorderElementConfig))) { - Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .borderElementConfig = Clay__StoreBorderElementConfig(declaration.border) }, CLAY__ELEMENT_CONFIG_TYPE_BORDER_CONTAINER); + Clay__AttachElementConfig(CLAY__INIT(Clay_ElementConfigUnion) { .borderElementConfig = Clay__StoreBorderElementConfig(declaration.border) }, CLAY__ELEMENT_CONFIG_TYPE_BORDER); } } @@ -1645,8 +1692,8 @@ void Clay__SizeContainersAlongAxis(bool xAxis) { Clay__int32_tArray_Add(&bfsBuffer, (int32_t)root->layoutElementIndex); // Size floating containers to their parents - if (Clay__ElementHasConfig(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER)) { - Clay_FloatingElementConfig *floatingElementConfig = Clay__FindElementConfigWithType(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER).floatingElementConfig; + if (Clay__ElementHasConfig(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING)) { + Clay_FloatingElementConfig *floatingElementConfig = Clay__FindElementConfigWithType(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING).floatingElementConfig; Clay_LayoutElementHashMapItem *parentItem = Clay__GetHashMapItem(floatingElementConfig->parentId); if (parentItem && parentItem != &Clay_LayoutElementHashMapItem_DEFAULT) { Clay_LayoutElement *parentLayoutElement = parentItem->layoutElement; @@ -1722,8 +1769,8 @@ void Clay__SizeContainersAlongAxis(bool xAxis) { // The content is too large, compress the children as much as possible if (sizeToDistribute < 0) { // If the parent can scroll in the axis direction in this direction, don't compress children, just leave them alone - if (Clay__ElementHasConfig(parent, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER)) { - Clay_ScrollElementConfig *scrollElementConfig = Clay__FindElementConfigWithType(parent, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER).scrollElementConfig; + if (Clay__ElementHasConfig(parent, CLAY__ELEMENT_CONFIG_TYPE_SCROLL)) { + Clay_ScrollElementConfig *scrollElementConfig = Clay__FindElementConfigWithType(parent, CLAY__ELEMENT_CONFIG_TYPE_SCROLL).scrollElementConfig; if (((xAxis && scrollElementConfig->horizontal) || (!xAxis && scrollElementConfig->vertical))) { continue; } @@ -1764,8 +1811,8 @@ void Clay__SizeContainersAlongAxis(bool xAxis) { // If we're laying out the children of a scroll panel, grow containers expand to the height of the inner content, not the outer container float maxSize = parentSize - parentPadding; - if (Clay__ElementHasConfig(parent, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER)) { - Clay_ScrollElementConfig *scrollElementConfig = Clay__FindElementConfigWithType(parent, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER).scrollElementConfig; + if (Clay__ElementHasConfig(parent, CLAY__ELEMENT_CONFIG_TYPE_SCROLL)) { + Clay_ScrollElementConfig *scrollElementConfig = Clay__FindElementConfigWithType(parent, CLAY__ELEMENT_CONFIG_TYPE_SCROLL).scrollElementConfig; if (((xAxis && scrollElementConfig->horizontal) || (!xAxis && scrollElementConfig->vertical))) { maxSize = CLAY__MAX(maxSize, innerContentSize); } @@ -1979,8 +2026,8 @@ void Clay__CalculateFinalLayout(void) { Clay_Vector2 rootPosition = CLAY__DEFAULT_STRUCT; Clay_LayoutElementHashMapItem *parentHashMapItem = Clay__GetHashMapItem(root->parentId); // Position root floating containers - if (Clay__ElementHasConfig(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER) && parentHashMapItem) { - Clay_FloatingElementConfig *config = Clay__FindElementConfigWithType(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER).floatingElementConfig; + if (Clay__ElementHasConfig(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING) && parentHashMapItem) { + Clay_FloatingElementConfig *config = Clay__FindElementConfigWithType(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING).floatingElementConfig; Clay_Dimensions rootDimensions = rootElement->dimensions; Clay_BoundingBox parentBoundingBox = parentHashMapItem->boundingBox; // Set X position @@ -2038,7 +2085,7 @@ void Clay__CalculateFinalLayout(void) { if (clipHashMapItem) { // Floating elements that are attached to scrolling contents won't be correctly positioned if external scroll handling is enabled, fix here if (context->externalScrollHandlingEnabled) { - Clay_ScrollElementConfig *scrollConfig = Clay__FindElementConfigWithType(clipHashMapItem->layoutElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER).scrollElementConfig; + Clay_ScrollElementConfig *scrollConfig = Clay__FindElementConfigWithType(clipHashMapItem->layoutElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL).scrollElementConfig; for (int32_t i = 0; i < context->scrollContainerDatas.length; i++) { Clay__ScrollContainerDataInternal *mapping = Clay__ScrollContainerDataInternalArray_Get(&context->scrollContainerDatas, i); if (mapping->layoutElement == clipHashMapItem->layoutElement) { @@ -2076,8 +2123,8 @@ void Clay__CalculateFinalLayout(void) { context->treeNodeVisited.internalArray[dfsBuffer.length - 1] = true; Clay_BoundingBox currentElementBoundingBox = { currentElementTreeNode->position.x, currentElementTreeNode->position.y, currentElement->dimensions.width, currentElement->dimensions.height }; - if (Clay__ElementHasConfig(currentElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER)) { - Clay_FloatingElementConfig *floatingElementConfig = Clay__FindElementConfigWithType(currentElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER).floatingElementConfig; + if (Clay__ElementHasConfig(currentElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING)) { + Clay_FloatingElementConfig *floatingElementConfig = Clay__FindElementConfigWithType(currentElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING).floatingElementConfig; Clay_Dimensions expand = floatingElementConfig->expand; currentElementBoundingBox.x -= expand.width; currentElementBoundingBox.width += expand.width * 2; @@ -2087,8 +2134,8 @@ void Clay__CalculateFinalLayout(void) { Clay__ScrollContainerDataInternal *scrollContainerData = CLAY__NULL; // Apply scroll offsets to container - if (Clay__ElementHasConfig(currentElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER)) { - Clay_ScrollElementConfig *scrollConfig = Clay__FindElementConfigWithType(currentElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER).scrollElementConfig; + if (Clay__ElementHasConfig(currentElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL)) { + Clay_ScrollElementConfig *scrollConfig = Clay__FindElementConfigWithType(currentElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL).scrollElementConfig; // This linear scan could theoretically be slow under very strange conditions, but I can't imagine a real UI with more than a few 10's of scroll containers for (int32_t i = 0; i < context->scrollContainerDatas.length; i++) { @@ -2126,7 +2173,7 @@ void Clay__CalculateFinalLayout(void) { int32_t next = sortedConfigIndexes[i + 1]; Clay__ElementConfigType currentType = Clay__ElementConfigArraySlice_Get(¤tElement->elementConfigs, current)->type; Clay__ElementConfigType nextType = Clay__ElementConfigArraySlice_Get(¤tElement->elementConfigs, next)->type; - if (nextType == CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER || currentType == CLAY__ELEMENT_CONFIG_TYPE_BORDER_CONTAINER) { + if (nextType == CLAY__ELEMENT_CONFIG_TYPE_SCROLL || currentType == CLAY__ELEMENT_CONFIG_TYPE_BORDER) { sortedConfigIndexes[i] = next; sortedConfigIndexes[i + 1] = current; } @@ -2151,16 +2198,16 @@ void Clay__CalculateFinalLayout(void) { renderCommand.commandType = CLAY_RENDER_COMMAND_TYPE_RECTANGLE; break; } - case CLAY__ELEMENT_CONFIG_TYPE_BORDER_CONTAINER: { + case CLAY__ELEMENT_CONFIG_TYPE_BORDER: { shouldRender = false; break; } - case CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER: { + case CLAY__ELEMENT_CONFIG_TYPE_FLOATING: { renderCommand.commandType = CLAY_RENDER_COMMAND_TYPE_NONE; shouldRender = false; break; } - case CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER: { + case CLAY__ELEMENT_CONFIG_TYPE_SCROLL: { renderCommand.commandType = CLAY_RENDER_COMMAND_TYPE_SCISSOR_START; shouldRender = true; break; @@ -2259,9 +2306,9 @@ void Clay__CalculateFinalLayout(void) { else { // DFS is returning upwards backwards bool closeScrollElement = false; - if (Clay__ElementHasConfig(currentElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER)) { + if (Clay__ElementHasConfig(currentElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL)) { closeScrollElement = true; - Clay_ScrollElementConfig *scrollConfig = Clay__FindElementConfigWithType(currentElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER).scrollElementConfig; + Clay_ScrollElementConfig *scrollConfig = Clay__FindElementConfigWithType(currentElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL).scrollElementConfig; for (int32_t i = 0; i < context->scrollContainerDatas.length; i++) { Clay__ScrollContainerDataInternal *mapping = Clay__ScrollContainerDataInternalArray_Get(&context->scrollContainerDatas, i); if (mapping->layoutElement == currentElement) { @@ -2275,13 +2322,13 @@ void Clay__CalculateFinalLayout(void) { } } - if (Clay__ElementHasConfig(currentElement, CLAY__ELEMENT_CONFIG_TYPE_BORDER_CONTAINER)) { + if (Clay__ElementHasConfig(currentElement, CLAY__ELEMENT_CONFIG_TYPE_BORDER)) { Clay_LayoutElementHashMapItem *currentElementData = Clay__GetHashMapItem(currentElement->id); Clay_BoundingBox currentElementBoundingBox = currentElementData->boundingBox; // Culling - Don't bother to generate render commands for rectangles entirely outside the screen - this won't stop their children from being rendered if they overflow if (!Clay__ElementIsOffscreen(¤tElementBoundingBox)) { - Clay_BorderElementConfig *borderConfig = Clay__FindElementConfigWithType(currentElement, CLAY__ELEMENT_CONFIG_TYPE_BORDER_CONTAINER).borderElementConfig; + Clay_BorderElementConfig *borderConfig = Clay__FindElementConfigWithType(currentElement, CLAY__ELEMENT_CONFIG_TYPE_BORDER).borderElementConfig; Clay_RenderCommand renderCommand = { .boundingBox = currentElementBoundingBox, .config = { .borderElementConfig = borderConfig }, @@ -2401,32 +2448,6 @@ Clay_ElementId Clay__AttachId(Clay_ElementId elementId) { return elementId; } -void Clay__AttachLayoutConfig(Clay_LayoutConfig *config) { - Clay_Context* context = Clay_GetCurrentContext(); - if (context->booleanWarnings.maxElementsExceeded) { - return; - } - Clay__GetOpenLayoutElement()->layoutConfig = config; -} -void Clay__AttachElementConfig(Clay_ElementConfigUnion config, Clay__ElementConfigType type) { - Clay_Context* context = Clay_GetCurrentContext(); - if (context->booleanWarnings.maxElementsExceeded) { - return; - } - Clay_LayoutElement *openLayoutElement = Clay__GetOpenLayoutElement(); - openLayoutElement->elementConfigs.length++; - openLayoutElement->configsEnabled |= type; - Clay__ElementConfigArray_Add(&context->elementConfigs, CLAY__INIT(Clay_ElementConfig) { .type = type, .config = config }); -} -Clay_LayoutConfig * Clay__StoreLayoutConfig(Clay_LayoutConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &CLAY_LAYOUT_DEFAULT : Clay__LayoutConfigArray_Add(&Clay_GetCurrentContext()->layoutConfigs, config); } -Clay_RectangleElementConfig * Clay__StoreRectangleElementConfig(Clay_RectangleElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_RectangleElementConfig_DEFAULT : Clay__RectangleElementConfigArray_Add(&Clay_GetCurrentContext()->rectangleElementConfigs, config); } -Clay_TextElementConfig * Clay__StoreTextElementConfig(Clay_TextElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_TextElementConfig_DEFAULT : Clay__TextElementConfigArray_Add(&Clay_GetCurrentContext()->textElementConfigs, config); } -Clay_ImageElementConfig * Clay__StoreImageElementConfig(Clay_ImageElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_ImageElementConfig_DEFAULT : Clay__ImageElementConfigArray_Add(&Clay_GetCurrentContext()->imageElementConfigs, config); } -Clay_FloatingElementConfig * Clay__StoreFloatingElementConfig(Clay_FloatingElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_FloatingElementConfig_DEFAULT : Clay__FloatingElementConfigArray_Add(&Clay_GetCurrentContext()->floatingElementConfigs, config); } -Clay_CustomElementConfig * Clay__StoreCustomElementConfig(Clay_CustomElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_CustomElementConfig_DEFAULT : Clay__CustomElementConfigArray_Add(&Clay_GetCurrentContext()->customElementConfigs, config); } -Clay_ScrollElementConfig * Clay__StoreScrollElementConfig(Clay_ScrollElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_ScrollElementConfig_DEFAULT : Clay__ScrollElementConfigArray_Add(&Clay_GetCurrentContext()->scrollElementConfigs, config); } -Clay_BorderElementConfig * Clay__StoreBorderElementConfig(Clay_BorderElementConfig config) { return Clay_GetCurrentContext()->booleanWarnings.maxElementsExceeded ? &Clay_BorderElementConfig_DEFAULT : Clay__BorderElementConfigArray_Add(&Clay_GetCurrentContext()->borderElementConfigs, config); } - #pragma region DebugTools Clay_Color CLAY__DEBUGVIEW_COLOR_1 = {58, 56, 52, 255}; Clay_Color CLAY__DEBUGVIEW_COLOR_2 = {62, 60, 58, 255}; @@ -2449,9 +2470,9 @@ Clay__DebugElementConfigTypeLabelConfig Clay__DebugGetElementConfigTypeLabel(Cla case CLAY__ELEMENT_CONFIG_TYPE_RECTANGLE: return CLAY__INIT(Clay__DebugElementConfigTypeLabelConfig) { CLAY_STRING("Rectangle"), {243,134,48,255} }; case CLAY__ELEMENT_CONFIG_TYPE_TEXT: return CLAY__INIT(Clay__DebugElementConfigTypeLabelConfig) { CLAY_STRING("Text"), {105,210,231,255} }; case CLAY__ELEMENT_CONFIG_TYPE_IMAGE: return CLAY__INIT(Clay__DebugElementConfigTypeLabelConfig) { CLAY_STRING("Image"), {121,189,154,255} }; - case CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER: return CLAY__INIT(Clay__DebugElementConfigTypeLabelConfig) { CLAY_STRING("Floating"), {250,105,0,255} }; - case CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER: return CLAY__INIT(Clay__DebugElementConfigTypeLabelConfig) { CLAY_STRING("Scroll"), {242,196,90,255} }; - case CLAY__ELEMENT_CONFIG_TYPE_BORDER_CONTAINER: return CLAY__INIT(Clay__DebugElementConfigTypeLabelConfig) { CLAY_STRING("Border"), {108,91,123, 255} }; + case CLAY__ELEMENT_CONFIG_TYPE_FLOATING: return CLAY__INIT(Clay__DebugElementConfigTypeLabelConfig) { CLAY_STRING("Floating"), {250,105,0,255} }; + case CLAY__ELEMENT_CONFIG_TYPE_SCROLL: return CLAY__INIT(Clay__DebugElementConfigTypeLabelConfig) {CLAY_STRING("Scroll"), {242, 196, 90, 255} }; + case CLAY__ELEMENT_CONFIG_TYPE_BORDER: return CLAY__INIT(Clay__DebugElementConfigTypeLabelConfig) {CLAY_STRING("Border"), {108, 91, 123, 255} }; case CLAY__ELEMENT_CONFIG_TYPE_CUSTOM: return CLAY__INIT(Clay__DebugElementConfigTypeLabelConfig) { CLAY_STRING("Custom"), {11,72,107,255} }; default: break; } @@ -2929,7 +2950,7 @@ void Clay__RenderDebugView(void) { } break; } - case CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER: { + case CLAY__ELEMENT_CONFIG_TYPE_SCROLL: { Clay_ScrollElementConfig *scrollConfig = elementConfig->config.scrollElementConfig; CLAY({ .layout = { .padding = attributeConfigPadding, .childGap = 8, .layoutDirection = CLAY_TOP_TO_BOTTOM } }) { // .vertical @@ -2941,7 +2962,7 @@ void Clay__RenderDebugView(void) { } break; } - case CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER: { + case CLAY__ELEMENT_CONFIG_TYPE_FLOATING: { Clay_FloatingElementConfig *floatingConfig = elementConfig->config.floatingElementConfig; CLAY({ .layout = { .padding = attributeConfigPadding, .childGap = 8, .layoutDirection = CLAY_TOP_TO_BOTTOM } }) { // .offset @@ -2972,7 +2993,7 @@ void Clay__RenderDebugView(void) { } break; } - case CLAY__ELEMENT_CONFIG_TYPE_BORDER_CONTAINER: { + case CLAY__ELEMENT_CONFIG_TYPE_BORDER: { Clay_BorderElementConfig *borderConfig = elementConfig->config.borderElementConfig; CLAY({ .id = CLAY_ID("Clay__DebugViewElementInfoBorderBody"), .layout = { .padding = attributeConfigPadding, .childGap = 8, .layoutDirection = CLAY_TOP_TO_BOTTOM } }) { // .left @@ -3195,8 +3216,8 @@ void Clay_SetPointerState(Clay_Vector2 position, bool isPointerDown) { } Clay_LayoutElement *rootElement = Clay_LayoutElementArray_Get(&context->layoutElements, root->layoutElementIndex); - if (found && Clay__ElementHasConfig(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER) && - Clay__FindElementConfigWithType(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER).floatingElementConfig->pointerCaptureMode == CLAY_POINTER_CAPTURE_MODE_CAPTURE) { + if (found && Clay__ElementHasConfig(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING) && + Clay__FindElementConfigWithType(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING).floatingElementConfig->pointerCaptureMode == CLAY_POINTER_CAPTURE_MODE_CAPTURE) { break; } } @@ -3317,7 +3338,7 @@ void Clay_UpdateScrollContainers(bool enableDragScrolling, Clay_Vector2 scrollDe if (highestPriorityElementIndex > -1 && highestPriorityScrollData) { Clay_LayoutElement *scrollElement = highestPriorityScrollData->layoutElement; - Clay_ScrollElementConfig *scrollConfig = Clay__FindElementConfigWithType(scrollElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER).scrollElementConfig; + Clay_ScrollElementConfig *scrollConfig = Clay__FindElementConfigWithType(scrollElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL).scrollElementConfig; bool canScrollVertically = scrollConfig->vertical && highestPriorityScrollData->contentSize.height > scrollElement->dimensions.height; bool canScrollHorizontally = scrollConfig->horizontal && highestPriorityScrollData->contentSize.width > scrollElement->dimensions.width; // Handle wheel scroll @@ -3471,7 +3492,7 @@ Clay_ScrollContainerData Clay_GetScrollContainerData(Clay_ElementId id) { .scrollPosition = &scrollContainerData->scrollPosition, .scrollContainerDimensions = { scrollContainerData->boundingBox.width, scrollContainerData->boundingBox.height }, .contentDimensions = scrollContainerData->contentSize, - .config = *Clay__FindElementConfigWithType(scrollContainerData->layoutElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL_CONTAINER).scrollElementConfig, + .config = *Clay__FindElementConfigWithType(scrollContainerData->layoutElement, CLAY__ELEMENT_CONFIG_TYPE_SCROLL).scrollElementConfig, .found = true }; } diff --git a/examples/introducing-clay-video-demo/CMakeLists.txt b/examples/introducing-clay-video-demo/CMakeLists.txt index a59d678..3c56dce 100644 --- a/examples/introducing-clay-video-demo/CMakeLists.txt +++ b/examples/introducing-clay-video-demo/CMakeLists.txt @@ -28,7 +28,7 @@ target_link_libraries(clay_examples_introducing_clay_video_demo PUBLIC raylib) if(MSVC) set(CMAKE_C_FLAGS_DEBUG "/D CLAY_DEBUG") else() - set(CMAKE_C_FLAGS_DEBUG "-Wall -Werror -Wno-error=missing-braces -DCLAY_DEBUG") + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") set(CMAKE_C_FLAGS_RELEASE "-O3") endif() diff --git a/examples/introducing-clay-video-demo/main.c b/examples/introducing-clay-video-demo/main.c index 7f3ae24..a017b7c 100644 --- a/examples/introducing-clay-video-demo/main.c +++ b/examples/introducing-clay-video-demo/main.c @@ -1,81 +1,14 @@ #define CLAY_IMPLEMENTATION #include "../../clay.h" #include "../../renderers/raylib/clay_renderer_raylib.c" - -const int FONT_ID_BODY_16 = 0; -Clay_Color COLOR_WHITE = { 255, 255, 255, 255}; - -void RenderHeaderButton(Clay_String text) { - CLAY( - CLAY_LAYOUT({ .padding = { 16, 16, 8, 8 }}), - CLAY_RECTANGLE({ - .color = { 140, 140, 140, 255 }, - .cornerRadius = 5 - }) - ) { - CLAY_TEXT(text, CLAY_TEXT_CONFIG({ - .fontId = FONT_ID_BODY_16, - .fontSize = 16, - .textColor = { 255, 255, 255, 255 } - })); - } -} - -void RenderDropdownMenuItem(Clay_String text) { - CLAY(CLAY_LAYOUT({ .padding = CLAY_PADDING_ALL(16)})) { - CLAY_TEXT(text, CLAY_TEXT_CONFIG({ - .fontId = FONT_ID_BODY_16, - .fontSize = 16, - .textColor = { 255, 255, 255, 255 } - })); - } -} - -typedef struct { - Clay_String title; - Clay_String contents; -} Document; - -typedef struct { - Document *documents; - uint32_t length; -} DocumentArray; - -DocumentArray documents = { - .documents = NULL, // TODO figure out if it's possible to const init this list - .length = 5 -}; - -uint32_t selectedDocumentIndex = 0; - -void HandleSidebarInteraction( - Clay_ElementId elementId, - Clay_PointerData pointerData, - intptr_t userData -) { - // If this button was clicked - if (pointerData.state == CLAY_POINTER_DATA_PRESSED_THIS_FRAME) { - if (userData >= 0 && userData < documents.length) { - // Select the corresponding document - selectedDocumentIndex = userData; - } - } -} +#include "../shared-layouts/clay-video-demo.c" // This function is new since the video was published void HandleClayErrors(Clay_ErrorData errorData) { printf("%s", errorData.errorText.chars); } - int main(void) { - documents.documents = (Document[]) { - { .title = CLAY_STRING("Squirrels"), .contents = CLAY_STRING("The Secret Life of Squirrels: Nature's Clever Acrobats\n""Squirrels are often overlooked creatures, dismissed as mere park inhabitants or backyard nuisances. Yet, beneath their fluffy tails and twitching noses lies an intricate world of cunning, agility, and survival tactics that are nothing short of fascinating. As one of the most common mammals in North America, squirrels have adapted to a wide range of environments from bustling urban centers to tranquil forests and have developed a variety of unique behaviors that continue to intrigue scientists and nature enthusiasts alike.\n""\n""Master Tree Climbers\n""At the heart of a squirrel's skill set is its impressive ability to navigate trees with ease. Whether they're darting from branch to branch or leaping across wide gaps, squirrels possess an innate talent for acrobatics. Their powerful hind legs, which are longer than their front legs, give them remarkable jumping power. With a tail that acts as a counterbalance, squirrels can leap distances of up to ten times the length of their body, making them some of the best aerial acrobats in the animal kingdom.\n""But it's not just their agility that makes them exceptional climbers. Squirrels' sharp, curved claws allow them to grip tree bark with precision, while the soft pads on their feet provide traction on slippery surfaces. Their ability to run at high speeds and scale vertical trunks with ease is a testament to the evolutionary adaptations that have made them so successful in their arboreal habitats.\n""\n""Food Hoarders Extraordinaire\n""Squirrels are often seen frantically gathering nuts, seeds, and even fungi in preparation for winter. While this behavior may seem like instinctual hoarding, it is actually a survival strategy that has been honed over millions of years. Known as \"scatter hoarding,\" squirrels store their food in a variety of hidden locations, often burying it deep in the soil or stashing it in hollowed-out tree trunks.\n""Interestingly, squirrels have an incredible memory for the locations of their caches. Research has shown that they can remember thousands of hiding spots, often returning to them months later when food is scarce. However, they don't always recover every stash some forgotten caches eventually sprout into new trees, contributing to forest regeneration. This unintentional role as forest gardeners highlights the ecological importance of squirrels in their ecosystems.\n""\n""The Great Squirrel Debate: Urban vs. Wild\n""While squirrels are most commonly associated with rural or wooded areas, their adaptability has allowed them to thrive in urban environments as well. In cities, squirrels have become adept at finding food sources in places like parks, streets, and even garbage cans. However, their urban counterparts face unique challenges, including traffic, predators, and the lack of natural shelters. Despite these obstacles, squirrels in urban areas are often observed using human infrastructure such as buildings, bridges, and power lines as highways for their acrobatic escapades.\n""There is, however, a growing concern regarding the impact of urban life on squirrel populations. Pollution, deforestation, and the loss of natural habitats are making it more difficult for squirrels to find adequate food and shelter. As a result, conservationists are focusing on creating squirrel-friendly spaces within cities, with the goal of ensuring these resourceful creatures continue to thrive in both rural and urban landscapes.\n""\n""A Symbol of Resilience\n""In many cultures, squirrels are symbols of resourcefulness, adaptability, and preparation. Their ability to thrive in a variety of environments while navigating challenges with agility and grace serves as a reminder of the resilience inherent in nature. Whether you encounter them in a quiet forest, a city park, or your own backyard, squirrels are creatures that never fail to amaze with their endless energy and ingenuity.\n""In the end, squirrels may be small, but they are mighty in their ability to survive and thrive in a world that is constantly changing. So next time you spot one hopping across a branch or darting across your lawn, take a moment to appreciate the remarkable acrobat at work a true marvel of the natural world.\n") }, - { .title = CLAY_STRING("Lorem Ipsum"), .contents = CLAY_STRING("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.") }, - { .title = CLAY_STRING("Vacuum Instructions"), .contents = CLAY_STRING("Chapter 3: Getting Started - Unpacking and Setup\n""\n""Congratulations on your new SuperClean Pro 5000 vacuum cleaner! In this section, we will guide you through the simple steps to get your vacuum up and running. Before you begin, please ensure that you have all the components listed in the \"Package Contents\" section on page 2.\n""\n""1. Unboxing Your Vacuum\n""Carefully remove the vacuum cleaner from the box. Avoid using sharp objects that could damage the product. Once removed, place the unit on a flat, stable surface to proceed with the setup. Inside the box, you should find:\n""\n"" The main vacuum unit\n"" A telescoping extension wand\n"" A set of specialized cleaning tools (crevice tool, upholstery brush, etc.)\n"" A reusable dust bag (if applicable)\n"" A power cord with a 3-prong plug\n"" A set of quick-start instructions\n""\n""2. Assembling Your Vacuum\n""Begin by attaching the extension wand to the main body of the vacuum cleaner. Line up the connectors and twist the wand into place until you hear a click. Next, select the desired cleaning tool and firmly attach it to the wand's end, ensuring it is securely locked in.\n""\n""For models that require a dust bag, slide the bag into the compartment at the back of the vacuum, making sure it is properly aligned with the internal mechanism. If your vacuum uses a bagless system, ensure the dust container is correctly seated and locked in place before use.\n""\n""3. Powering On\n""To start the vacuum, plug the power cord into a grounded electrical outlet. Once plugged in, locate the power switch, usually positioned on the side of the handle or body of the unit, depending on your model. Press the switch to the \"On\" position, and you should hear the motor begin to hum. If the vacuum does not power on, check that the power cord is securely plugged in, and ensure there are no blockages in the power switch.\n""\n""Note: Before first use, ensure that the vacuum filter (if your model has one) is properly installed. If unsure, refer to \"Section 5: Maintenance\" for filter installation instructions.") }, - { .title = CLAY_STRING("Article 4"), .contents = CLAY_STRING("Article 4") }, - { .title = CLAY_STRING("Article 5"), .contents = CLAY_STRING("Article 5") }, - }; Clay_Raylib_Initialize(1024, 768, "Introducing Clay Demo", FLAG_WINDOW_RESIZABLE | FLAG_WINDOW_HIGHDPI | FLAG_MSAA_4X_HINT | FLAG_VSYNC_HINT); // Extra parameters to this function are new since the video was published uint64_t clayRequiredMemory = Clay_MinMemorySize(); @@ -91,11 +24,13 @@ int main(void) { }; SetTextureFilter(Raylib_fonts[FONT_ID_BODY_16].font.texture, TEXTURE_FILTER_BILINEAR); + ClayVideoDemo_Initialize(); + while (!WindowShouldClose()) { // Run once per frame Clay_SetLayoutDimensions((Clay_Dimensions) { - .width = GetScreenWidth(), - .height = GetScreenHeight() + .width = GetScreenWidth(), + .height = GetScreenHeight() }); Vector2 mousePosition = GetMousePosition(); @@ -110,187 +45,9 @@ int main(void) { GetFrameTime() ); - Clay_Sizing layoutExpand = { - .width = CLAY_SIZING_GROW(0), - .height = CLAY_SIZING_GROW(0) - }; - - Clay_RectangleElementConfig contentBackgroundConfig = { - .color = { 90, 90, 90, 255 }, - .cornerRadius = CLAY_CORNER_RADIUS(8) - }; - Clay_BeginLayout(); - // Build UI here - CLAY( - CLAY_ID("OuterContainer"), - CLAY_RECTANGLE({ .color = { 43, 41, 51, 255 } }), - CLAY_LAYOUT({ - .layoutDirection = CLAY_TOP_TO_BOTTOM, - .sizing = layoutExpand, - .padding = CLAY_PADDING_ALL(16), - .childGap = 16 - }) - ) { - // Child elements go inside braces - CLAY( - CLAY_ID("HeaderBar"), - CLAY_RECTANGLE(contentBackgroundConfig), - CLAY_LAYOUT({ - .sizing = { - .height = CLAY_SIZING_FIXED(60), - .width = CLAY_SIZING_GROW(0) - }, - .padding = { 16, 16, 0, 0 }, - .childGap = 16, - .childAlignment = { - .y = CLAY_ALIGN_Y_CENTER - } - }) - ) { - // Header buttons go here - CLAY( - CLAY_ID("FileButton"), - CLAY_LAYOUT({ .padding = { 16, 16, 8, 8 }}), - CLAY_RECTANGLE({ - .color = { 140, 140, 140, 255 }, - .cornerRadius = CLAY_CORNER_RADIUS(5) - }) - ) { - CLAY_TEXT(CLAY_STRING("File"), CLAY_TEXT_CONFIG({ - .fontId = FONT_ID_BODY_16, - .fontSize = 16, - .textColor = { 255, 255, 255, 255 } - })); - bool fileMenuVisible = - Clay_PointerOver(Clay_GetElementId(CLAY_STRING("FileButton"))) - || - Clay_PointerOver(Clay_GetElementId(CLAY_STRING("FileMenu"))); - - if (fileMenuVisible) { // Below has been changed slightly to fix the small bug where the menu would dismiss when mousing over the top gap - CLAY( - CLAY_ID("FileMenu"), - CLAY_FLOATING({ - .attachment = { - .parent = CLAY_ATTACH_POINT_LEFT_BOTTOM - }, - }), - CLAY_LAYOUT({ - .padding = {0, 0, 8, 8 } - }) - ) { - CLAY( - CLAY_LAYOUT({ - .layoutDirection = CLAY_TOP_TO_BOTTOM, - .sizing = { - .width = CLAY_SIZING_FIXED(200) - }, - }), - CLAY_RECTANGLE({ - .color = { 40, 40, 40, 255 }, - .cornerRadius = CLAY_CORNER_RADIUS(8) - }) - ) { - // Render dropdown items here - RenderDropdownMenuItem(CLAY_STRING("New")); - RenderDropdownMenuItem(CLAY_STRING("Open")); - RenderDropdownMenuItem(CLAY_STRING("Close")); - } - } - } - } - RenderHeaderButton(CLAY_STRING("Edit")); - CLAY(CLAY_LAYOUT({ .sizing = { CLAY_SIZING_GROW(0) }})) {} - RenderHeaderButton(CLAY_STRING("Upload")); - RenderHeaderButton(CLAY_STRING("Media")); - RenderHeaderButton(CLAY_STRING("Support")); - } - - CLAY( - CLAY_ID("LowerContent"), - CLAY_LAYOUT({ .sizing = layoutExpand, .childGap = 16 }) - ) { - CLAY( - CLAY_ID("Sidebar"), - CLAY_RECTANGLE(contentBackgroundConfig), - CLAY_LAYOUT({ - .layoutDirection = CLAY_TOP_TO_BOTTOM, - .padding = CLAY_PADDING_ALL(16), - .childGap = 8, - .sizing = { - .width = CLAY_SIZING_FIXED(250), - .height = CLAY_SIZING_GROW(0) - } - }) - ) { - for (int i = 0; i < documents.length; i++) { - Document document = documents.documents[i]; - Clay_LayoutConfig sidebarButtonLayout = { - .sizing = { .width = CLAY_SIZING_GROW(0) }, - .padding = CLAY_PADDING_ALL(16) - }; - - if (i == selectedDocumentIndex) { - CLAY( - CLAY_LAYOUT(sidebarButtonLayout), - CLAY_RECTANGLE({ - .color = { 120, 120, 120, 255 }, - .cornerRadius = CLAY_CORNER_RADIUS(8), - }) - ) { - CLAY_TEXT(document.title, CLAY_TEXT_CONFIG({ - .fontId = FONT_ID_BODY_16, - .fontSize = 20, - .textColor = { 255, 255, 255, 255 } - })); - } - } else { - CLAY( - CLAY_LAYOUT(sidebarButtonLayout), - Clay_OnHover(HandleSidebarInteraction, i), - Clay_Hovered() - ? CLAY_RECTANGLE({ - .color = { 120, 120, 120, 120 }, - .cornerRadius = CLAY_CORNER_RADIUS(8) - }) - : 0 - ) { - CLAY_TEXT(document.title, CLAY_TEXT_CONFIG({ - .fontId = FONT_ID_BODY_16, - .fontSize = 20, - .textColor = { 255, 255, 255, 255 } - })); - } - } - } - } - - CLAY( - CLAY_ID("MainContent"), - CLAY_RECTANGLE(contentBackgroundConfig), - CLAY_SCROLL({ .vertical = true }), - CLAY_LAYOUT({ - .layoutDirection = CLAY_TOP_TO_BOTTOM, - .childGap = 16, - .padding = CLAY_PADDING_ALL(16), - .sizing = layoutExpand - }) - ) { - Document selectedDocument = documents.documents[selectedDocumentIndex]; - CLAY_TEXT(selectedDocument.title, CLAY_TEXT_CONFIG({ - .fontId = FONT_ID_BODY_16, - .fontSize = 24, - .textColor = COLOR_WHITE - })); - CLAY_TEXT(selectedDocument.contents, CLAY_TEXT_CONFIG({ - .fontId = FONT_ID_BODY_16, - .fontSize = 24, - .textColor = COLOR_WHITE - })); - } - } - } + ClayVideoDemo_CreateLayout(); Clay_RenderCommandArray renderCommands = Clay_EndLayout(); diff --git a/examples/multi-context-raylib-sidebar-scrolling-container/CMakeLists.txt b/examples/multi-context-raylib-sidebar-scrolling-container/CMakeLists.txt deleted file mode 100644 index 17ecc4e..0000000 --- a/examples/multi-context-raylib-sidebar-scrolling-container/CMakeLists.txt +++ /dev/null @@ -1,35 +0,0 @@ -cmake_minimum_required(VERSION 3.27) -project(clay_examples_multi_context_raylib_sidebar_scrolling_container C) -set(CMAKE_C_STANDARD 99) - -# Adding Raylib -include(FetchContent) -set(FETCHCONTENT_QUIET FALSE) -set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) # don't build the supplied examples -set(BUILD_GAMES OFF CACHE BOOL "" FORCE) # don't build the supplied example games - -FetchContent_Declare( - raylib - GIT_REPOSITORY "https://github.com/raysan5/raylib.git" - GIT_TAG "master" - GIT_PROGRESS TRUE - GIT_SHALLOW TRUE -) - -FetchContent_MakeAvailable(raylib) - -add_executable(clay_examples_multi_context_raylib_sidebar_scrolling_container main.c) - -target_compile_options(clay_examples_multi_context_raylib_sidebar_scrolling_container PUBLIC) -target_include_directories(clay_examples_multi_context_raylib_sidebar_scrolling_container PUBLIC .) - -target_link_libraries(clay_examples_multi_context_raylib_sidebar_scrolling_container PUBLIC raylib) - -set(CMAKE_CXX_FLAGS_DEBUG "-Wall -Werror -Wno-error=missing-braces -DCLAY_DEBUG") -set(CMAKE_CXX_FLAGS_RELEASE "-O3") - -add_custom_command( - TARGET clay_examples_multi_context_raylib_sidebar_scrolling_container POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${CMAKE_CURRENT_SOURCE_DIR}/resources - ${CMAKE_CURRENT_BINARY_DIR}/resources) diff --git a/examples/multi-context-raylib-sidebar-scrolling-container/main.c b/examples/multi-context-raylib-sidebar-scrolling-container/main.c deleted file mode 100644 index 251add1..0000000 --- a/examples/multi-context-raylib-sidebar-scrolling-container/main.c +++ /dev/null @@ -1,256 +0,0 @@ -#define CLAY_IMPLEMENTATION -#include "../../clay.h" -#include "../../renderers/raylib/clay_renderer_raylib.c" - -const uint32_t FONT_ID_BODY_24 = 0; -const uint32_t FONT_ID_BODY_16 = 1; -#define COLOR_ORANGE (Clay_Color) {225, 138, 50, 255} -#define COLOR_BLUE (Clay_Color) {111, 173, 162, 255} - -Texture2D profilePicture; -#define RAYLIB_VECTOR2_TO_CLAY_VECTOR2(vector) (Clay_Vector2) { .x = vector.x, .y = vector.y } - -Clay_String profileText = CLAY_STRING("Profile Page one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen"); -Clay_TextElementConfig headerTextConfig = (Clay_TextElementConfig) { .fontId = 1, .fontSize = 16, .textColor = {0,0,0,255} }; - -void HandleHeaderButtonInteraction(Clay_ElementId elementId, Clay_PointerData pointerData, intptr_t userData) { - if (pointerData.state == CLAY_POINTER_DATA_PRESSED_THIS_FRAME) { - // Do some click handling - } -} - -// Examples of re-usable "Components" -void RenderHeaderButton(Clay_String text) { - CLAY({ - .layoutConfig = {.padding = {16, 8}}, - .rectangle = {.color = Clay_Hovered() ? COLOR_BLUE : COLOR_ORANGE} - }) { -// Clay_OnHover(HandleHeaderButtonInteraction, 1)) { - CLAY_TEXT(text, CLAY_TEXT_CONFIG(headerTextConfig)); - } -} - -Clay_LayoutConfig dropdownTextItemLayout = (Clay_LayoutConfig) { .padding = {8, 4} }; -Clay_RectangleElementConfig dropdownRectangleConfig = (Clay_RectangleElementConfig) { .color = {180, 180, 180, 255} }; -Clay_TextElementConfig dropdownTextElementConfig = (Clay_TextElementConfig) { .fontSize = 24, .textColor = {255,255,255,255} }; - -void RenderDropdownTextItem(int index) { - CLAY({ Clay_GetElementIdWithIndex(CLAY_STRING("ScrollContainerItem"), index), .layoutConfig = dropdownTextItemLayout, .rectangle = dropdownRectangleConfig }) { - CLAY_TEXT(CLAY_STRING("I'm a text field in a scroll container."), &dropdownTextElementConfig); - } -} - -Clay_RenderCommandArray CreateLayout() { - Clay_BeginLayout(); - CLAY({ .id = Clay_GetElementId(CLAY_STRING("OuterContainer")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_GROW(), .height = CLAY_SIZING_GROW() }, .padding = { 16, 16 }, .childGap = 16 }, .rectangle = { .color = {200, 200, 200, 255} } }) { - CLAY({ .id = Clay_GetElementId(CLAY_STRING("SideBar")), .layoutConfig = { .layoutDirection = CLAY_TOP_TO_BOTTOM, .sizing = { .width = CLAY_SIZING_FIXED(300), .height = CLAY_SIZING_GROW() }, .padding = {16, 16}, .childGap = 16 }, .rectangle = { .color = {150, 150, 255, 255} }}) { - CLAY({ .id = Clay_GetElementId(CLAY_STRING("ProfilePictureOuter")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_GROW() }, .padding = { 8, 8 }, .childGap = 8, .childAlignment = { .y = CLAY_ALIGN_Y_CENTER } }, .rectangle = { .color = {130, 130, 255, 255} }}) { - CLAY({ .id = Clay_GetElementId(CLAY_STRING("ProfilePicture")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_FIXED(60), .height = CLAY_SIZING_FIXED(60) } }, .image = { .imageData = &profilePicture, .sourceDimensions = {60, 60} }}) {} - CLAY_TEXT(profileText, CLAY_TEXT_CONFIG({ .fontSize = 24, .textColor = {0, 0, 0, 255} })); - } - CLAY({ .id = Clay_GetElementId(CLAY_STRING("SidebarBlob1")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_GROW(), .height = CLAY_SIZING_FIXED(50) }}, .rectangle = { .color = {110, 110, 255, 255} }}) {} - CLAY({ .id = Clay_GetElementId(CLAY_STRING("SidebarBlob2")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_GROW(), .height = CLAY_SIZING_FIXED(50) }}, .rectangle = { .color = {110, 110, 255, 255} }}) {} - CLAY({ .id = Clay_GetElementId(CLAY_STRING("SidebarBlob3")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_GROW(), .height = CLAY_SIZING_FIXED(50) }}, .rectangle = { .color = {110, 110, 255, 255} }}) {} - CLAY({ .id = Clay_GetElementId(CLAY_STRING("SidebarBlob4")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_GROW(), .height = CLAY_SIZING_FIXED(50) }}, .rectangle = { .color = {110, 110, 255, 255} }}) {} - } - - CLAY({ .id = Clay_GetElementId(CLAY_STRING("RightPanel")), .layoutConfig = { .layoutDirection = CLAY_TOP_TO_BOTTOM, .sizing = { .width = CLAY_SIZING_GROW(), .height = CLAY_SIZING_GROW() }, .childGap = 16 }}) { - CLAY({ .id = Clay_GetElementId(CLAY_STRING("HeaderBar")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_GROW() }, .childAlignment = { .x = CLAY_ALIGN_X_RIGHT }, .padding = {8, 8}, .childGap = 8 }, .rectangle = { .color = {180, 180, 180, 255} }}) { - RenderHeaderButton(CLAY_STRING("Header Item 1")); - RenderHeaderButton(CLAY_STRING("Header Item 2")); - RenderHeaderButton(CLAY_STRING("Header Item 3")); - } - CLAY({ - .id = Clay_GetElementId(CLAY_STRING("MainContent")), - .scroll = { .vertical = true }, - .layoutConfig = { .layoutDirection = CLAY_TOP_TO_BOTTOM, .padding = {16, 16}, .childGap = 16, .sizing = { CLAY_SIZING_GROW() } }, - .rectangle = { .color = {200, 200, 255, 255} } - }){ - CLAY({ - .id = Clay_GetElementId(CLAY_STRING("FloatingContainer")), - .layoutConfig = { .sizing = { .width = CLAY_SIZING_FIXED(300), .height = CLAY_SIZING_FIXED(300) }, .padding = { 16, 16 }}, - .floating = { .zIndex = 1, .attachment = { CLAY_ATTACH_POINT_CENTER_TOP, CLAY_ATTACH_POINT_CENTER_TOP }, .offset = {0, -16} }, - .border = CLAY_BORDER_OUTSIDE({ .color = {80, 80, 80, 255}, .width = 2 }), - .rectangle = { .color = {140,80, 200, 200 } } - }) { - CLAY_TEXT(CLAY_STRING("I'm an inline floating container."), CLAY_TEXT_CONFIG({ .fontSize = 24, .textColor = {255,255,255,255} })); - } - - CLAY_TEXT(CLAY_STRING("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt."), - CLAY_TEXT_CONFIG({ .fontId = FONT_ID_BODY_24, .fontSize = 24, .textColor = {0,0,0,255} })); - - CLAY({ .id = Clay_GetElementId(CLAY_STRING("Photos2")), .layoutConfig = { .childGap = 16, .padding = { 16, 16 }}, .rectangle = { .color = {180, 180, 220, 255} }}) { - CLAY({ .id = Clay_GetElementId(CLAY_STRING("Picture4")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_FIXED(120), .height = CLAY_SIZING_FIXED(120) }}, .image = { .imageData = &profilePicture, .sourceDimensions = {120, 120} }}) {} - CLAY({ .id = Clay_GetElementId(CLAY_STRING("Picture5")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_FIXED(120), .height = CLAY_SIZING_FIXED(120) }}, .image = { .imageData = &profilePicture, .sourceDimensions = {120, 120} }}) {} - CLAY({ .id = Clay_GetElementId(CLAY_STRING("Picture6")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_FIXED(120), .height = CLAY_SIZING_FIXED(120) }}, .image = { .imageData = &profilePicture, .sourceDimensions = {120, 120} }}) {} - } - - CLAY_TEXT(CLAY_STRING("Faucibus purus in massa tempor nec. Nec ullamcorper sit amet risus nullam eget felis eget nunc. Diam vulputate ut pharetra sit amet aliquam id diam. Lacus suspendisse faucibus interdum posuere lorem. A diam sollicitudin tempor id. Amet massa vitae tortor condimentum lacinia. Aliquet nibh praesent tristique magna."), - CLAY_TEXT_CONFIG({ .fontSize = 24, .lineHeight = 60, .textColor = {0,0,0,255} })); - - CLAY_TEXT(CLAY_STRING("Suspendisse in est ante in nibh. Amet venenatis urna cursus eget nunc scelerisque viverra. Elementum sagittis vitae et leo duis ut diam quam nulla. Enim nulla aliquet porttitor lacus. Pellentesque habitant morbi tristique senectus et. Facilisi nullam vehicula ipsum a arcu cursus vitae.\nSem fringilla ut morbi tincidunt. Euismod quis viverra nibh cras pulvinar mattis nunc sed. Velit sed ullamcorper morbi tincidunt ornare massa. Varius quam quisque id diam vel quam. Nulla pellentesque dignissim enim sit amet venenatis. Enim lobortis scelerisque fermentum dui faucibus in. Pretium viverra suspendisse potenti nullam ac tortor vitae. Lectus vestibulum mattis ullamcorper velit sed. Eget mauris pharetra et ultrices neque ornare aenean euismod elementum. Habitant morbi tristique senectus et. Integer vitae justo eget magna fermentum iaculis eu. Semper quis lectus nulla at volutpat diam. Enim praesent elementum facilisis leo. Massa vitae tortor condimentum lacinia quis vel."), - CLAY_TEXT_CONFIG({ .fontSize = 24, .textColor = {0,0,0,255} })); - - CLAY({ .id = Clay_GetElementId(CLAY_STRING("Photos")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_GROW() }, .childAlignment = { .x = CLAY_ALIGN_X_CENTER, .y = CLAY_ALIGN_Y_CENTER }, .childGap = 16, .padding = {16, 16} }, .rectangle = { .color = {180, 180, 220, 255} }}) { - CLAY({ .id = Clay_GetElementId(CLAY_STRING("Picture2")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_FIXED(120), .height = CLAY_SIZING_FIXED(120) }}, .image = { .imageData = &profilePicture, .sourceDimensions = {120, 120} }}) {} - CLAY({ .id = Clay_GetElementId(CLAY_STRING("Picture1")), .layoutConfig = { .childAlignment = { .x = CLAY_ALIGN_X_CENTER }, .layoutDirection = CLAY_TOP_TO_BOTTOM, .padding = {8, 8} }, .rectangle = { .color = {170, 170, 220, 255} }}) { - CLAY({ .id = Clay_GetElementId(CLAY_STRING("ProfilePicture2")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_FIXED(60), .height = CLAY_SIZING_FIXED(60) }}, .image = { .imageData = &profilePicture, .sourceDimensions = {60, 60} }}) {} - CLAY_TEXT(CLAY_STRING("Image caption below"), CLAY_TEXT_CONFIG({ .fontSize = 24, .textColor = {0,0,0,255} })); - } - CLAY({ .id = Clay_GetElementId(CLAY_STRING("Picture3")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_FIXED(120), .height = CLAY_SIZING_FIXED(120) }}, .image = { .imageData = &profilePicture, .sourceDimensions = {120, 120} }}) {} - } - - CLAY_TEXT(CLAY_STRING("Amet cursus sit amet dictum sit amet justo donec. Et malesuada fames ac turpis egestas maecenas. A lacus vestibulum sed arcu non odio euismod lacinia. Gravida neque convallis a cras. Dui nunc mattis enim ut tellus elementum sagittis vitae et. Orci sagittis eu volutpat odio facilisis mauris. Neque gravida in fermentum et sollicitudin ac orci. Ultrices dui sapien eget mi proin sed libero. Euismod quis viverra nibh cras pulvinar mattis. Diam volutpat commodo sed egestas egestas. In fermentum posuere urna nec tincidunt praesent semper. Integer eget aliquet nibh praesent tristique magna.\nId cursus metus aliquam eleifend mi in. Sed pulvinar proin gravida hendrerit lectus a. Etiam tempor orci eu lobortis elementum nibh tellus. Nullam vehicula ipsum a arcu cursus vitae. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Condimentum lacinia quis vel eros donec ac odio. Mattis pellentesque id nibh tortor id aliquet lectus. Turpis egestas integer eget aliquet nibh praesent tristique. Porttitor massa id neque aliquam vestibulum morbi. Mauris commodo quis imperdiet massa tincidunt nunc pulvinar sapien et. Nunc scelerisque viverra mauris in aliquam sem fringilla. Suspendisse ultrices gravida dictum fusce ut placerat orci nulla.\nLacus laoreet non curabitur gravida arcu ac tortor dignissim. Urna nec tincidunt praesent semper feugiat nibh sed pulvinar. Tristique senectus et netus et malesuada fames ac. Nunc aliquet bibendum enim facilisis gravida. Egestas maecenas pharetra convallis posuere morbi leo urna molestie. Sapien nec sagittis aliquam malesuada bibendum arcu vitae elementum curabitur. Ac turpis egestas maecenas pharetra convallis posuere morbi leo urna. Viverra vitae congue eu consequat. Aliquet enim tortor at auctor urna. Ornare massa eget egestas purus viverra accumsan in nisl nisi. Elit pellentesque habitant morbi tristique senectus et netus et malesuada.\nSuspendisse ultrices gravida dictum fusce ut placerat orci nulla pellentesque. Lobortis feugiat vivamus at augue eget arcu. Vitae justo eget magna fermentum iaculis eu. Gravida rutrum quisque non tellus orci. Ipsum faucibus vitae aliquet nec. Nullam non nisi est sit amet. Nunc consequat interdum varius sit amet mattis vulputate enim. Sem fringilla ut morbi tincidunt augue interdum. Vitae purus faucibus ornare suspendisse. Massa tincidunt nunc pulvinar sapien et. Fringilla ut morbi tincidunt augue interdum velit euismod in. Donec massa sapien faucibus et. Est placerat in egestas erat imperdiet. Gravida rutrum quisque non tellus. Morbi non arcu risus quis varius quam quisque id diam. Habitant morbi tristique senectus et netus et malesuada fames ac. Eget lorem dolor sed viverra.\nOrnare massa eget egestas purus viverra. Varius vel pharetra vel turpis nunc eget lorem. Consectetur purus ut faucibus pulvinar elementum. Placerat in egestas erat imperdiet sed euismod nisi. Interdum velit euismod in pellentesque massa placerat duis ultricies lacus. Aliquam nulla facilisi cras fermentum odio eu. Est pellentesque elit ullamcorper dignissim cras tincidunt. Nunc sed id semper risus in hendrerit gravida rutrum. A pellentesque sit amet porttitor eget dolor morbi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames. Nisl nunc mi ipsum faucibus vitae aliquet nec ullamcorper. Sed id semper risus in hendrerit gravida. Tincidunt praesent semper feugiat nibh. Aliquet lectus proin nibh nisl condimentum id venenatis a. Enim sit amet venenatis urna cursus eget. In egestas erat imperdiet sed euismod nisi porta lorem mollis. Lacinia quis vel eros donec ac odio tempor orci. Donec pretium vulputate sapien nec sagittis aliquam malesuada bibendum arcu. Erat pellentesque adipiscing commodo elit at.\nEgestas sed sed risus pretium quam vulputate. Vitae congue mauris rhoncus aenean vel elit scelerisque mauris pellentesque. Aliquam malesuada bibendum arcu vitae elementum. Congue mauris rhoncus aenean vel elit scelerisque mauris. Pellentesque dignissim enim sit amet venenatis urna cursus. Et malesuada fames ac turpis egestas sed tempus urna. Vel fringilla est ullamcorper eget nulla facilisi etiam dignissim. Nibh cras pulvinar mattis nunc sed blandit libero. Fringilla est ullamcorper eget nulla facilisi etiam dignissim. Aenean euismod elementum nisi quis eleifend quam adipiscing vitae proin. Mauris pharetra et ultrices neque ornare aenean euismod elementum. Ornare quam viverra orci sagittis eu. Odio ut sem nulla pharetra diam sit amet nisl suscipit. Ornare lectus sit amet est. Ullamcorper sit amet risus nullam eget. Tincidunt lobortis feugiat vivamus at augue eget arcu dictum.\nUrna nec tincidunt praesent semper feugiat nibh. Ut venenatis tellus in metus vulputate eu scelerisque felis. Cursus risus at ultrices mi tempus. In pellentesque massa placerat duis ultricies lacus sed turpis. Platea dictumst quisque sagittis purus. Cras adipiscing enim eu turpis egestas. Egestas sed tempus urna et pharetra pharetra. Netus et malesuada fames ac turpis egestas integer eget aliquet. Ac turpis egestas sed tempus. Sed lectus vestibulum mattis ullamcorper velit sed. Ante metus dictum at tempor commodo ullamcorper a. Augue neque gravida in fermentum et sollicitudin ac. Praesent semper feugiat nibh sed pulvinar proin gravida. Metus aliquam eleifend mi in nulla posuere sollicitudin aliquam ultrices. Neque gravida in fermentum et sollicitudin ac orci phasellus egestas.\nRidiculus mus mauris vitae ultricies. Morbi quis commodo odio aenean. Duis ultricies lacus sed turpis. Non pulvinar neque laoreet suspendisse interdum consectetur. Scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam. Volutpat est velit egestas dui id ornare arcu odio ut. Viverra tellus in hac habitasse platea dictumst vestibulum rhoncus est. Vestibulum lectus mauris ultrices eros. Sed blandit libero volutpat sed cras ornare. Id leo in vitae turpis massa sed elementum tempus. Gravida dictum fusce ut placerat orci nulla pellentesque. Pretium quam vulputate dignissim suspendisse in. Nisl suscipit adipiscing bibendum est ultricies integer quis auctor. Risus viverra adipiscing at in tellus. Turpis nunc eget lorem dolor sed viverra ipsum. Senectus et netus et malesuada fames ac. Habitasse platea dictumst vestibulum rhoncus est. Nunc sed id semper risus in hendrerit gravida. Felis eget velit aliquet sagittis id. Eget felis eget nunc lobortis.\nMaecenas pharetra convallis posuere morbi leo. Maecenas volutpat blandit aliquam etiam. A condimentum vitae sapien pellentesque habitant morbi tristique senectus et. Pulvinar mattis nunc sed blandit libero volutpat sed. Feugiat in ante metus dictum at tempor commodo ullamcorper. Vel pharetra vel turpis nunc eget lorem dolor. Est placerat in egestas erat imperdiet sed euismod. Quisque non tellus orci ac auctor augue mauris augue. Placerat vestibulum lectus mauris ultrices eros in cursus turpis. Enim nunc faucibus a pellentesque sit. Adipiscing vitae proin sagittis nisl. Iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Aliquam sem fringilla ut morbi.\nArcu odio ut sem nulla pharetra diam sit amet nisl. Non diam phasellus vestibulum lorem sed. At erat pellentesque adipiscing commodo elit at. Lacus luctus accumsan tortor posuere ac ut consequat. Et malesuada fames ac turpis egestas integer. Tristique magna sit amet purus. A condimentum vitae sapien pellentesque habitant. Quis varius quam quisque id diam vel quam. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Augue interdum velit euismod in pellentesque massa. Elit scelerisque mauris pellentesque pulvinar pellentesque habitant. Vulputate eu scelerisque felis imperdiet. Nibh tellus molestie nunc non blandit massa. Velit euismod in pellentesque massa placerat. Sed cras ornare arcu dui. Ut sem viverra aliquet eget sit. Eu lobortis elementum nibh tellus molestie nunc non. Blandit libero volutpat sed cras ornare arcu dui vivamus.\nSit amet aliquam id diam maecenas. Amet risus nullam eget felis eget nunc lobortis mattis aliquam. Magna sit amet purus gravida. Egestas purus viverra accumsan in nisl nisi. Leo duis ut diam quam. Ante metus dictum at tempor commodo ullamcorper. Ac turpis egestas integer eget. Fames ac turpis egestas integer eget aliquet nibh. Sem integer vitae justo eget magna fermentum. Semper auctor neque vitae tempus quam pellentesque nec nam aliquam. Vestibulum mattis ullamcorper velit sed. Consectetur adipiscing elit duis tristique sollicitudin nibh. Massa id neque aliquam vestibulum morbi blandit cursus risus.\nCursus sit amet dictum sit amet justo donec enim diam. Egestas erat imperdiet sed euismod. Nullam vehicula ipsum a arcu cursus vitae congue mauris. Habitasse platea dictumst vestibulum rhoncus est pellentesque elit. Duis ultricies lacus sed turpis tincidunt id aliquet risus feugiat. Faucibus ornare suspendisse sed nisi lacus sed viverra. Pretium fusce id velit ut tortor pretium viverra. Fermentum odio eu feugiat pretium nibh ipsum consequat nisl vel. Senectus et netus et malesuada. Tellus pellentesque eu tincidunt tortor aliquam. Aenean sed adipiscing diam donec adipiscing tristique risus nec feugiat. Quis vel eros donec ac odio. Id interdum velit laoreet id donec ultrices tincidunt.\nMassa id neque aliquam vestibulum morbi blandit cursus risus at. Enim tortor at auctor urna nunc id cursus metus. Lorem ipsum dolor sit amet consectetur. At quis risus sed vulputate odio. Facilisis mauris sit amet massa vitae tortor condimentum lacinia quis. Et malesuada fames ac turpis egestas maecenas. Bibendum arcu vitae elementum curabitur vitae nunc sed velit dignissim. Viverra orci sagittis eu volutpat odio facilisis mauris. Adipiscing bibendum est ultricies integer quis auctor elit sed. Neque viverra justo nec ultrices dui sapien. Elementum nibh tellus molestie nunc non blandit massa enim. Euismod elementum nisi quis eleifend quam adipiscing vitae proin sagittis. Faucibus ornare suspendisse sed nisi. Quis viverra nibh cras pulvinar mattis nunc sed blandit. Tristique senectus et netus et. Magnis dis parturient montes nascetur ridiculus mus.\nDolor magna eget est lorem ipsum dolor. Nibh sit amet commodo nulla. Donec pretium vulputate sapien nec sagittis aliquam malesuada. Cras adipiscing enim eu turpis egestas pretium. Cras ornare arcu dui vivamus arcu felis bibendum ut tristique. Mus mauris vitae ultricies leo integer. In nulla posuere sollicitudin aliquam ultrices sagittis orci. Quis hendrerit dolor magna eget. Nisl tincidunt eget nullam non. Vitae congue eu consequat ac felis donec et odio. Vivamus at augue eget arcu dictum varius duis at. Ornare quam viverra orci sagittis.\nErat nam at lectus urna duis convallis. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet. Est ullamcorper eget nulla facilisi etiam dignissim diam. Arcu vitae elementum curabitur vitae nunc sed velit dignissim sodales. Tortor vitae purus faucibus ornare suspendisse sed nisi lacus. Neque viverra justo nec ultrices dui sapien eget mi proin. Viverra accumsan in nisl nisi scelerisque eu ultrices. Consequat interdum varius sit amet mattis. In aliquam sem fringilla ut morbi. Eget arcu dictum varius duis at. Nulla aliquet porttitor lacus luctus accumsan tortor posuere. Arcu bibendum at varius vel pharetra vel turpis. Hac habitasse platea dictumst quisque sagittis purus sit amet. Sapien eget mi proin sed libero enim sed. Quam elementum pulvinar etiam non quam lacus suspendisse faucibus interdum. Semper viverra nam libero justo. Fusce ut placerat orci nulla pellentesque dignissim enim sit amet. Et malesuada fames ac turpis egestas maecenas pharetra convallis posuere.\nTurpis egestas sed tempus urna et pharetra pharetra massa. Gravida in fermentum et sollicitudin ac orci phasellus. Ornare suspendisse sed nisi lacus sed viverra tellus in. Fames ac turpis egestas maecenas pharetra convallis posuere. Mi proin sed libero enim sed faucibus turpis. Sit amet mauris commodo quis imperdiet massa tincidunt nunc. Ut etiam sit amet nisl purus in mollis nunc. Habitasse platea dictumst quisque sagittis purus sit amet volutpat consequat. Eget aliquet nibh praesent tristique magna. Sit amet est placerat in egestas erat. Commodo sed egestas egestas fringilla. Enim nulla aliquet porttitor lacus luctus accumsan tortor posuere ac. Et molestie ac feugiat sed lectus vestibulum mattis ullamcorper. Dignissim convallis aenean et tortor at risus viverra. Morbi blandit cursus risus at ultrices mi. Ac turpis egestas integer eget aliquet nibh praesent tristique magna.\nVolutpat sed cras ornare arcu dui. Egestas erat imperdiet sed euismod nisi porta lorem mollis aliquam. Viverra justo nec ultrices dui sapien. Amet risus nullam eget felis eget nunc lobortis. Metus aliquam eleifend mi in. Ut eu sem integer vitae. Auctor elit sed vulputate mi sit amet. Nisl nisi scelerisque eu ultrices. Dictum fusce ut placerat orci nulla. Pellentesque habitant morbi tristique senectus et. Auctor elit sed vulputate mi sit. Tincidunt arcu non sodales neque. Mi in nulla posuere sollicitudin aliquam. Morbi non arcu risus quis varius quam quisque id diam. Cras adipiscing enim eu turpis egestas pretium aenean pharetra magna. At auctor urna nunc id cursus metus aliquam. Mauris a diam maecenas sed enim ut sem viverra. Nunc scelerisque viverra mauris in. In iaculis nunc sed augue lacus viverra vitae congue eu. Volutpat blandit aliquam etiam erat velit scelerisque in dictum non."), - CLAY_TEXT_CONFIG({ .fontSize = 24, .textColor = {0,0,0,255} })); - } - } - - CLAY({ .id = Clay_GetElementId(CLAY_STRING("Blob4Floating2")), .floating = { .zIndex = 1, .parentId = Clay_GetElementId(CLAY_STRING("SidebarBlob4")).id }}) { - CLAY({ .id = Clay_GetElementId(CLAY_STRING("ScrollContainer")), .layoutConfig = { .sizing = { .height = CLAY_SIZING_FIXED(200) }, .childGap = 2 }, .scroll = { .vertical = true }}) { - CLAY({ .id = Clay_GetElementId(CLAY_STRING("FloatingContainer2")), .floating = { .zIndex = 1 }}) { - CLAY({ .id = Clay_GetElementId(CLAY_STRING("FloatingContainerInner")), .layoutConfig = { .sizing = { .width = CLAY_SIZING_FIXED(300), .height = CLAY_SIZING_FIXED(300) }, .padding = {16, 16} }, .rectangle = { .color = {140,80, 200, 200} }}) { - CLAY_TEXT(CLAY_STRING("I'm an inline floating container."), CLAY_TEXT_CONFIG({ .fontSize = 24, .textColor = {255,255,255,255} })); - } - } - CLAY({ .id = Clay_GetElementId(CLAY_STRING("ScrollContainerInner")), .layoutConfig = { .layoutDirection = CLAY_TOP_TO_BOTTOM }, .rectangle = { .color = {160, 160, 160, 255} }}) { - for (int i = 0; i < 100; i++) { - RenderDropdownTextItem(i); - } - } - } - } - Clay_ScrollContainerData scrollData = Clay_GetScrollContainerData(Clay_GetElementId(CLAY_STRING("MainContent"))); - if (scrollData.found) { - CLAY({ .id = Clay_GetElementId(CLAY_STRING("ScrollBar")), - .floating = { - .offset = { .y = -(scrollData.scrollPosition->y / scrollData.contentDimensions.height) * scrollData.scrollContainerDimensions.height }, - .zIndex = 1, - .parentId = Clay_GetElementId(CLAY_STRING("MainContent")).id, - .attachment = {.element = CLAY_ATTACH_POINT_RIGHT_TOP, .parent = CLAY_ATTACH_POINT_RIGHT_TOP} - } - }) { - CLAY({ .id = Clay_GetElementId(CLAY_STRING("ScrollBarButton")), - .layoutConfig = { .sizing = {CLAY_SIZING_FIXED(12), CLAY_SIZING_FIXED((scrollData.scrollContainerDimensions.height / scrollData.contentDimensions.height) * scrollData.scrollContainerDimensions.height) }}, - .rectangle = { .cornerRadius = {6}, .color = Clay_PointerOver(Clay__HashString(CLAY_STRING("ScrollBar"), 0, 0)) ? (Clay_Color){100, 100, 140, 150} : (Clay_Color){120, 120, 160, 150} } - }) {} - } - } - } - return Clay_EndLayout(); -} - -typedef struct -{ - Clay_Vector2 clickOrigin; - Clay_Vector2 positionOrigin; - bool mouseDown; -} ScrollbarData; - -ScrollbarData scrollbarData = (ScrollbarData) {}; - -bool debugEnabled = false; - -void UpdateDrawFrame() -{ - Vector2 mouseWheelDelta = GetMouseWheelMoveV(); - float mouseWheelX = mouseWheelDelta.x; - float mouseWheelY = mouseWheelDelta.y; - - if (IsKeyPressed(KEY_D)) { - debugEnabled = !debugEnabled; - Clay_SetDebugModeEnabled(debugEnabled); - } - //---------------------------------------------------------------------------------- - // Handle scroll containers - Clay_Vector2 mousePosition = RAYLIB_VECTOR2_TO_CLAY_VECTOR2(GetMousePosition()); - Clay_SetPointerState(mousePosition, IsMouseButtonDown(0) && !scrollbarData.mouseDown); - Clay_SetLayoutDimensions((Clay_Dimensions) { (float)GetScreenWidth(), (float)GetScreenHeight() }); - if (!IsMouseButtonDown(0)) { - scrollbarData.mouseDown = false; - } - - if (IsMouseButtonDown(0) && !scrollbarData.mouseDown && Clay_PointerOver(Clay__HashString(CLAY_STRING("ScrollBar"), 0, 0))) { - Clay_ScrollContainerData scrollContainerData = Clay_GetScrollContainerData(Clay__HashString(CLAY_STRING("MainContent"), 0, 0)); - scrollbarData.clickOrigin = mousePosition; - scrollbarData.positionOrigin = *scrollContainerData.scrollPosition; - scrollbarData.mouseDown = true; - } else if (scrollbarData.mouseDown) { - Clay_ScrollContainerData scrollContainerData = Clay_GetScrollContainerData(Clay__HashString(CLAY_STRING("MainContent"), 0, 0)); - if (scrollContainerData.contentDimensions.height > 0) { - Clay_Vector2 ratio = (Clay_Vector2) { - scrollContainerData.contentDimensions.width / scrollContainerData.scrollContainerDimensions.width, - scrollContainerData.contentDimensions.height / scrollContainerData.scrollContainerDimensions.height, - }; - if (scrollContainerData.config.vertical) { - scrollContainerData.scrollPosition->y = scrollbarData.positionOrigin.y + (scrollbarData.clickOrigin.y - mousePosition.y) * ratio.y; - } - if (scrollContainerData.config.horizontal) { - scrollContainerData.scrollPosition->x = scrollbarData.positionOrigin.x + (scrollbarData.clickOrigin.x - mousePosition.x) * ratio.x; - } - } - } - - Clay_UpdateScrollContainers(true, (Clay_Vector2) {mouseWheelX, mouseWheelY}, GetFrameTime()); - // Generate the auto layout for rendering - double currentTime = GetTime(); - Clay_RenderCommandArray renderCommands = CreateLayout(); - printf("layout time: %f microseconds\n", (GetTime() - currentTime) * 1000 * 1000); - // RENDERING --------------------------------- -// currentTime = GetTime(); - Clay_Raylib_Render(renderCommands); -// printf("render time: %f ms\n", (GetTime() - currentTime) * 1000); - - //---------------------------------------------------------------------------------- -} - -bool reinitializeClay = false; - -void HandleClayErrors(Clay_ErrorData errorData) { - printf("%s", errorData.errorText.chars); - if (errorData.errorType == CLAY_ERROR_TYPE_ELEMENTS_CAPACITY_EXCEEDED) { - reinitializeClay = true; - Clay_SetMaxElementCount(Clay_GetMaxElementCount() * 2); - } else if (errorData.errorType == CLAY_ERROR_TYPE_TEXT_MEASUREMENT_CAPACITY_EXCEEDED) { - reinitializeClay = true; - Clay_SetMaxMeasureTextCacheWordCount(Clay_GetMaxMeasureTextCacheWordCount() * 2); - } -} - -int main(void) { - uint64_t totalMemorySize = Clay_MinMemorySize(); - Clay_Arena clayMemoryBottom = Clay_CreateArenaWithCapacityAndMemory(totalMemorySize, malloc(totalMemorySize)); - Clay_SetMeasureTextFunction(Raylib_MeasureText); - Clay_Initialize(clayMemoryBottom, (Clay_Dimensions) { (float)GetScreenWidth(), (float)GetScreenHeight() / 2 }, (Clay_ErrorHandler) { HandleClayErrors }); - Clay_Raylib_Initialize(1024, 768, "Clay - Raylib Renderer Example", FLAG_VSYNC_HINT | FLAG_WINDOW_RESIZABLE | FLAG_WINDOW_HIGHDPI | FLAG_MSAA_4X_HINT); - profilePicture = LoadTextureFromImage(LoadImage("resources/profile-picture.png")); - Raylib_fonts[FONT_ID_BODY_24] = (Raylib_Font) { - .font = LoadFontEx("resources/Roboto-Regular.ttf", 48, 0, 400), - .fontId = FONT_ID_BODY_24, - }; - SetTextureFilter(Raylib_fonts[FONT_ID_BODY_24].font.texture, TEXTURE_FILTER_BILINEAR); - - Raylib_fonts[FONT_ID_BODY_16] = (Raylib_Font) { - .font = LoadFontEx("resources/Roboto-Regular.ttf", 32, 0, 400), - .fontId = FONT_ID_BODY_16, - }; - SetTextureFilter(Raylib_fonts[FONT_ID_BODY_16].font.texture, TEXTURE_FILTER_BILINEAR); - - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { -// if (reinitializeClay) { -// Clay_SetMaxElementCount(8192); -// totalMemorySize = Clay_MinMemorySize(); -// clayMemory = Clay_CreateArenaWithCapacityAndMemory(totalMemorySize, malloc(totalMemorySize)); -// Clay_Initialize(clayMemory, (Clay_Dimensions) { (float)GetScreenWidth(), (float)GetScreenHeight() }, (Clay_ErrorHandler) { HandleClayErrors }); -// reinitializeClay = false; -// } - BeginDrawing(); - ClearBackground(BLACK); - UpdateDrawFrame(); - EndDrawing(); - } - return 0; -} diff --git a/examples/multi-context-raylib-sidebar-scrolling-container/resources/Roboto-Regular.ttf b/examples/multi-context-raylib-sidebar-scrolling-container/resources/Roboto-Regular.ttf deleted file mode 100644 index ddf4bfacb396e97546364ccfeeb9c31dfaea4c25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168260 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

S&jh1n&JeeMOkU4{=4@cYr6k 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≤FHXCuU9Qce=@vmZ{%9^5??OaVQJ8!4u8-w;yt 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