Reviewed text drawing inside bounds issue
This commit is contained in:
parent
1ad1907dc1
commit
df543bafad
10
src/raygui.h
10
src/raygui.h
@ -4417,10 +4417,10 @@ static int GetTextWidth(const char *text)
|
||||
int codepoint = GetCodepointNext(&text[i], &codepointSize);
|
||||
int codepointIndex = GetGlyphIndex(guiFont, codepoint);
|
||||
|
||||
if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING));
|
||||
else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor + GuiGetStyle(DEFAULT, TEXT_SPACING));
|
||||
if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor);
|
||||
else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor);
|
||||
|
||||
textSize.x += glyphWidth;
|
||||
textSize.x += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING));
|
||||
}
|
||||
}
|
||||
|
||||
@ -4646,6 +4646,7 @@ static void GuiDrawText(const char *text, Rectangle bounds, int alignment, Color
|
||||
|
||||
int textOffsetY = 0;
|
||||
float textOffsetX = 0.0f;
|
||||
float glyphWidth = 0;
|
||||
for (int c = 0, codepointSize = 0; c < lineSize; c += codepointSize)
|
||||
{
|
||||
int codepoint = GetCodepointNext(&lines[i][c], &codepointSize);
|
||||
@ -4660,7 +4661,6 @@ static void GuiDrawText(const char *text, Rectangle bounds, int alignment, Color
|
||||
if (wrapMode == 1)
|
||||
{
|
||||
// Get glyph width to check if it goes out of bounds
|
||||
float glyphWidth = 0;
|
||||
if (guiFont.glyphs[index].advanceX == 0) glyphWidth = ((float)guiFont.recs[index].width*scaleFactor);
|
||||
else glyphWidth = (float)guiFont.glyphs[index].advanceX*scaleFactor;
|
||||
|
||||
@ -4696,7 +4696,7 @@ static void GuiDrawText(const char *text, Rectangle bounds, int alignment, Color
|
||||
if (wrapMode == 0) // 0-NO_WRAP
|
||||
{
|
||||
// Draw only required text glyphs fitting the bounds.width
|
||||
if (textOffsetX < (bounds.width - guiFont.recs[index].width))
|
||||
if (textOffsetX <= (bounds.width - glyphWidth))
|
||||
{
|
||||
DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ boundsPos.x + textOffsetX, boundsPos.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user