added util functions default value for some structs and wraped some c functions to make them easier to use
This commit is contained in:
parent
e89422deda
commit
c004aed0a3
1 changed files with 52 additions and 25 deletions
77
src/root.zig
77
src/root.zig
|
@ -73,12 +73,12 @@ pub const TextWrapMode = enum(EnumBackingType) {
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const TextElementConfig = extern struct {
|
pub const TextElementConfig = extern struct {
|
||||||
textColor: Color,
|
textColor: Color = .{ 0, 0, 0, 255 },
|
||||||
fontId: u16,
|
fontId: u16 = 0,
|
||||||
fontSize: u16,
|
fontSize: u16 = 20,
|
||||||
letterSpacing: u16,
|
letterSpacing: u16 = 0,
|
||||||
lineSpacing: u16,
|
lineSpacing: u16 = 0,
|
||||||
wrapMode: TextWrapMode,
|
wrapMode: TextWrapMode = .Newlines,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const ImageElementConfig = extern struct {
|
pub const ImageElementConfig = extern struct {
|
||||||
|
@ -160,8 +160,8 @@ pub const SizingType = enum(EnumBackingType) {
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const SizingConstraintsMinMax = extern struct {
|
pub const SizingConstraintsMinMax = extern struct {
|
||||||
min: f32,
|
min: f32 = 0,
|
||||||
max: f32,
|
max: f32 = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const SizingConstraints = extern union {
|
pub const SizingConstraints = extern union {
|
||||||
|
@ -170,13 +170,13 @@ pub const SizingConstraints = extern union {
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const SizingAxis = extern struct {
|
pub const SizingAxis = extern struct {
|
||||||
constraints: SizingConstraints,
|
constraints: SizingConstraints = .{ .sizePercent = 100 },
|
||||||
type: SizingType,
|
type: SizingType = .FIT,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const Sizing = extern struct {
|
pub const Sizing = extern struct {
|
||||||
width: SizingAxis,
|
width: SizingAxis = .{},
|
||||||
height: SizingAxis,
|
height: SizingAxis = .{},
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const Padding = extern struct {
|
pub const Padding = extern struct {
|
||||||
|
@ -213,7 +213,7 @@ pub const LayoutConfig = extern struct {
|
||||||
},
|
},
|
||||||
padding: Padding = .{},
|
padding: Padding = .{},
|
||||||
childGap: u16 = 0,
|
childGap: u16 = 0,
|
||||||
layoutDirection: LayoutDirection = .TOP_TO_BOTTOM,
|
layoutDirection: LayoutDirection = .LEFT_TO_RIGHT,
|
||||||
childAlignment: ChildAlignment = .{},
|
childAlignment: ChildAlignment = .{},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -227,12 +227,11 @@ pub fn ClayArray(comptime T: type) type {
|
||||||
|
|
||||||
const extern_elements = struct {
|
const extern_elements = struct {
|
||||||
// TODO: should use @extern instead but zls does not yet support it well
|
// TODO: should use @extern instead but zls does not yet support it well
|
||||||
// Foreign function declarations
|
|
||||||
extern "c" fn Clay_MinMemorySize() u32;
|
extern "c" fn Clay_MinMemorySize() u32;
|
||||||
extern "c" fn Clay_CreateArenaWithCapacityAndMemory(capacity: u32, offset: [*]u8) Arena;
|
extern "c" fn Clay_CreateArenaWithCapacityAndMemory(capacity: u32, offset: [*]u8) Arena;
|
||||||
extern "c" fn Clay_SetPointerState(position: Vector2, pointerDown: bool) void;
|
extern "c" fn Clay_SetPointerState(position: [*]f32, pointerDown: bool) void;
|
||||||
extern "c" fn Clay_Initialize(arena: Arena, layoutDimensions: Dimensions) void;
|
extern "c" fn Clay_Initialize(arena: Arena, layoutDimensions: Dimensions) void;
|
||||||
extern "c" fn Clay_UpdateScrollContainers(isPointerActive: bool, scrollDelta: Vector2, deltaTime: f32) void;
|
extern "c" fn Clay_UpdateScrollContainers(isPointerActive: bool, scrollDelta: [*]f32, deltaTime: f32) void;
|
||||||
extern "c" fn Clay_SetLayoutDimensions(dimensions: Dimensions) void;
|
extern "c" fn Clay_SetLayoutDimensions(dimensions: Dimensions) void;
|
||||||
extern "c" fn Clay_BeginLayout() void;
|
extern "c" fn Clay_BeginLayout() void;
|
||||||
extern "c" fn Clay_EndLayout() ClayArray(RenderCommand);
|
extern "c" fn Clay_EndLayout() ClayArray(RenderCommand);
|
||||||
|
@ -242,7 +241,6 @@ const extern_elements = struct {
|
||||||
extern "c" fn Clay_RenderCommandArray_Get(array: *ClayArray(RenderCommand), index: i32) *RenderCommand;
|
extern "c" fn Clay_RenderCommandArray_Get(array: *ClayArray(RenderCommand), index: i32) *RenderCommand;
|
||||||
extern "c" fn Clay_SetDebugModeEnabled(enabled: bool) void;
|
extern "c" fn Clay_SetDebugModeEnabled(enabled: bool) void;
|
||||||
|
|
||||||
// Private external functions
|
|
||||||
extern "c" fn Clay__OpenContainerElement(id: ElementId, layoutConfig: *LayoutConfig) void;
|
extern "c" fn Clay__OpenContainerElement(id: ElementId, layoutConfig: *LayoutConfig) void;
|
||||||
extern "c" fn Clay__OpenRectangleElement(id: ElementId, layoutConfig: *LayoutConfig, rectangleConfig: *RectangleElementConfig) void;
|
extern "c" fn Clay__OpenRectangleElement(id: ElementId, layoutConfig: *LayoutConfig, rectangleConfig: *RectangleElementConfig) void;
|
||||||
extern "c" fn Clay__OpenTextElement(id: ElementId, text: String, textConfig: *TextElementConfig) void;
|
extern "c" fn Clay__OpenTextElement(id: ElementId, text: String, textConfig: *TextElementConfig) void;
|
||||||
|
@ -265,12 +263,9 @@ const extern_elements = struct {
|
||||||
extern "c" fn Clay__HashString(toHash: String, index: u32) ElementId;
|
extern "c" fn Clay__HashString(toHash: String, index: u32) ElementId;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Public function declarations
|
|
||||||
pub const minMemorySize = extern_elements.Clay_MinMemorySize;
|
pub const minMemorySize = extern_elements.Clay_MinMemorySize;
|
||||||
pub const createArenaWithCapacityAndMemory = extern_elements.Clay_CreateArenaWithCapacityAndMemory;
|
pub const createArenaWithCapacityAndMemory = extern_elements.Clay_CreateArenaWithCapacityAndMemory;
|
||||||
pub const setPointerState = extern_elements.Clay_SetPointerState;
|
|
||||||
pub const initialize = extern_elements.Clay_Initialize;
|
pub const initialize = extern_elements.Clay_Initialize;
|
||||||
pub const updateScrollContainers = extern_elements.Clay_UpdateScrollContainers;
|
|
||||||
pub const setLayoutDimensions = extern_elements.Clay_SetLayoutDimensions;
|
pub const setLayoutDimensions = extern_elements.Clay_SetLayoutDimensions;
|
||||||
pub const beginLayout = extern_elements.Clay_BeginLayout;
|
pub const beginLayout = extern_elements.Clay_BeginLayout;
|
||||||
pub const endLayout = extern_elements.Clay_EndLayout;
|
pub const endLayout = extern_elements.Clay_EndLayout;
|
||||||
|
@ -280,18 +275,16 @@ pub const setMeasureTextFunction = extern_elements.Clay_SetMeasureTextFunction;
|
||||||
pub const renderCommandArray_Get = extern_elements.Clay_RenderCommandArray_Get;
|
pub const renderCommandArray_Get = extern_elements.Clay_RenderCommandArray_Get;
|
||||||
pub const setDebugModeEnabled = extern_elements.Clay_SetDebugModeEnabled;
|
pub const setDebugModeEnabled = extern_elements.Clay_SetDebugModeEnabled;
|
||||||
|
|
||||||
// Private function declarations
|
|
||||||
pub const rontainer = extern_elements.Clay__OpenContainerElement;
|
pub const rontainer = extern_elements.Clay__OpenContainerElement;
|
||||||
pub const rectangle = extern_elements.Clay__OpenRectangleElement;
|
pub const rectangle = extern_elements.Clay__OpenRectangleElement;
|
||||||
pub const text = extern_elements.Clay__OpenTextElement;
|
|
||||||
pub const image = extern_elements.Clay__OpenImageElement;
|
pub const image = extern_elements.Clay__OpenImageElement;
|
||||||
pub const scroll = extern_elements.Clay__OpenScrollElement;
|
pub const scroll = extern_elements.Clay__OpenScrollElement;
|
||||||
pub const floating = extern_elements.Clay__OpenFloatingElement;
|
pub const floating = extern_elements.Clay__OpenFloatingElement;
|
||||||
pub const border = extern_elements.Clay__OpenBorderElement;
|
pub const border = extern_elements.Clay__OpenBorderElement;
|
||||||
pub const sustomElement = extern_elements.Clay__OpenCustomElement;
|
pub const customElement = extern_elements.Clay__OpenCustomElement;
|
||||||
pub const closeParent = extern_elements.Clay__CloseElementWithChildren;
|
pub const closeParent = extern_elements.Clay__CloseElementWithChildren;
|
||||||
pub const closeScroll = extern_elements.Clay__CloseScrollElement;
|
pub const closeScroll = extern_elements.Clay__CloseScrollElement;
|
||||||
pub const sloseFloating = extern_elements.Clay__CloseFloatingElement;
|
pub const closeFloating = extern_elements.Clay__CloseFloatingElement;
|
||||||
pub const layout = extern_elements.Clay__StoreLayoutConfig;
|
pub const layout = extern_elements.Clay__StoreLayoutConfig;
|
||||||
pub const rectangleConfig = extern_elements.Clay__StoreRectangleElementConfig;
|
pub const rectangleConfig = extern_elements.Clay__StoreRectangleElementConfig;
|
||||||
pub const textConfig = extern_elements.Clay__StoreTextElementConfig;
|
pub const textConfig = extern_elements.Clay__StoreTextElementConfig;
|
||||||
|
@ -302,6 +295,21 @@ pub const scrollConfig = extern_elements.Clay__StoreScrollElementConfig;
|
||||||
pub const borderConfig = extern_elements.Clay__StoreBorderElementConfig;
|
pub const borderConfig = extern_elements.Clay__StoreBorderElementConfig;
|
||||||
pub const hashString = extern_elements.Clay__HashString;
|
pub const hashString = extern_elements.Clay__HashString;
|
||||||
|
|
||||||
|
pub fn setPointerState(position: Vector2, pointerDown: bool) void {
|
||||||
|
extern_elements.Clay_SetPointerState(@ptrCast(@constCast(&position)), pointerDown);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn updateScrollContainers(isPointerActive: bool, scrollDelta: Vector2, deltaTime: f32) void {
|
||||||
|
extern_elements.Clay_UpdateScrollContainers(isPointerActive, @ptrCast(@constCast(&scrollDelta)), deltaTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn text(id: ElementId, string: []const u8, config: *TextElementConfig) void {
|
||||||
|
extern_elements.Clay__OpenTextElement(id, .{
|
||||||
|
.chars = @ptrCast(@constCast(string)),
|
||||||
|
.length = @intCast(string.len),
|
||||||
|
}, config);
|
||||||
|
}
|
||||||
|
|
||||||
fn measureText(str: *String, conf: *TextElementConfig) callconv(.C) Dimensions {
|
fn measureText(str: *String, conf: *TextElementConfig) callconv(.C) Dimensions {
|
||||||
_ = str;
|
_ = str;
|
||||||
_ = conf;
|
_ = conf;
|
||||||
|
@ -336,9 +344,28 @@ test {
|
||||||
std.debug.print("{any}", .{_layout.internalArray[0..1]});
|
std.debug.print("{any}", .{_layout.internalArray[0..1]});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn ID(name: []const u8) ElementId {
|
pub fn ID(name: []const u8) ElementId {
|
||||||
return hashString(.{
|
return hashString(.{
|
||||||
.chars = @ptrCast(@constCast(name)),
|
.chars = @ptrCast(@constCast(name)),
|
||||||
.length = @intCast(name.len),
|
.length = @intCast(name.len),
|
||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn IDI(name: []const u8, index: u32) ElementId {
|
||||||
|
return hashString(.{
|
||||||
|
.chars = @ptrCast(@constCast(name)),
|
||||||
|
.length = @intCast(name.len),
|
||||||
|
}, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn sizingGrow(sizeMinMax: SizingConstraintsMinMax) SizingAxis {
|
||||||
|
return .{ .type = .GROW, .constraints = .{ .sizeMinMax = sizeMinMax } };
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn sizingFixed(size: f32) SizingAxis {
|
||||||
|
return SizingAxis{ .type = .FIT, .constraints = .{ .sizeMinMax = .{ .max = size, .min = size } } };
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SizingPercent(sizePercent: f32) SizingAxis {
|
||||||
|
return .{ .type = .PERCENT, .constraints = .{ .sizePercent = sizePercent } };
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue