diff --git a/bindings/odin/build-clay-lib.sh b/bindings/odin/build-clay-lib.sh index 590f80a..17870d9 100755 --- a/bindings/odin/build-clay-lib.sh +++ b/bindings/odin/build-clay-lib.sh @@ -1,7 +1,13 @@ cp ../../clay.h clay.c; +# Intel Mac clang -c -o clay.o -static -target x86_64-apple-darwin clay.c -fPIC && ar r clay-odin/macos/clay.a clay.o; +# ARM Mac clang -c -o clay.o -static clay.c -fPIC && ar r clay-odin/macos-arm64/clay.a clay.o; +# x64 Windows clang -c -o clay-odin/windows/clay.lib -target x86_64-pc-windows-msvc -fuse-ld=llvm-lib -static clay.c; +# Linux +clang -c -o clay.o -static -target x86_64-unknown-linux-gnu clay.c -fPIC && ar r clay-odin/linux/clay.a clay.o; +# WASM clang -c -o clay-odin/wasm/clay.o -target wasm32 -nostdlib -static clay.c; rm clay.o; rm clay.c; diff --git a/bindings/odin/clay-odin/clay.odin b/bindings/odin/clay-odin/clay.odin index f877d67..7e33c5e 100644 --- a/bindings/odin/clay-odin/clay.odin +++ b/bindings/odin/clay-odin/clay.odin @@ -6,7 +6,7 @@ import "core:strings" when ODIN_OS == .Windows { foreign import Clay "windows/clay.lib" } else when ODIN_OS == .Linux { - foreign import Clay "linux/libclay.a" + foreign import Clay "linux/clay.a" } else when ODIN_OS == .Darwin { when ODIN_ARCH == .arm64 { foreign import Clay "macos-arm64/clay.a" @@ -14,7 +14,7 @@ when ODIN_OS == .Windows { foreign import Clay "macos/clay.a" } } else when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 { - foreign import Clay "wasm/clay.o" + foreign import Clay "wasm/clay.o" } String :: struct { @@ -57,7 +57,13 @@ BorderData :: struct { color: Color, } -RenderCommandType :: enum u8 { +when ODIN_OS == .Windows { + EnumBackingType :: u32 +} else { + EnumBackingType :: u8 +} + +RenderCommandType :: enum EnumBackingType { None, Rectangle, Border, @@ -104,7 +110,7 @@ ScrollElementConfig :: struct { vertical: bool, } -FloatingAttachPointType :: enum u8 { +FloatingAttachPointType :: enum EnumBackingType { LEFT_TOP, LEFT_CENTER, LEFT_BOTTOM, @@ -156,7 +162,7 @@ ScrollContainerData :: struct { found: bool, } -SizingType :: enum u8 { +SizingType :: enum EnumBackingType { FIT, GROW, PERCENT, @@ -188,18 +194,18 @@ Padding :: struct { y: u16, } -LayoutDirection :: enum u8 { +LayoutDirection :: enum EnumBackingType { LEFT_TO_RIGHT, TOP_TO_BOTTOM, } -LayoutAlignmentX :: enum u8 { +LayoutAlignmentX :: enum EnumBackingType { LEFT, RIGHT, CENTER, } -LayoutAlignmentY :: enum u8 { +LayoutAlignmentY :: enum EnumBackingType { TOP, BOTTOM, CENTER, @@ -240,7 +246,7 @@ foreign Clay { } @(private, link_prefix = "Clay_", default_calling_convention = "c") -foreign { +foreign _ { _layoutConfigs: ClayArray(LayoutConfig) _rectangleElementConfigs: ClayArray(RectangleElementConfig) _textElementConfigs: ClayArray(TextElementConfig) diff --git a/bindings/odin/clay-odin/linux/clay.a b/bindings/odin/clay-odin/linux/clay.a new file mode 100644 index 0000000..f6a59c7 Binary files /dev/null and b/bindings/odin/clay-odin/linux/clay.a differ diff --git a/bindings/odin/clay-odin/macos-arm64/clay.a b/bindings/odin/clay-odin/macos-arm64/clay.a index 3f8d1f3..37f765b 100644 Binary files a/bindings/odin/clay-odin/macos-arm64/clay.a and b/bindings/odin/clay-odin/macos-arm64/clay.a differ diff --git a/bindings/odin/clay-odin/macos/clay.a b/bindings/odin/clay-odin/macos/clay.a index de77393..0608ed1 100644 Binary files a/bindings/odin/clay-odin/macos/clay.a and b/bindings/odin/clay-odin/macos/clay.a differ diff --git a/bindings/odin/clay-odin/windows/clay.lib b/bindings/odin/clay-odin/windows/clay.lib index 5acb144..c4a727b 100644 Binary files a/bindings/odin/clay-odin/windows/clay.lib and b/bindings/odin/clay-odin/windows/clay.lib differ diff --git a/bindings/odin/examples/clay-official-website/clay-official-website.odin b/bindings/odin/examples/clay-official-website/clay-official-website.odin index 0415c45..5c973f6 100644 --- a/bindings/odin/examples/clay-official-website/clay-official-website.odin +++ b/bindings/odin/examples/clay-official-website/clay-official-website.odin @@ -229,14 +229,14 @@ DeclarativeSyntaxPageDesktop :: proc() { clay.Layout({sizing = {clay.SizingGrow({}), clay.SizingGrow({})}, childAlignment = {y = .CENTER}, padding = {32, 32}, childGap = 32}), clay.BorderConfig({left = {2, COLOR_RED}, right = {2, COLOR_RED}}), ) { - DeclarativeSyntaxPage({fontSize = 48, fontId = FONT_ID_TITLE_48, textColor = COLOR_LIGHT}, clay.SizingGrow({})) + DeclarativeSyntaxPage({fontSize = 52, fontId = FONT_ID_TITLE_52, textColor = COLOR_RED}, clay.SizingPercent(0.5)) } } } DeclarativeSyntaxPageMobile :: proc() { if clay.Container( - clay.ID("SyntaxPageDesktop"), + clay.ID("SyntaxPageMobile"), clay.Layout( { layoutDirection = .TOP_TO_BOTTOM, @@ -247,7 +247,7 @@ DeclarativeSyntaxPageMobile :: proc() { }, ), ) { - DeclarativeSyntaxPage({fontSize = 52, fontId = FONT_ID_TITLE_52, textColor = COLOR_LIGHT}, clay.SizingGrow({})) + DeclarativeSyntaxPage({fontSize = 48, fontId = FONT_ID_TITLE_48, textColor = COLOR_RED}, clay.SizingGrow({})) } } @@ -534,6 +534,8 @@ main :: proc() { checkImage5 = raylib.LoadTextureFromImage(raylib.LoadImage("resources/check_5.png")) for !raylib.WindowShouldClose() { + defer free_all(context.temp_allocator) + animationLerpValue += raylib.GetFrameTime() if animationLerpValue > 1 { animationLerpValue = animationLerpValue - 2 diff --git a/bindings/odin/examples/clay-official-website/clay_renderer_raylib.odin b/bindings/odin/examples/clay-official-website/clay_renderer_raylib.odin index 22cb655..1eb18eb 100644 --- a/bindings/odin/examples/clay-official-website/clay_renderer_raylib.odin +++ b/bindings/odin/examples/clay-official-website/clay_renderer_raylib.odin @@ -2,6 +2,7 @@ package main import clay "../../clay-odin" import "core:math" +import "core:strings" import "vendor:raylib" RaylibFont :: struct { @@ -47,7 +48,7 @@ measureText :: proc "c" (text: ^clay.String, config: ^clay.TextElementConfig) -> return textSize } -clayRaylibRender :: proc(renderCommands: ^clay.ClayArray(clay.RenderCommand)) { +clayRaylibRender :: proc(renderCommands: ^clay.ClayArray(clay.RenderCommand), allocator := context.temp_allocator) { for i in 0..