summaryrefslogtreecommitdiff
path: root/src/estd/graphics/line.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/estd/graphics/line.zig')
-rw-r--r--src/estd/graphics/line.zig19
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;
}