Compare commits

...

8 Commits

Author SHA1 Message Date
bangbangsheshotmedown
a4f0a5f51a
Merge ea3e29be5c into 19a27b39f2 2025-03-09 04:19:09 +01:00
Daniel Collin
19a27b39f2
[Compilers] Fixed SIMD related compile error on some ARM compilers (#316)
Some checks are pending
CMake on multiple platforms / build (Release, cl, cl, windows-latest) (push) Waiting to run
CMake on multiple platforms / build (Release, clang, clang++, ubuntu-latest) (push) Waiting to run
CMake on multiple platforms / build (Release, gcc, g++, ubuntu-latest) (push) Waiting to run
2025-03-09 10:28:09 +13:00
Nic Barker
22e8cc318c [Bindings/Odin] Update odin bindings for text config userdata pointer
Some checks are pending
CMake on multiple platforms / build (Release, cl, cl, windows-latest) (push) Waiting to run
CMake on multiple platforms / build (Release, clang, clang++, ubuntu-latest) (push) Waiting to run
CMake on multiple platforms / build (Release, gcc, g++, ubuntu-latest) (push) Waiting to run
2025-03-08 11:08:04 +13:00
Michael Savage
8e6640f7a2
[Core] Add a userData pointer to Clay_TextElementConfig (#274) 2025-03-08 11:01:26 +13:00
Ethan McCue
4f8957d5d2
[Documentation] Fix typo (#315)
Some checks are pending
CMake on multiple platforms / build (Release, cl, cl, windows-latest) (push) Waiting to run
CMake on multiple platforms / build (Release, clang, clang++, ubuntu-latest) (push) Waiting to run
CMake on multiple platforms / build (Release, gcc, g++, ubuntu-latest) (push) Waiting to run
2025-03-07 21:45:27 +13:00
bangbangsheshotmedown
ea3e29be5c
Create README.md 2024-10-29 19:53:11 +00:00
bangbangsheshotmedown
134beca09c
Add C file 2024-10-29 19:50:51 +00:00
bangbangsheshotmedown
b3cdf90d39
Add D example 2024-10-29 19:50:13 +00:00
14 changed files with 104 additions and 4 deletions

5
bindings/D/README.md Normal file
View File

@ -0,0 +1,5 @@
### D Language Example
```
dmd main.d clay.c
```

2
bindings/D/clay.c Normal file
View File

@ -0,0 +1,2 @@
#define CLAY_IMPLEMENTATION
#include "../../clay.h"

88
bindings/D/main.d Normal file
View File

@ -0,0 +1,88 @@
import clay;
import core.stdc.stdlib;
__gshared:
Clay_LayoutConfig layoutElement = { padding: {5} };
extern(C) void main()
{
ulong totalMemorySize = Clay_MinMemorySize();
Clay_Arena clayMemory = {
label: str("Clay Memory Arena"),
capacity: totalMemorySize,
memory: cast(char*)malloc(totalMemorySize)
};
Clay_Initialize(clayMemory, Clay_Dimensions(1024,768));
Clay_BeginLayout();
if (ClayBegin( Rectangle(color: Clay_Color(255,255,255,0)), Layout(layoutElement)))
{ }
ClayEnd();
}
// helper functions
Clay_String str(string it)
{
return Clay_String(cast(int)it.length, it.ptr);
}
bool ClayBegin(A...)(A configs)
{
Clay__OpenElement();
foreach(config; configs)
{
alias T = typeof(config);
static if (is(T == Clay_ElementId))
{
Clay__AttachId(config);
}
else static if(is(T == Clay_LayoutConfig*))
{
Clay__AttachLayoutConfig(config);
}
else static if(is(T == Clay_ElementConfig))
{
Clay__AttachElementConfig(config.config, config.type);
}
else static assert(0, "unsupported " ~ typeof(config).stringof);
}
Clay__ElementPostConfiguration();
return true;
}
void ClayEnd()
{
Clay__CloseElement();
}
Clay_ElementId Id(string label)
{
return Clay__HashString(str(label), 0, 0);
}
Clay_LayoutConfig* Layout(lazy Clay_Sizing sizing = Clay_Sizing.init)
{
Clay_LayoutConfig config;
config.sizing = sizing;
return Clay__StoreLayoutConfig(config);
}
Clay_LayoutConfig* Layout(Clay_LayoutConfig config)
{
return Clay__StoreLayoutConfig(config);
}
Clay_ElementConfig Rectangle(lazy Clay_Color color = Clay_Color.init)
{
Clay_RectangleElementConfig config;
config.color = color;
Clay_ElementConfig ret;
ret.type = Clay__ElementConfigType.CLAY__ELEMENT_CONFIG_TYPE_RECTANGLE;
ret.config.rectangleElementConfig = Clay__StoreRectangleElementConfig(config);
return ret;
}

View File

@ -102,6 +102,7 @@ TextAlignment :: enum EnumBackingType {
}
TextElementConfig :: struct {
userData: rawptr,
textColor: Color,
fontId: u16,
fontSize: u16,

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -489,7 +489,7 @@ errorHandler :: proc "c" (errorData: clay.ErrorData) {
}
main :: proc() {
minMemorySize: u32 = clay.MinMemorySize()
minMemorySize: c.size_t = cast(c.size_t)clay.MinMemorySize()
memory := make([^]u8, minMemorySize)
arena: clay.Arena = clay.CreateArenaWithCapacityAndMemory(minMemorySize, memory)
clay.Initialize(arena, {cast(f32)raylib.GetScreenWidth(), cast(f32)raylib.GetScreenHeight()}, { handler = errorHandler })

8
clay.h
View File

@ -266,7 +266,7 @@ typedef CLAY_PACKED_ENUM {
CLAY_ALIGN_Y_TOP,
// Aligns child elements to the bottom of this element, offset by padding.width.bottom
CLAY_ALIGN_Y_BOTTOM,
// Aligns child elements vertiically to the center of this element
// Aligns child elements vertically to the center of this element
CLAY_ALIGN_Y_CENTER,
} Clay_LayoutAlignmentY;
@ -357,6 +357,8 @@ typedef CLAY_PACKED_ENUM {
// Controls various functionality related to text elements.
typedef struct {
// A pointer that will be transparently passed through to the resulting render command.
void *userData;
// The RGBA color of the font to render, conventionally specified as 0-255.
Clay_Color textColor;
// An integer transparently passed to Clay_MeasureText to identify the font to use.
@ -1769,7 +1771,7 @@ bool Clay__MemCmp(const char *s1, const char *s2, int32_t length);
uint8x16_t v2 = vld1q_u8((const uint8_t *)s2);
// Compare vectors
if (vminvq_u32(vceqq_u8(v1, v2)) != 0xFFFFFFFF) { // If there's a difference
if (vminvq_u32(vreinterpretq_u32_u8(vceqq_u8(v1, v2))) != 0xFFFFFFFF) { // If there's a difference
return false;
}
@ -2692,7 +2694,7 @@ void Clay__CalculateFinalLayout(void) {
.letterSpacing = textElementConfig->letterSpacing,
.lineHeight = textElementConfig->lineHeight,
}},
.userData = sharedConfig->userData,
.userData = textElementConfig->userData,
.id = Clay__HashNumber(lineIndex, currentElement->id).id,
.zIndex = root->zIndex,
.commandType = CLAY_RENDER_COMMAND_TYPE_TEXT,

View File

@ -119,6 +119,7 @@
{name: 'bottomRight', type: 'float'},
]};
let textConfigDefinition = { name: 'text', type: 'struct', members: [
{ name: 'userData', type: 'uint32_t' },
{ name: 'textColor', ...colorDefinition },
{ name: 'fontId', type: 'uint16_t' },
{ name: 'fontSize', type: 'uint16_t' },

View File

@ -119,6 +119,7 @@
{name: 'bottomRight', type: 'float'},
]};
let textConfigDefinition = { name: 'text', type: 'struct', members: [
{ name: 'userData', type: 'uint32_t' },
{ name: 'textColor', ...colorDefinition },
{ name: 'fontId', type: 'uint16_t' },
{ name: 'fontSize', type: 'uint16_t' },