Clay main
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
This commit is contained in:
parent
ad6afe6ecf
commit
2cbd4973a0
1 changed files with 103 additions and 11 deletions
114
main.c
114
main.c
|
|
@ -1,18 +1,110 @@
|
||||||
#include "raylib.h"
|
#define CLAY_IMPLEMENTATION
|
||||||
|
#include "./clay-0.13/clay.h"
|
||||||
|
#include "./clay-0.13/renderers/raylib/clay_renderer_raylib.c"
|
||||||
|
|
||||||
int main(void)
|
#define RAYLIB_VECTOR2_TO_CLAY_VECTOR2(vector) (Clay_Vector2) { .x = vector.x, .y = vector.y }
|
||||||
{
|
|
||||||
InitWindow(600, 400, "raylib [core] example - basic window");
|
|
||||||
|
|
||||||
while (!WindowShouldClose())
|
bool reinitializeClay = false;
|
||||||
{
|
|
||||||
BeginDrawing();
|
void HandleButtonInteraction(Clay_ElementId elementId, Clay_PointerData pointerData, void *userData) {
|
||||||
ClearBackground(RAYWHITE);
|
if (pointerData.state == CLAY_POINTER_DATA_PRESSED_THIS_FRAME) {
|
||||||
DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
|
printf("You pressed the button!\n");
|
||||||
EndDrawing();
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExpandContainer() {
|
||||||
|
CLAY({
|
||||||
|
.backgroundColor = {0, 0, 0, 0},
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.width = CLAY_SIZING_GROW(),
|
||||||
|
.height = CLAY_SIZING_GROW()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
Clay_RenderCommandArray CreateLayout() {
|
||||||
|
Clay_BeginLayout();
|
||||||
|
|
||||||
|
CLAY({
|
||||||
|
.backgroundColor = {255, 255, 255, 255},
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.width = CLAY_SIZING_GROW(),
|
||||||
|
.height = CLAY_SIZING_GROW()
|
||||||
|
},
|
||||||
|
.childAlignment = { .x = CLAY_ALIGN_X_CENTER, .y = CLAY_ALIGN_Y_CENTER }
|
||||||
|
}
|
||||||
|
}) {
|
||||||
|
CLAY({
|
||||||
|
.backgroundColor = {255, 0, 0, 255},
|
||||||
|
.layout = {
|
||||||
|
.sizing = {
|
||||||
|
.width = CLAY_SIZING_PERCENT(0.25),
|
||||||
|
.height = CLAY_SIZING_PERCENT(0.25)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}) {
|
||||||
|
Clay_OnHover(HandleButtonInteraction, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseWindow();
|
return Clay_EndLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
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() });
|
||||||
|
|
||||||
|
Clay_UpdateScrollContainers(true, (Clay_Vector2) {mouseWheelX, mouseWheelY}, GetFrameTime());
|
||||||
|
// 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(720, 720, "Clay - Raylib Renderer Example", FLAG_VSYNC_HINT | FLAG_FULLSCREEN_MODE | FLAG_MSAA_4X_HINT);
|
||||||
|
HideCursor();
|
||||||
|
|
||||||
|
// 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, 0 });
|
||||||
|
reinitializeClay = false;
|
||||||
|
}
|
||||||
|
UpdateDrawFrame(NULL);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue