diff --git a/examples/introducing-clay-video-demo/main.c b/examples/introducing-clay-video-demo/main.c index 88a0c15..c8c3924 100644 --- a/examples/introducing-clay-video-demo/main.c +++ b/examples/introducing-clay-video-demo/main.c @@ -1,6 +1,7 @@ #define CLAY_IMPLEMENTATION #include "../../clay.h" -#include "../../renderers/raylib/clay_renderer_raylib.c" +#define CLAY_RAYLIB_IMPLEMENTATION // This is different to the video, the raylib renderer is now in a header file +#include "../../renderers/raylib/clay_renderer_raylib.h" const int FONT_ID_BODY_16 = 0; Clay_Color COLOR_WHITE = { 255, 255, 255, 255}; diff --git a/examples/raylib-sidebar-scrolling-container/main.c b/examples/raylib-sidebar-scrolling-container/main.c index 5a39fc1..4b51324 100644 --- a/examples/raylib-sidebar-scrolling-container/main.c +++ b/examples/raylib-sidebar-scrolling-container/main.c @@ -1,6 +1,7 @@ #define CLAY_IMPLEMENTATION #include "../../clay.h" -#include "../../renderers/raylib/clay_renderer_raylib.c" +#define CLAY_RAYLIB_IMPLEMENTATION +#include "../../renderers/raylib/clay_renderer_raylib.h" const uint32_t FONT_ID_BODY_24 = 0; const uint32_t FONT_ID_BODY_16 = 1; diff --git a/renderers/raylib/clay_renderer_raylib.c b/renderers/raylib/clay_renderer_raylib.h similarity index 97% rename from renderers/raylib/clay_renderer_raylib.c rename to renderers/raylib/clay_renderer_raylib.h index 0fe545a..e3058f0 100644 --- a/renderers/raylib/clay_renderer_raylib.c +++ b/renderers/raylib/clay_renderer_raylib.h @@ -1,3 +1,6 @@ +#ifndef CLAY_RENDERER_RAYLIB_H +#define CLAY_RENDERER_RAYLIB_H + #include "raylib.h" #include "raymath.h" #include "stdint.h" @@ -14,8 +17,6 @@ typedef struct Font font; } Raylib_Font; -Raylib_Font Raylib_fonts[10]; -Camera Raylib_camera; typedef enum { @@ -38,6 +39,14 @@ typedef struct }; } CustomLayoutElement; +#ifdef CLAY_RAYLIB_IMPLEMENTATION +#undef CLAY_RAYLIB_IMPLEMENTATION + +// Global state +Raylib_Font Raylib_fonts[10]; +Camera Raylib_camera; +uint32_t measureCalls = 0; + // Get a ray trace from the screen position (i.e mouse) within a specific section of the screen Ray GetScreenToWorldPointWithZDistance(Vector2 position, Camera camera, int screenWidth, int screenHeight, float zDistance) { @@ -87,8 +96,6 @@ Ray GetScreenToWorldPointWithZDistance(Vector2 position, Camera camera, int scre return ray; } -uint32_t measureCalls = 0; - static inline Clay_Dimensions Raylib_MeasureText(Clay_String *text, Clay_TextElementConfig *config) { measureCalls++; // Measure string size for Font @@ -122,6 +129,7 @@ static inline Clay_Dimensions Raylib_MeasureText(Clay_String *text, Clay_TextEle } void Clay_Raylib_Initialize(int width, int height, const char *title, unsigned int flags) { + measureCalls = 0; SetConfigFlags(flags); InitWindow(width, height, title); // EnableEventWaiting(); @@ -231,3 +239,6 @@ void Clay_Raylib_Render(Clay_RenderCommandArray renderCommands) } } } + +#endif // CLAY_RAYLIB_IMPLEMENTATION +#endif // CLAY_RENDERER_RAYLIB_H