From 4ad827390227249ba69f1ae60671b20531fdd9e1 Mon Sep 17 00:00:00 2001 From: Daniel Thompson Date: Fri, 4 Jun 2021 10:46:25 +0100 Subject: [PATCH] draw565: Fix bounding box calculations wasp-os uses an drawing optimization technique to automatically place a single pixel line on the right of glyphs when rendering them. This results in a change to the bounding box for a rendered string (by adding a single pixel on the right of the final character). Fix the bounding box calculations accordingly. Among other things this eliminates graphical artifacts when rendering labels in 2048. Fixes: #203 Fixes: 58b5c0378ec3 ("draw565: Optimize the string drawing") Signed-off-by: Daniel Thompson --- wasp/boards/simulator/test_unit.py | 2 +- wasp/draw565.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/wasp/boards/simulator/test_unit.py b/wasp/boards/simulator/test_unit.py index 940edba..f292c9a 100644 --- a/wasp/boards/simulator/test_unit.py +++ b/wasp/boards/simulator/test_unit.py @@ -53,7 +53,7 @@ def test_font_width(draw): for f in (fonts.sans24, fonts.sans28, fonts.sans36): draw.set_font(f) - assert 3 == draw.bounding_box('0000')[0] % 4 + assert 0 == draw.bounding_box('0000')[0] % 4 if f.max_ch() >= 90: assert draw.bounding_box('IIII')[0] < draw.bounding_box('WWWW')[0] diff --git a/wasp/draw565.py b/wasp/draw565.py index f831b04..50f5547 100644 --- a/wasp/draw565.py +++ b/wasp/draw565.py @@ -75,7 +75,7 @@ def _bounding_box(s, font): return (0, font.height()) get_ch = font.get_ch - w = len(s) - 1 + w = len(s) for ch in s: (_, h, wc) = get_ch(ch) w += wc