mirror of
				https://github.com/nicbarker/clay.git
				synced 2025-11-04 00:26:17 +00:00 
			
		
		
		
	More odin bindings
This commit is contained in:
		
							parent
							
								
									4efd7c5651
								
							
						
					
					
						commit
						91ff9d9d86
					
				
							
								
								
									
										1
									
								
								bindings/odin/build-clay-lib.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								bindings/odin/build-clay-lib.sh
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
cp ../../clay.h clay.c; clang -c -o clay.o -static clay.c -fPIC; rm clay.c
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +47,7 @@ CornerRadius :: struct {
 | 
			
		|||
	bottomRight: c.float,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Border :: struct {
 | 
			
		||||
BorderData :: struct {
 | 
			
		||||
	width: c.uint32_t,
 | 
			
		||||
	color: Color,
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -85,26 +85,51 @@ CustomElementConfig :: struct {
 | 
			
		|||
	customData: rawptr,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BorderContainerElementConfig :: struct {
 | 
			
		||||
	left:            Border,
 | 
			
		||||
	right:           Border,
 | 
			
		||||
	top:             Border,
 | 
			
		||||
	bottom:          Border,
 | 
			
		||||
	betweenChildren: Border,
 | 
			
		||||
BorderElementConfig :: struct {
 | 
			
		||||
	left:            BorderData,
 | 
			
		||||
	right:           BorderData,
 | 
			
		||||
	top:             BorderData,
 | 
			
		||||
	bottom:          BorderData,
 | 
			
		||||
	betweenChildren: BorderData,
 | 
			
		||||
	cornerRadius:    CornerRadius,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ScrollContainerElementConfig :: struct {
 | 
			
		||||
ScrollElementConfig :: struct {
 | 
			
		||||
	horizontal: c.bool,
 | 
			
		||||
	vertical:   c.bool,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FloatingAttachPointType :: enum u8 {
 | 
			
		||||
	LEFT_TOP,
 | 
			
		||||
	LEFT_CENTER,
 | 
			
		||||
	LEFT_BOTTOM,
 | 
			
		||||
	CENTER_TOP,
 | 
			
		||||
	CENTER_CENTER,
 | 
			
		||||
	CENTER_BOTTOM,
 | 
			
		||||
	RIGHT_TOP,
 | 
			
		||||
	RIGHT_CENTER,
 | 
			
		||||
	RIGHT_BOTTOM,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FloatingAttachPoints :: struct {
 | 
			
		||||
	element: FloatingAttachPointType,
 | 
			
		||||
	parent:  FloatingAttachPointType,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FloatingElementConfig :: struct {
 | 
			
		||||
	offset:     Vector2,
 | 
			
		||||
	expand:     Dimensions,
 | 
			
		||||
	zIndex:     c.uint16_t,
 | 
			
		||||
	parentId:   c.uint32_t,
 | 
			
		||||
	attachment: FloatingAttachPoints,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ElementConfigUnion :: struct #raw_union {
 | 
			
		||||
	rectangleElementConfig:       ^RectangleElementConfig,
 | 
			
		||||
	rectangleElementConfig:       ^ImageElementConfig,
 | 
			
		||||
	textElementConfig:            ^TextElementConfig,
 | 
			
		||||
	imageElementConfig:           ^ImageElementConfig,
 | 
			
		||||
	customElementConfig:          ^CustomElementConfig,
 | 
			
		||||
	borderContainerElementConfig: ^BorderContainerElementConfig,
 | 
			
		||||
	borderContainerElementConfig: ^BorderElementConfig,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
RenderCommand :: struct {
 | 
			
		||||
| 
						 | 
				
			
			@ -127,7 +152,7 @@ ScrollContainerData :: struct {
 | 
			
		|||
	scrollPosition:            ^Vector2,
 | 
			
		||||
	scrollContainerDimensions: Dimensions,
 | 
			
		||||
	contentDimensions:         Dimensions,
 | 
			
		||||
	config:                    ScrollContainerElementConfig,
 | 
			
		||||
	config:                    ScrollElementConfig,
 | 
			
		||||
	// Indicates whether an actual scroll container matched the provided ID or if the default struct was returned.
 | 
			
		||||
	found:                     c.bool,
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -195,8 +220,17 @@ foreign Clay {
 | 
			
		|||
	Clay_EndLayout :: proc(screenWidth: c.int, screenHeight: c.int) -> RenderCommandArray ---
 | 
			
		||||
	Clay_PointerOver :: proc(id: c.uint32_t) -> c.bool ---
 | 
			
		||||
	Clay_GetScrollContainerData :: proc(id: c.uint32_t) -> ScrollContainerData ---
 | 
			
		||||
	Clay__CloseContainerElement :: proc() ---
 | 
			
		||||
	Clay__OpenContainerElement :: proc(id: c.uint32_t, layoutConfig: ^LayoutConfig) ---
 | 
			
		||||
	Clay__OpenRectangleElement :: proc(id: c.uint32_t, layoutConfig: ^LayoutConfig, rectangleConfig: ^RectangleElementConfig) ---
 | 
			
		||||
	Clay__OpenTextElement :: proc(id: c.uint32_t, text: String, textConfig: ^TextElementConfig) ---
 | 
			
		||||
	Clay__OpenImageContainerElement :: proc(id: c.uint32_t, layoutConfig: ^LayoutConfig, imageConfig: ^ImageElementConfig) ---
 | 
			
		||||
	Clay__OpenScrollContainerElement :: proc(id: c.uint32_t, layoutConfig: ^LayoutConfig, imageConfig: ^ScrollElementConfig) ---
 | 
			
		||||
	Clay__OpenFloatingContainerElement :: proc(id: c.uint32_t, layoutConfig: ^LayoutConfig, imageConfig: ^FloatingElementConfig) ---
 | 
			
		||||
	Clay__OpenBorderContainerElement :: proc(id: c.uint32_t, layoutConfig: ^LayoutConfig, imageConfig: ^BorderElementConfig) ---
 | 
			
		||||
	Clay__OpenCustomElement :: proc(id: c.uint32_t, layoutConfig: ^LayoutConfig, imageConfig: ^CustomElementConfig) ---
 | 
			
		||||
	Clay__CloseContainerElement :: proc() ---
 | 
			
		||||
	Clay__CloseScrollContainerElement :: proc() ---
 | 
			
		||||
	Clay__CloseFloatingContainerElement :: proc() ---
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MinMemorySize :: proc() -> c.uint32_t {
 | 
			
		||||
| 
						 | 
				
			
			@ -235,6 +269,12 @@ GetScrollContainerData :: proc(id: c.uint32_t) -> ScrollContainerData {
 | 
			
		|||
	return Clay_GetScrollContainerData(id)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@(deferred_none = Clay__CloseContainerElement)
 | 
			
		||||
Container :: proc(id: c.uint32_t, layoutConfig: ^LayoutConfig) -> bool {
 | 
			
		||||
	Clay__OpenContainerElement(id, layoutConfig)
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@(deferred_none = Clay__CloseContainerElement)
 | 
			
		||||
Rectangle :: proc(
 | 
			
		||||
	id: c.uint32_t,
 | 
			
		||||
| 
						 | 
				
			
			@ -244,3 +284,58 @@ Rectangle :: proc(
 | 
			
		|||
	Clay__OpenRectangleElement(id, layoutConfig, rectangleConfig)
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Text :: proc(id: c.uint32_t, text: String, textConfig: ^TextElementConfig) -> bool {
 | 
			
		||||
	Clay__OpenTextElement(id, text, textConfig)
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@(deferred_none = Clay__CloseContainerElement)
 | 
			
		||||
Image :: proc(
 | 
			
		||||
	id: c.uint32_t,
 | 
			
		||||
	layoutConfig: ^LayoutConfig,
 | 
			
		||||
	imageConfig: ^ImageElementConfig,
 | 
			
		||||
) -> bool {
 | 
			
		||||
	Clay__OpenImageContainerElement(id, layoutConfig, imageConfig)
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@(deferred_none = Clay__CloseContainerElement)
 | 
			
		||||
Scroll :: proc(
 | 
			
		||||
	id: c.uint32_t,
 | 
			
		||||
	layoutConfig: ^LayoutConfig,
 | 
			
		||||
	scrollConfig: ^ScrollElementConfig,
 | 
			
		||||
) -> bool {
 | 
			
		||||
	Clay__OpenScrollContainerElement(id, layoutConfig, scrollConfig)
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@(deferred_none = Clay__CloseFloatingContainerElement)
 | 
			
		||||
Floating :: proc(
 | 
			
		||||
	id: c.uint32_t,
 | 
			
		||||
	layoutConfig: ^LayoutConfig,
 | 
			
		||||
	floatingConfig: ^FloatingElementConfig,
 | 
			
		||||
) -> bool {
 | 
			
		||||
	Clay__OpenFloatingContainerElement(id, layoutConfig, floatingConfig)
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@(deferred_none = Clay__CloseContainerElement)
 | 
			
		||||
Border :: proc(
 | 
			
		||||
	id: c.uint32_t,
 | 
			
		||||
	layoutConfig: ^LayoutConfig,
 | 
			
		||||
	borderConfig: ^BorderElementConfig,
 | 
			
		||||
) -> bool {
 | 
			
		||||
	Clay__OpenBorderContainerElement(id, layoutConfig, borderConfig)
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@(deferred_none = Clay__CloseContainerElement)
 | 
			
		||||
Custom :: proc(
 | 
			
		||||
	id: c.uint32_t,
 | 
			
		||||
	layoutConfig: ^LayoutConfig,
 | 
			
		||||
	customConfig: ^CustomElementConfig,
 | 
			
		||||
) -> bool {
 | 
			
		||||
	Clay__OpenCustomElement(id, layoutConfig, customConfig)
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ main :: proc() {
 | 
			
		|||
		sizing = {width = {type = clay.SizingType.GROW}, height = {type = clay.SizingType.GROW}},
 | 
			
		||||
		padding = {16, 16},
 | 
			
		||||
	}
 | 
			
		||||
	rectangleConfig: clay.RectangleElementConfig = clay.RectangleElementConfig {
 | 
			
		||||
	rectangleConfig: clay.ImageElementConfig = clay.ImageElementConfig {
 | 
			
		||||
		cornerRadius = {topLeft = 5},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue