mirror of
https://github.com/nicbarker/clay.git
synced 2025-04-22 06:08:03 +00:00
Compare commits
9 Commits
1e410ea079
...
f0ad64e858
Author | SHA1 | Date | |
---|---|---|---|
|
f0ad64e858 | ||
|
a9e94e3be0 | ||
|
cbb50267da | ||
|
55792fdbec | ||
|
50aad568fa | ||
|
b4dc02c73a | ||
|
3f635cdd79 | ||
|
1c636096e5 | ||
|
e5bd453f5e |
@ -38,3 +38,6 @@ if(NOT MSVC AND (CLAY_INCLUDE_ALL_EXAMPLES OR CLAY_INCLUDE_SDL3_EXAMPLES))
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# add_subdirectory("examples/cairo-pdf-rendering") Some issue with github actions populating cairo, disable for now
|
# add_subdirectory("examples/cairo-pdf-rendering") Some issue with github actions populating cairo, disable for now
|
||||||
|
|
||||||
|
#add_library(${PROJECT_NAME} INTERFACE)
|
||||||
|
#target_include_directories(${PROJECT_NAME} INTERFACE .)
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -495,7 +495,7 @@ main :: proc() {
|
|||||||
clay.Initialize(arena, {cast(f32)raylib.GetScreenWidth(), cast(f32)raylib.GetScreenHeight()}, { handler = errorHandler })
|
clay.Initialize(arena, {cast(f32)raylib.GetScreenWidth(), cast(f32)raylib.GetScreenHeight()}, { handler = errorHandler })
|
||||||
clay.SetMeasureTextFunction(measureText, nil)
|
clay.SetMeasureTextFunction(measureText, nil)
|
||||||
|
|
||||||
raylib.SetConfigFlags({.VSYNC_HINT, .WINDOW_RESIZABLE, .WINDOW_HIGHDPI, .MSAA_4X_HINT})
|
raylib.SetConfigFlags({.VSYNC_HINT, .WINDOW_RESIZABLE, .MSAA_4X_HINT})
|
||||||
raylib.InitWindow(windowWidth, windowHeight, "Raylib Odin Example")
|
raylib.InitWindow(windowWidth, windowHeight, "Raylib Odin Example")
|
||||||
raylib.SetTargetFPS(raylib.GetMonitorRefreshRate(0))
|
raylib.SetTargetFPS(raylib.GetMonitorRefreshRate(0))
|
||||||
loadFont(FONT_ID_TITLE_56, 56, "resources/Calistoga-Regular.ttf")
|
loadFont(FONT_ID_TITLE_56, 56, "resources/Calistoga-Regular.ttf")
|
||||||
|
10
clay.h
10
clay.h
@ -1399,13 +1399,9 @@ uint64_t Clay__HashData(const uint8_t* data, size_t length) {
|
|||||||
return result[0] ^ result[1];
|
return result[0] ^ result[1];
|
||||||
}
|
}
|
||||||
#elif !defined(CLAY_DISABLE_SIMD) && defined(__aarch64__)
|
#elif !defined(CLAY_DISABLE_SIMD) && defined(__aarch64__)
|
||||||
static inline uint64x2_t Clay__SIMDRotateLeft(uint64x2_t x, int r) {
|
|
||||||
return vorrq_u64(vshlq_n_u64(x, 17), vshrq_n_u64(x, 64 - 17));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void Clay__SIMDARXMix(uint64x2_t* a, uint64x2_t* b) {
|
static inline void Clay__SIMDARXMix(uint64x2_t* a, uint64x2_t* b) {
|
||||||
*a = vaddq_u64(*a, *b);
|
*a = vaddq_u64(*a, *b);
|
||||||
*b = veorq_u64(Clay__SIMDRotateLeft(*b, 17), *a);
|
*b = veorq_u64(vorrq_u64(vshlq_n_u64(*b, 17), vshrq_n_u64(*b, 64 - 17)), *a);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t Clay__HashData(const uint8_t* data, size_t length) {
|
uint64_t Clay__HashData(const uint8_t* data, size_t length) {
|
||||||
@ -1674,6 +1670,8 @@ Clay_LayoutElementHashMapItem* Clay__AddHashMapItem(Clay_ElementId elementId, Cl
|
|||||||
hashItem->generation = context->generation + 1;
|
hashItem->generation = context->generation + 1;
|
||||||
hashItem->layoutElement = layoutElement;
|
hashItem->layoutElement = layoutElement;
|
||||||
hashItem->debugData->collision = false;
|
hashItem->debugData->collision = false;
|
||||||
|
hashItem->onHoverFunction = NULL;
|
||||||
|
hashItem->hoverFunctionUserData = 0;
|
||||||
} else { // Multiple collisions this frame - two elements have the same ID
|
} else { // Multiple collisions this frame - two elements have the same ID
|
||||||
context->errorHandler.errorHandlerFunction(CLAY__INIT(Clay_ErrorData) {
|
context->errorHandler.errorHandlerFunction(CLAY__INIT(Clay_ErrorData) {
|
||||||
.errorType = CLAY_ERROR_TYPE_DUPLICATE_ID,
|
.errorType = CLAY_ERROR_TYPE_DUPLICATE_ID,
|
||||||
@ -1981,7 +1979,7 @@ Clay_ElementId Clay__AttachId(Clay_ElementId elementId) {
|
|||||||
uint32_t idAlias = openLayoutElement->id;
|
uint32_t idAlias = openLayoutElement->id;
|
||||||
openLayoutElement->id = elementId.id;
|
openLayoutElement->id = elementId.id;
|
||||||
Clay__AddHashMapItem(elementId, openLayoutElement, idAlias);
|
Clay__AddHashMapItem(elementId, openLayoutElement, idAlias);
|
||||||
Clay__StringArray_Add(&context->layoutElementIdStrings, elementId.stringId);
|
Clay__StringArray_Set(&context->layoutElementIdStrings, context->layoutElements.length - 1, elementId.stringId);
|
||||||
return elementId;
|
return elementId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ int main(void) {
|
|||||||
uint64_t totalMemorySize = Clay_MinMemorySize();
|
uint64_t totalMemorySize = Clay_MinMemorySize();
|
||||||
Clay_Arena clayMemory = Clay_CreateArenaWithCapacityAndMemory(totalMemorySize, malloc(totalMemorySize));
|
Clay_Arena clayMemory = Clay_CreateArenaWithCapacityAndMemory(totalMemorySize, malloc(totalMemorySize));
|
||||||
Clay_Initialize(clayMemory, (Clay_Dimensions) { (float)GetScreenWidth(), (float)GetScreenHeight() }, (Clay_ErrorHandler) { HandleClayErrors, 0 });
|
Clay_Initialize(clayMemory, (Clay_Dimensions) { (float)GetScreenWidth(), (float)GetScreenHeight() }, (Clay_ErrorHandler) { HandleClayErrors, 0 });
|
||||||
Clay_Raylib_Initialize(1024, 768, "Clay - Raylib Renderer Example", FLAG_VSYNC_HINT | FLAG_WINDOW_RESIZABLE | FLAG_WINDOW_HIGHDPI | FLAG_MSAA_4X_HINT);
|
Clay_Raylib_Initialize(1024, 768, "Clay - Raylib Renderer Example", FLAG_VSYNC_HINT | FLAG_WINDOW_RESIZABLE | FLAG_MSAA_4X_HINT);
|
||||||
profilePicture = LoadTexture("resources/profile-picture.png");
|
profilePicture = LoadTexture("resources/profile-picture.png");
|
||||||
|
|
||||||
Font fonts[2];
|
Font fonts[2];
|
||||||
|
@ -148,7 +148,7 @@ static void SDL_Clay_RenderClayCommands(Clay_SDL3RendererData *rendererData, Cla
|
|||||||
for (size_t i = 0; i < rcommands->length; i++) {
|
for (size_t i = 0; i < rcommands->length; i++) {
|
||||||
Clay_RenderCommand *rcmd = Clay_RenderCommandArray_Get(rcommands, i);
|
Clay_RenderCommand *rcmd = Clay_RenderCommandArray_Get(rcommands, i);
|
||||||
const Clay_BoundingBox bounding_box = rcmd->boundingBox;
|
const Clay_BoundingBox bounding_box = rcmd->boundingBox;
|
||||||
const SDL_FRect rect = { (int)bounding_box.x, (int)bounding_box.y, (int)bounding_box.width, (int)bounding_box.height };
|
const SDL_FRect rect = { (float)bounding_box.x, (float)bounding_box.y, (float)bounding_box.width, (float)bounding_box.height };
|
||||||
|
|
||||||
switch (rcmd->commandType) {
|
switch (rcmd->commandType) {
|
||||||
case CLAY_RENDER_COMMAND_TYPE_RECTANGLE: {
|
case CLAY_RENDER_COMMAND_TYPE_RECTANGLE: {
|
||||||
@ -184,27 +184,27 @@ static void SDL_Clay_RenderClayCommands(Clay_SDL3RendererData *rendererData, Cla
|
|||||||
if (config->width.left > 0) {
|
if (config->width.left > 0) {
|
||||||
const float starting_y = rect.y + clampedRadii.topLeft;
|
const float starting_y = rect.y + clampedRadii.topLeft;
|
||||||
const float length = rect.h - clampedRadii.topLeft - clampedRadii.bottomLeft;
|
const float length = rect.h - clampedRadii.topLeft - clampedRadii.bottomLeft;
|
||||||
SDL_FRect line = { rect.x, starting_y, config->width.left, length };
|
SDL_FRect line = { rect.x, starting_y, (float)config->width.left, length };
|
||||||
SDL_RenderFillRect(rendererData->renderer, &line);
|
SDL_RenderFillRect(rendererData->renderer, &line);
|
||||||
}
|
}
|
||||||
if (config->width.right > 0) {
|
if (config->width.right > 0) {
|
||||||
const float starting_x = rect.x + rect.w - (float)config->width.right;
|
const float starting_x = rect.x + rect.w - (float)config->width.right;
|
||||||
const float starting_y = rect.y + clampedRadii.topRight;
|
const float starting_y = rect.y + clampedRadii.topRight;
|
||||||
const float length = rect.h - clampedRadii.topRight - clampedRadii.bottomRight;
|
const float length = rect.h - clampedRadii.topRight - clampedRadii.bottomRight;
|
||||||
SDL_FRect line = { starting_x, starting_y, config->width.right, length };
|
SDL_FRect line = { starting_x, starting_y, (float)config->width.right, length };
|
||||||
SDL_RenderFillRect(rendererData->renderer, &line);
|
SDL_RenderFillRect(rendererData->renderer, &line);
|
||||||
}
|
}
|
||||||
if (config->width.top > 0) {
|
if (config->width.top > 0) {
|
||||||
const float starting_x = rect.x + clampedRadii.topLeft;
|
const float starting_x = rect.x + clampedRadii.topLeft;
|
||||||
const float length = rect.w - clampedRadii.topLeft - clampedRadii.topRight;
|
const float length = rect.w - clampedRadii.topLeft - clampedRadii.topRight;
|
||||||
SDL_FRect line = { starting_x, rect.y, length, config->width.top };
|
SDL_FRect line = { starting_x, rect.y, length, (float)config->width.top };
|
||||||
SDL_RenderFillRect(rendererData->renderer, &line);
|
SDL_RenderFillRect(rendererData->renderer, &line);
|
||||||
}
|
}
|
||||||
if (config->width.bottom > 0) {
|
if (config->width.bottom > 0) {
|
||||||
const float starting_x = rect.x + clampedRadii.bottomLeft;
|
const float starting_x = rect.x + clampedRadii.bottomLeft;
|
||||||
const float starting_y = rect.y + rect.h - (float)config->width.bottom;
|
const float starting_y = rect.y + rect.h - (float)config->width.bottom;
|
||||||
const float length = rect.w - clampedRadii.bottomLeft - clampedRadii.bottomRight;
|
const float length = rect.w - clampedRadii.bottomLeft - clampedRadii.bottomRight;
|
||||||
SDL_FRect line = { starting_x, starting_y, length, config->width.bottom };
|
SDL_FRect line = { starting_x, starting_y, length, (float)config->width.bottom };
|
||||||
SDL_SetRenderDrawColor(rendererData->renderer, config->color.r, config->color.g, config->color.b, config->color.a);
|
SDL_SetRenderDrawColor(rendererData->renderer, config->color.r, config->color.g, config->color.b, config->color.a);
|
||||||
SDL_RenderFillRect(rendererData->renderer, &line);
|
SDL_RenderFillRect(rendererData->renderer, &line);
|
||||||
}
|
}
|
||||||
@ -238,10 +238,10 @@ static void SDL_Clay_RenderClayCommands(Clay_SDL3RendererData *rendererData, Cla
|
|||||||
case CLAY_RENDER_COMMAND_TYPE_SCISSOR_START: {
|
case CLAY_RENDER_COMMAND_TYPE_SCISSOR_START: {
|
||||||
Clay_BoundingBox boundingBox = rcmd->boundingBox;
|
Clay_BoundingBox boundingBox = rcmd->boundingBox;
|
||||||
currentClippingRectangle = (SDL_Rect) {
|
currentClippingRectangle = (SDL_Rect) {
|
||||||
.x = boundingBox.x,
|
.x = (int)boundingBox.x,
|
||||||
.y = boundingBox.y,
|
.y = (int)boundingBox.y,
|
||||||
.w = boundingBox.width,
|
.w = (int)boundingBox.width,
|
||||||
.h = boundingBox.height,
|
.h = (int)boundingBox.height,
|
||||||
};
|
};
|
||||||
SDL_SetRenderClipRect(rendererData->renderer, ¤tClippingRectangle);
|
SDL_SetRenderClipRect(rendererData->renderer, ¤tClippingRectangle);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user