diff options
Diffstat (limited to 'src/estd/graphics/line.zig')
| -rw-r--r-- | src/estd/graphics/line.zig | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/estd/graphics/line.zig b/src/estd/graphics/line.zig index 93f17ff..faf801a 100644 --- a/src/estd/graphics/line.zig +++ b/src/estd/graphics/line.zig @@ -42,32 +42,31 @@ pub const Line = struct { gradient = 1; } - var intersect_y: f64 = @floatFromInt(start.y); if (steep) { for (start.x..end.x + 1) |x| { - const y: usize = @intFromFloat(intersect_y); + const y: u64 = @intFromFloat(intersect_y); const factor = intersect_y - @as(f64, @floatFromInt(y)); - var previous_color = canvas.buffer[canvas.width * x + y]; - canvas.buffer[x * canvas.width + y] = previous_color.mix(&self.color, factor); + var previous_color = canvas.buffer[x * canvas.width + y]; + canvas.buffer[x * canvas.width + y] = self.color.mix(&previous_color, factor); - previous_color = canvas.buffer[x * canvas.width + y - 1]; - canvas.buffer[x * canvas.width + y - 1] = self.color.mix(&previous_color, factor); + previous_color = canvas.buffer[canvas.width * x + y + 1]; + canvas.buffer[x * canvas.width + y + 1] = previous_color.mix(&self.color, factor); intersect_y += gradient; } } else { for (start.x..end.x + 1) |x| { - const y: u32 = @intFromFloat(intersect_y); + const y: u64 = @intFromFloat(intersect_y); const factor = intersect_y - @as(f64, @floatFromInt(y)); var previous_color = canvas.buffer[x + canvas.width * y]; - canvas.buffer[x + canvas.width * y] = previous_color.mix(&self.color, factor); + canvas.buffer[x + canvas.width * y] = self.color.mix(&previous_color, factor); - previous_color = canvas.buffer[x + canvas.width * (y - 1)]; - canvas.buffer[x + canvas.width * (y - 1)] = self.color.mix(&previous_color, factor); + previous_color = canvas.buffer[x + canvas.width * (y + 1)]; + canvas.buffer[x + canvas.width * (y + 1)] = previous_color.mix(&self.color, factor); intersect_y += gradient; } |