summaryrefslogtreecommitdiff
path: root/src/estd/graphics/color.zig
diff options
context:
space:
mode:
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
+ ),
+ };
+ }
+};