From b0c748be124c16e5f7636d6a9cac33d284e26c12 Mon Sep 17 00:00:00 2001
From: Jannis Rieger <omniskopus@gmail.com>
Date: Wed, 21 Aug 2019 17:15:28 +0200
Subject: [PATCH] fix(gfx): Break line before char is printed

---
 lib/gfx/gfx.c | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/lib/gfx/gfx.c b/lib/gfx/gfx.c
index 72a5d67f0..b83596c61 100644
--- a/lib/gfx/gfx.c
+++ b/lib/gfx/gfx.c
@@ -86,17 +86,26 @@ void gfx_puts(
 	Color fg,
 	Color bg
 ) {
-	while (*str) {
-		gfx_putchar(font, r, x, y, *str, fg, bg);
-		str++;
+	// iterate over the string
+	while(*str) {
 
-		x += font->Width;
-		if (x >= r->width) {
+		// if the current position plus the width of the next character
+		// would bring us outside of the display ...
+		if( (x + font->Width) > r->width) {
+			// ... we move down a line before printing the character
 			x = 0;
 			y += font->Height;
 		}
-		if (y >= r->height)
+		// if the line is outside the display we return
+		if(y >= r->height)
 			return;
+
+		// now print the character
+		gfx_putchar(font, r, x, y, *str, fg, bg);
+		str++;
+
+		// move along on the x axis to get the position of the next character
+		x += font->Width;
 	}
 }
 
-- 
GitLab