diff --git a/src/main.c b/src/main.c index eb2760b..8f5e871 100644 --- a/src/main.c +++ b/src/main.c @@ -14,174 +14,184 @@ void HandleButtonInteraction(Clay_ElementId elementId, Clay_PointerData pointerD } void ExpandContainer() { - CLAY( - CLAY_RECTANGLE({ .color = {0, 0, 0, 0} }), - CLAY_LAYOUT({ + CLAY({ + .backgroundColor = {0, 0, 0, 0}, + .layout = { .sizing = { .width = CLAY_SIZING_GROW(), .height = CLAY_SIZING_GROW() } - }) - ) {} + } + }) {} } -int main(void) -{ - Clay_Raylib_Initialize(GetScreenWidth(), GetScreenHeight(), "PiAlarm", FLAG_FULLSCREEN_MODE); - uint64_t clayRequiredMemory = Clay_MinMemorySize(); - Clay_Arena clayMemory = Clay_CreateArenaWithCapacityAndMemory(clayRequiredMemory, malloc(clayRequiredMemory)); - Clay_Initialize(clayMemory, (Clay_Dimensions) { - .width = GetScreenWidth(), - .height = GetScreenHeight() - }, (Clay_ErrorHandler) { HandleClayErrors }); - Clay_SetMeasureTextFunction(Raylib_MeasureText); - HideCursor(); - while (!WindowShouldClose()) { - // Must be run once per frame. - Clay_SetLayoutDimensions((Clay_Dimensions) { - .width = GetScreenWidth(), - .height = GetScreenHeight() - }); +Clay_RenderCommandArray CreateLayout() { + Clay_BeginLayout(); - // Update Mouse and Scroll - Vector2 mousePosition = GetMousePosition(); - Vector2 scrollDelta = GetMouseWheelMoveV(); - Clay_SetPointerState( - (Clay_Vector2) { mousePosition.x, mousePosition.y }, - IsMouseButtonDown(0) - ); - Clay_UpdateScrollContainers( - true, - (Clay_Vector2) { scrollDelta.x, scrollDelta.y }, - GetFrameTime() - ); - - Clay_BeginLayout(); - - CLAY( - CLAY_RECTANGLE({ .color = {255, 255, 255, 255} }), - CLAY_LAYOUT({ + CLAY({ + .backgroundColor = {255, 255, 255, 255}, + .layout = { + .sizing = { + .width = CLAY_SIZING_GROW(), + .height = CLAY_SIZING_GROW() + }, + .padding = {10, 10, 10, 10}, + .layoutDirection = CLAY_TOP_TO_BOTTOM + } + }) { + CLAY({ + .backgroundColor = {200, 200, 200, 255}, + .layout = { + .sizing = { + .width = CLAY_SIZING_GROW(), + .height = CLAY_SIZING_PERCENT(0.7) + }, + .padding = {20, 20, 80, 80} + } + }) { + CLAY({ + .backgroundColor = {200, 200, 0, 255}, + .layout = { + .sizing = { + .width = CLAY_SIZING_PERCENT(0.23), + .height = CLAY_SIZING_GROW() + } + } + + }) { + Clay_OnHover(HandleButtonInteraction, NULL); + } + CLAY({ + .backgroundColor = {200, 200, 0, 255}, + .layout = { + .sizing = { + .width = CLAY_SIZING_PERCENT(0.23), + .height = CLAY_SIZING_GROW() + } + } + }) { + Clay_OnHover(HandleButtonInteraction, NULL); + } + CLAY({ + .backgroundColor = {200, 200, 0, 0}, + .layout = { + .sizing = { + .width = CLAY_SIZING_GROW(), + .height = CLAY_SIZING_GROW() + } + } + }) { + Clay_OnHover(HandleButtonInteraction, NULL); + } + CLAY({ + .backgroundColor = {200, 200, 0, 255}, + .layout = { + .sizing = { + .width = CLAY_SIZING_PERCENT(0.23), + .height = CLAY_SIZING_GROW() + } + }, + + }) { + Clay_OnHover(HandleButtonInteraction, NULL); + } + CLAY({ + .backgroundColor = {200, 200, 0, 255}, + .layout = { + .sizing = { + .width = CLAY_SIZING_PERCENT(0.23), + .height = CLAY_SIZING_GROW() + } + } + }) { + Clay_OnHover(HandleButtonInteraction, NULL); + } + } + CLAY({ + .backgroundColor = {200, 200, 200, 255}, + .layout = { .sizing = { .width = CLAY_SIZING_GROW(), .height = CLAY_SIZING_GROW() }, - .padding = {10, 10}, - .layoutDirection = CLAY_TOP_TO_BOTTOM - }) - ) { - CLAY( - CLAY_RECTANGLE({ .color = {200, 200, 200, 255} }), - CLAY_LAYOUT({ - .sizing = { - .width = CLAY_SIZING_GROW(), - .height = CLAY_SIZING_PERCENT(0.7) - }, - .padding = {20, 80} - }) - ) { - CLAY( - CLAY_RECTANGLE({ .color = {200, 200, 0, 255} }), - CLAY_LAYOUT({ - .sizing = { - .width = CLAY_SIZING_PERCENT(0.23), - .height = CLAY_SIZING_GROW() - } - }), - Clay_OnHover(HandleButtonInteraction, NULL) - ) {} - CLAY( - CLAY_RECTANGLE({ .color = {200, 200, 0, 255} }), - CLAY_LAYOUT({ - .sizing = { - .width = CLAY_SIZING_PERCENT(0.23), - .height = CLAY_SIZING_GROW() - } - }), - Clay_OnHover(HandleButtonInteraction, NULL) - ) {} - CLAY( - CLAY_RECTANGLE({ .color = {200, 200, 0, 0} }), - CLAY_LAYOUT({ - .sizing = { - .width = CLAY_SIZING_GROW(), - .height = CLAY_SIZING_GROW() - } - }), - Clay_OnHover(HandleButtonInteraction, NULL) - ) {} - CLAY( - CLAY_RECTANGLE({ .color = {200, 200, 0, 255} }), - CLAY_LAYOUT({ - .sizing = { - .width = CLAY_SIZING_PERCENT(0.23), - .height = CLAY_SIZING_GROW() - } - }), - Clay_OnHover(HandleButtonInteraction, NULL) - ) {} - CLAY( - CLAY_RECTANGLE({ .color = {200, 200, 0, 255} }), - CLAY_LAYOUT({ - .sizing = { - .width = CLAY_SIZING_PERCENT(0.23), - .height = CLAY_SIZING_GROW() - } - }), - Clay_OnHover(HandleButtonInteraction, NULL) - ) {} + .padding = { 20, 20 , 20, 20} } - CLAY( - CLAY_RECTANGLE({ .color = {200, 200, 200, 255} }), - CLAY_LAYOUT({ + }) { + CLAY({ + .backgroundColor = {200, 200, 0, 255}, + .layout = { .sizing = { - .width = CLAY_SIZING_GROW(), + .width = CLAY_SIZING_PERCENT(0.30), .height = CLAY_SIZING_GROW() - }, - .padding = { 20, 20 } - }) - ) { - CLAY( - CLAY_RECTANGLE({ .color = {200, 200, 0, 255} }), - CLAY_LAYOUT({ - .sizing = { - .width = CLAY_SIZING_PERCENT(0.30), - .height = CLAY_SIZING_GROW() - } - }), - Clay_OnHover(HandleButtonInteraction, NULL) - ) {} - ExpandContainer(); - CLAY( - CLAY_RECTANGLE({ .color = {200, 200, 0, 255} }), - CLAY_LAYOUT({ - .sizing = { - .width = CLAY_SIZING_PERCENT(0.30), - .height = CLAY_SIZING_GROW() - } - }), - Clay_OnHover(HandleButtonInteraction, NULL) - ) {} - ExpandContainer(); - CLAY( - CLAY_RECTANGLE({ .color = {200, 200, 0, 255} }), - CLAY_LAYOUT({ - .sizing = { - .width = CLAY_SIZING_PERCENT(0.30), - .height = CLAY_SIZING_GROW() - } - }), - Clay_OnHover(HandleButtonInteraction, NULL) - ) {} - + } + }, + + }) { + Clay_OnHover(HandleButtonInteraction, NULL); } + ExpandContainer(); + CLAY({ + .backgroundColor = {200, 200, 0, 255}, + .layout = { + .sizing = { + .width = CLAY_SIZING_PERCENT(0.30), + .height = CLAY_SIZING_GROW() + } + } + }) { + Clay_OnHover(HandleButtonInteraction, NULL); + } + ExpandContainer(); + CLAY({ + .backgroundColor = {200, 200, 0, 255}, + .layout = { + .sizing = { + .width = CLAY_SIZING_PERCENT(0.30), + .height = CLAY_SIZING_GROW() + } + } + }) { + Clay_OnHover(HandleButtonInteraction, NULL); + } + } + } - Clay_RenderCommandArray renderCommands = Clay_EndLayout(); + return Clay_EndLayout(); +} - BeginDrawing(); - ClearBackground(BLACK); - Clay_Raylib_Render(renderCommands); - EndDrawing(); +void UpdateDrawFrame(Font* fonts) +{ + Vector2 mouseWheelDelta = GetMouseWheelMoveV(); + float mouseWheelX = mouseWheelDelta.x; + float mouseWheelY = mouseWheelDelta.y; + + //---------------------------------------------------------------------------------- + // Handle scroll containers + Clay_Vector2 mousePosition = RAYLIB_VECTOR2_TO_CLAY_VECTOR2(GetMousePosition()); + Clay_SetPointerState(mousePosition, IsMouseButtonDown(0)); + Clay_SetLayoutDimensions((Clay_Dimensions) { (float)GetScreenWidth(), (float)GetScreenHeight() }); + + // Generate the auto layout for rendering + Clay_RenderCommandArray renderCommands = CreateLayout(); + // RENDERING --------------------------------- + BeginDrawing(); + ClearBackground(BLACK); + Clay_Raylib_Render(renderCommands, fonts); + EndDrawing(); + //---------------------------------------------------------------------------------- +} + +int main(void) +{ + uint64_t totalMemorySize = Clay_MinMemorySize(); + Clay_Arena clayMemory = Clay_CreateArenaWithCapacityAndMemory(totalMemorySize, malloc(totalMemorySize)); + Clay_Initialize(clayMemory, (Clay_Dimensions) { (float)GetScreenWidth(), (float)GetScreenHeight() }, (Clay_ErrorHandler) { HandleClayErrors, 0 }); + Clay_Raylib_Initialize(GetScreenWidth(), GetScreenHeight(), "PiAlarm", FLAG_VSYNC_HINT | FLAG_FULLSCREEN_MODE | FLAG_MSAA_4X_HINT); + HideCursor(); + + while (!WindowShouldClose()) { + UpdateDrawFrame(NULL); } CloseWindow(); return 0;