moved makeClayString to String namespace

This commit is contained in:
johan0A 2025-03-08 16:59:35 +01:00
parent aed6a03a63
commit b536cdc894

View file

@ -57,6 +57,14 @@ pub const String = extern struct {
length: i32,
/// Pointer to the character data
chars: [*]const u8,
/// Converts a Zig string slice to a Clay_String
pub fn fromSlice(string: []const u8) String {
return .{
.chars = @ptrCast(@constCast(string)),
.length = @intCast(string.len),
};
}
};
/// Clay StringSlice is used to represent non-owning string slices
@ -411,37 +419,37 @@ pub const ElementId = extern struct {
/// Creates a global element ID from a string literal
pub fn ID(string: []const u8) ElementId {
return cdefs.Clay__HashString(makeClayString(string), 0, 0);
return cdefs.Clay__HashString(.fromSlice(string), 0, 0);
}
/// Creates a global element ID with an index component for use in loops
/// Equivalent to ID("prefix0"), ID("prefix1"), etc. without string allocations
pub fn IDI(string: []const u8, index: u32) ElementId {
return cdefs.Clay__HashString(makeClayString(string), index, 0);
return cdefs.Clay__HashString(.fromSlice(string), index, 0);
}
/// Creates a local element ID from a string literal
/// Local IDs are scoped to the current parent element
pub fn localID(string: []const u8) ElementId {
return cdefs.Clay__HashString(makeClayString(string), 0, cdefs.Clay__GetParentElementId());
return cdefs.Clay__HashString(.fromSlice(string), 0, cdefs.Clay__GetParentElementId());
}
/// Creates a local element ID from a string literal with index
/// Local IDs are scoped to the current parent element
pub fn localIDI(string: []const u8, index: u32) ElementId {
return cdefs.Clay__HashString(makeClayString(string), index, cdefs.Clay__GetParentElementId());
return cdefs.Clay__HashString(.fromSlice(string), index, cdefs.Clay__GetParentElementId());
}
/// Creates a global element ID from a source location (@src())
/// Useful for auto-generating unique IDs based on code location
pub fn fromSrc(comptime src: std.builtin.SourceLocation) ElementId {
cdefs.Clay__HashString(makeClayString(src.module ++ "#" ++ src.file ++ ":" ++ std.fmt.comptimePrint({}, src.column)), 0, 0);
cdefs.Clay__HashString(.fromSlice(src.module ++ "#" ++ src.file ++ ":" ++ std.fmt.comptimePrint({}, src.column)), 0, 0);
}
/// Creates a global element ID from a source location (@src()) with an index
/// Useful for auto-generating unique IDs based on code location in loops
pub fn fromSrcI(comptime src: std.builtin.SourceLocation, index: u32) ElementId {
cdefs.Clay__HashString(makeClayString(src.module ++ "#" ++ src.file ++ ":" ++ std.fmt.comptimePrint({}, src.column)), index, 0);
cdefs.Clay__HashString(.fromSlice(src.module ++ "#" ++ src.file ++ ":" ++ std.fmt.comptimePrint({}, src.column)), index, 0);
}
};
@ -1032,15 +1040,6 @@ pub fn createArenaWithCapacityAndMemory(buffer: []u8) Arena {
return cdefs.Clay_CreateArenaWithCapacityAndMemory(@intCast(buffer.len), buffer.ptr);
}
// TODO move to String namespace
/// Converts a Zig string slice to a Clay_String
pub fn makeClayString(string: []const u8) String {
return .{
.chars = @ptrCast(@constCast(string)),
.length = @intCast(string.len),
};
}
/// Creates a text element with the given string and configuration
///
/// Example:
@ -1048,7 +1047,7 @@ pub fn makeClayString(string: []const u8) String {
/// text("Hello World", .{ .font_size = 24, .color = .{255, 0, 0, 255} });
/// ```
pub fn text(string: []const u8, config: TextElementConfig) void {
cdefs.Clay__OpenTextElement(makeClayString(string), cdefs.Clay__StoreTextElementConfig(config));
cdefs.Clay__OpenTextElement(.fromSlice(string), cdefs.Clay__StoreTextElementConfig(config));
}
/// Gets an element's ID from a string
@ -1060,7 +1059,7 @@ pub fn text(string: []const u8, config: TextElementConfig) void {
/// const isHovered = pointerOver(buttonId);
/// ```
pub fn getElementId(string: []const u8) ElementId {
return cdefs.Clay_GetElementId(makeClayString(string));
return cdefs.Clay_GetElementId(.fromSlice(string));
}
fn anytypeToAnyopaquePtr(user_data: anytype) ?*anyopaque {