From a17a39a9a46810aeafc4961779a44a8ea84b994e Mon Sep 17 00:00:00 2001 From: Szymon Nowakowski Date: Mon, 5 Jan 2026 23:57:17 +0100 Subject: [PATCH] Add some format methods --- packages/vecmath/src/colors/Color.zig | 4 ++++ packages/vecmath/src/rotors/Complex.zig | 4 ++++ packages/vecmath/src/rotors/Quaternion.zig | 4 ++++ packages/vecmath/src/vectors/Vector2.zig | 4 ++++ packages/vecmath/src/vectors/Vector2Int.zig | 7 +++++++ packages/vecmath/src/vectors/Vector3.zig | 4 ++++ packages/vecmath/src/vectors/Vector3Int.zig | 8 ++++++++ packages/vecmath/src/vectors/Vector4.zig | 4 ++++ packages/vecmath/src/vectors/Vector4Int.zig | 9 +++++++++ 9 files changed, 48 insertions(+) diff --git a/packages/vecmath/src/colors/Color.zig b/packages/vecmath/src/colors/Color.zig index d407bda..d4d6d59 100644 --- a/packages/vecmath/src/colors/Color.zig +++ b/packages/vecmath/src/colors/Color.zig @@ -66,6 +66,10 @@ pub const Color = extern struct { pub inline fn asArray(self: Color) Array { return @bitCast(self); } + + pub fn format(self: Color, w: *std.io.Writer) !void { + try w.print("#{X:0>2}{X:0>2}{X:0>2}{X:0>2}", .{ self.r, self.g, self.b, self.a }); + } }; test "l" { diff --git a/packages/vecmath/src/rotors/Complex.zig b/packages/vecmath/src/rotors/Complex.zig index 3d053dd..63bf3c6 100644 --- a/packages/vecmath/src/rotors/Complex.zig +++ b/packages/vecmath/src/rotors/Complex.zig @@ -122,4 +122,8 @@ pub const Complex = extern struct { .im = @mulAdd(f32, t, b.im, @mulAdd(f32, -t, a.im, a.im)), }; } + + pub fn format(self: Complex, w: *std.io.Writer) !void { + try w.print("Complex[{d:.3}, {d:.3}]", .{ self.re, self.im }); + } }; diff --git a/packages/vecmath/src/rotors/Quaternion.zig b/packages/vecmath/src/rotors/Quaternion.zig index ff74894..42def27 100644 --- a/packages/vecmath/src/rotors/Quaternion.zig +++ b/packages/vecmath/src/rotors/Quaternion.zig @@ -178,4 +178,8 @@ pub const Quaternion = extern struct { .w = @mulAdd(f32, t, b.w, @mulAdd(f32, -t, a.w, a.w)), }; } + + pub fn format(self: Quaternion, w: *std.io.Writer) !void { + try w.print("Quaternion[{d:.3}, {d:.3}, {d:.3}, {d:.3}]", .{ self.x, self.y, self.z, self.w }); + } }; diff --git a/packages/vecmath/src/vectors/Vector2.zig b/packages/vecmath/src/vectors/Vector2.zig index 8696884..5776211 100644 --- a/packages/vecmath/src/vectors/Vector2.zig +++ b/packages/vecmath/src/vectors/Vector2.zig @@ -162,4 +162,8 @@ pub const Vector2 = extern struct { .y = vm.ps(self.x) * m.iy + vm.ps(self.y) * m.jy, }; } + + pub fn format(self: Vector2, w: *std.io.Writer) !void { + try w.print("[{d}, {d}]", .{ self.x, self.y }); + } }; diff --git a/packages/vecmath/src/vectors/Vector2Int.zig b/packages/vecmath/src/vectors/Vector2Int.zig index 40a9bb4..05b58e7 100644 --- a/packages/vecmath/src/vectors/Vector2Int.zig +++ b/packages/vecmath/src/vectors/Vector2Int.zig @@ -105,4 +105,11 @@ pub const Vector2Int = extern struct { pub inline fn cross(self: Vector2Int, other: Vector2Int) i32 { return self.x * other.y - self.y * other.x; } + + pub fn format(self: Vector2Int, w: *std.io.Writer) !void { + try w.print("[{X:0>8}, {X:0>8}]", .{ + @as(u32, @bitCast(self.x)), + @as(u32, @bitCast(self.y)), + }); + } }; diff --git a/packages/vecmath/src/vectors/Vector3.zig b/packages/vecmath/src/vectors/Vector3.zig index 86b7960..f9ad8a3 100644 --- a/packages/vecmath/src/vectors/Vector3.zig +++ b/packages/vecmath/src/vectors/Vector3.zig @@ -187,4 +187,8 @@ pub const Vector3 = extern struct { .z = vm.ps(self.x) * m.iz + vm.ps(self.y) * m.jz + vm.ps(self.z) * m.kz, }; } + + pub fn format(self: Vector3, w: *std.io.Writer) !void { + try w.print("[{d}, {d}, {d}]", .{ self.x, self.y, self.z }); + } }; diff --git a/packages/vecmath/src/vectors/Vector3Int.zig b/packages/vecmath/src/vectors/Vector3Int.zig index 26d0db6..27fc9d1 100644 --- a/packages/vecmath/src/vectors/Vector3Int.zig +++ b/packages/vecmath/src/vectors/Vector3Int.zig @@ -112,4 +112,12 @@ pub const Vector3Int = extern struct { .z = self.x * other.y - self.y * other.x, }; } + + pub fn format(self: Vector3Int, w: *std.io.Writer) !void { + try w.print("[{X:0>8}, {X:0>8}, {X:0>8}]", .{ + @as(u32, @bitCast(self.x)), + @as(u32, @bitCast(self.y)), + @as(u32, @bitCast(self.z)), + }); + } }; diff --git a/packages/vecmath/src/vectors/Vector4.zig b/packages/vecmath/src/vectors/Vector4.zig index 9bb8128..8d6fb11 100644 --- a/packages/vecmath/src/vectors/Vector4.zig +++ b/packages/vecmath/src/vectors/Vector4.zig @@ -142,4 +142,8 @@ pub const Vector4 = extern struct { .w = vm.ps(self.x) * m.iw + vm.ps(self.y) * m.jw + vm.ps(self.z) * m.kw + vm.ps(self.w) * m.tw, }; } + + pub fn format(self: Vector4, w: *std.io.Writer) !void { + try w.print("[{d}, {d}, {d}, {d}]", .{ self.x, self.y, self.z, self.w }); + } }; diff --git a/packages/vecmath/src/vectors/Vector4Int.zig b/packages/vecmath/src/vectors/Vector4Int.zig index 9721171..a2a24f3 100644 --- a/packages/vecmath/src/vectors/Vector4Int.zig +++ b/packages/vecmath/src/vectors/Vector4Int.zig @@ -107,4 +107,13 @@ pub const Vector4Int = extern struct { pub inline fn dot(self: Vector4Int, other: Vector4Int) i32 { return self.x * other.x + self.y * other.y + self.z * other.z + self.w * other.w; } + + pub fn format(self: Vector4Int, w: *std.io.Writer) !void { + try w.print("[{X:0>8}, {X:0>8}, {X:0>8}, {X:0>8}]", .{ + @as(u32, @bitCast(self.x)), + @as(u32, @bitCast(self.y)), + @as(u32, @bitCast(self.z)), + @as(u32, @bitCast(self.w)), + }); + } };