diff options
Diffstat (limited to 'src/estd/graphics/color.zig')
| -rw-r--r-- | src/estd/graphics/color.zig | 23 |
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 + ), + }; + } +}; |