From 37144fd5b83256a89f8864f65d9994385cbb1102 Mon Sep 17 00:00:00 2001 From: Qwerasd Date: Mon, 14 Oct 2024 20:47:04 -0400 Subject: [PATCH] font/sprite: fix light arc character for odd thicknesses + update Box.ppm ground truth image --- src/font/sprite/Box.zig | 4 ++-- src/font/sprite/testdata/Box.ppm | Bin 1048593 -> 1048593 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/font/sprite/Box.zig b/src/font/sprite/Box.zig index 01576eabf..6a8a49662 100644 --- a/src/font/sprite/Box.zig +++ b/src/font/sprite/Box.zig @@ -2127,8 +2127,8 @@ fn draw_light_arc( const float_width: f64 = @floatFromInt(self.width); const float_height: f64 = @floatFromInt(self.height); const float_thick: f64 = @floatFromInt(thick_px); - const center_x: f64 = @floatFromInt(self.width / 2 + self.width % 2); - const center_y: f64 = @floatFromInt(self.height / 2 + self.height % 2); + const center_x: f64 = @as(f64, @floatFromInt((self.width -| thick_px) / 2)) + float_thick / 2; + const center_y: f64 = @as(f64, @floatFromInt((self.height -| thick_px) / 2)) + float_thick / 2; const r = @min(float_width, float_height) / 2; diff --git a/src/font/sprite/testdata/Box.ppm b/src/font/sprite/testdata/Box.ppm index fecf466d0f2cdd92d8086a29e9576d3e97b0b6e2..29ae539e709deba5b723a5e3fba111c1914a0cd7 100644 GIT binary patch delta 42249 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