summaryrefslogtreecommitdiff
path: root/src/estd/graphics/color.zig
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2025-02-12 12:48:11 +0100
committerNathan Reiner <nathan@nathanreiner.xyz>2025-02-12 12:48:11 +0100
commit9fd81c0b38b2b843c24fb61bf8cb5b7873deaa72 (patch)
treea2d4d76a4fcc1334d83c5538e684061913be24d3 /src/estd/graphics/color.zig
parentdae5bc02b1c934075e95694953b4330676e21611 (diff)
graphics: add line
Diffstat (limited to 'src/estd/graphics/color.zig')
-rw-r--r--src/estd/graphics/color.zig23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/estd/graphics/color.zig b/src/estd/graphics/color.zig
new file mode 100644
index 0000000..b7fd97e
--- /dev/null
+++ b/src/estd/graphics/color.zig
@@ -0,0 +1,23 @@
+pub const Color = packed struct(u32) {
+ const Self = @This();
+
+ blue: u8,
+ green: u8,
+ red: u8,
+ _padding: u8 = 0x0,
+
+ pub fn mix(self: *const Self, other: *const Self, factor: f64) Self {
+ const inverse = 1 - factor;
+ return Self {
+ .red = @intFromFloat(
+ @as(f64, @floatFromInt(self.red)) * inverse + @as(f64, @floatFromInt(other.red)) * factor
+ ),
+ .green = @intFromFloat(
+ @as(f64, @floatFromInt(self.green)) * inverse + @as(f64, @floatFromInt(other.green)) * factor
+ ),
+ .blue = @intFromFloat(
+ @as(f64, @floatFromInt(self.blue)) * inverse + @as(f64, @floatFromInt(other.blue)) * factor
+ ),
+ };
+ }
+};