From f13b30d6060ce7541a7ef7f3074966c623128090 Mon Sep 17 00:00:00 2001 From: Ray San Date: Wed, 21 Oct 2015 18:24:44 +0200 Subject: [PATCH] Feature: Line-break support for text --- src/text.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/text.c b/src/text.c index 65650956..381aa052 100644 --- a/src/text.c +++ b/src/text.c @@ -293,6 +293,7 @@ void DrawTextEx(SpriteFont spriteFont, const char *text, Vector2 position, int f { int length = strlen(text); int offsetX = 0; + int offsetY = 0; // Line break! float scaleFactor; unsigned char letter; @@ -323,11 +324,23 @@ void DrawTextEx(SpriteFont spriteFont, const char *text, Vector2 position, int f rec = spriteFont.charRecs[letter - FONT_FIRST_CHAR + 64]; i++; } - else rec = spriteFont.charRecs[(int)text[i] - FONT_FIRST_CHAR]; + else + { + if ((unsigned char)text[i] == '\n') + { + offsetY += ((spriteFont.size + spriteFont.size/2)*scaleFactor); + offsetX = 0; + rec.x = -1; + } + else rec = spriteFont.charRecs[(int)text[i] - FONT_FIRST_CHAR]; + } - DrawTexturePro(spriteFont.texture, rec, (Rectangle){ position.x + offsetX, position.y, rec.width*scaleFactor, rec.height*scaleFactor} , (Vector2){ 0, 0 }, 0.0f, tint); + if (rec.x > 0) + { + DrawTexturePro(spriteFont.texture, rec, (Rectangle){ position.x + offsetX, position.y + offsetY, rec.width*scaleFactor, rec.height*scaleFactor} , (Vector2){ 0, 0 }, 0.0f, tint); - offsetX += (rec.width*scaleFactor + spacing); + offsetX += (rec.width*scaleFactor + spacing); + } } }