From b536cdc89418ccb2401efe2337c21b8531b91faa Mon Sep 17 00:00:00 2001 From: johan0A Date: Sat, 8 Mar 2025 16:59:35 +0100 Subject: [PATCH] moved makeClayString to String namespace --- src/root.zig | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/root.zig b/src/root.zig index b7785c4..a55b2e4 100644 --- a/src/root.zig +++ b/src/root.zig @@ -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 {