|
|
@ -378,20 +378,42 @@ int MeasureText(const char *text, int fontSize) |
|
|
|
Vector2 MeasureTextEx(SpriteFont spriteFont, const char *text, int fontSize, int spacing) |
|
|
|
{ |
|
|
|
int len = strlen(text); |
|
|
|
int tempLen = 0; // Used to count longer text line num chars |
|
|
|
int lenCounter = 0; |
|
|
|
|
|
|
|
int textWidth = 0; |
|
|
|
int tempTextWidth = 0; // Used to count longer text line width |
|
|
|
|
|
|
|
int textHeight = spriteFont.size; |
|
|
|
float scaleFactor; |
|
|
|
|
|
|
|
for (int i = 0; i < len; i++) |
|
|
|
{ |
|
|
|
if (text[i] != '\n') textWidth += spriteFont.charRecs[(int)text[i] - FONT_FIRST_CHAR].width; |
|
|
|
lenCounter++; |
|
|
|
|
|
|
|
if (text[i] != '\n') |
|
|
|
{ |
|
|
|
textWidth += spriteFont.charRecs[(int)text[i] - FONT_FIRST_CHAR].width; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
if (tempTextWidth < textWidth) tempTextWidth = textWidth; |
|
|
|
lenCounter = 0; |
|
|
|
textWidth = 0; |
|
|
|
textHeight += (spriteFont.size + spriteFont.size/2); |
|
|
|
} |
|
|
|
|
|
|
|
if (tempLen < lenCounter) tempLen = lenCounter; |
|
|
|
} |
|
|
|
|
|
|
|
if (tempTextWidth < textWidth) tempTextWidth = textWidth; |
|
|
|
|
|
|
|
if (fontSize <= spriteFont.charRecs[0].height) scaleFactor = 1.0f; |
|
|
|
else scaleFactor = (float)fontSize / spriteFont.charRecs[0].height; |
|
|
|
if (fontSize <= spriteFont.size) scaleFactor = 1.0f; |
|
|
|
else scaleFactor = (float)fontSize/spriteFont.size; |
|
|
|
|
|
|
|
Vector2 vec; |
|
|
|
vec.x = (float)textWidth * scaleFactor + (len - 1) * spacing; // Adds chars spacing to measure |
|
|
|
vec.y = (float)spriteFont.charRecs[0].height * scaleFactor; |
|
|
|
vec.x = (float)tempTextWidth*scaleFactor + (tempLen - 1)*spacing; // Adds chars spacing to measure |
|
|
|
vec.y = (float)textHeight*scaleFactor; |
|
|
|
|
|
|
|
return vec; |
|
|
|
} |
|
|
|