Some tweaks to simplify code

This commit is contained in:
raysan5
2021-10-18 12:54:28 +02:00
parent 22c0b5754a
commit a5068756be

View File

@ -116,6 +116,7 @@
* 3.0 (xx-Sep-2021) Integrated ricons data to avoid external file * 3.0 (xx-Sep-2021) Integrated ricons data to avoid external file
* REDESIGNED: GuiTextBoxMulti() * REDESIGNED: GuiTextBoxMulti()
* REMOVED: GuiImageButton*() * REMOVED: GuiImageButton*()
* Multiple minor tweaks and bugs corrected
* 2.9 (17-Mar-2021) REMOVED: Tooltip API * 2.9 (17-Mar-2021) REMOVED: Tooltip API
* 2.8 (03-May-2020) Centralized rectangles drawing to GuiDrawRectangle() * 2.8 (03-May-2020) Centralized rectangles drawing to GuiDrawRectangle()
* 2.7 (20-Feb-2020) ADDED: Possible tooltips API * 2.7 (20-Feb-2020) ADDED: Possible tooltips API
@ -238,7 +239,7 @@
float y; float y;
} Vector2; } Vector2;
// Vector3 type // Vector3 type // -- ConvertHSVtoRGB(), ConvertRGBtoHSV()
typedef struct Vector3 { typedef struct Vector3 {
float x; float x;
float y; float y;
@ -536,7 +537,7 @@ RAYGUIAPI const char *GuiIconText(int iconId, const char *text); // Get text wit
#if !defined(RAYGUI_NO_RICONS) #if !defined(RAYGUI_NO_RICONS)
// Gui icons functionality // Gui icons functionality
RAYGUIAPI void GuiDrawIcon(int iconId, Vector2 position, int pixelSize, Color color); RAYGUIAPI void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color);
RAYGUIAPI unsigned int *GuiGetIcons(void); // Get full icons data pointer RAYGUIAPI unsigned int *GuiGetIcons(void); // Get full icons data pointer
RAYGUIAPI unsigned int *GuiGetIconData(int iconId); // Get icon bit data RAYGUIAPI unsigned int *GuiGetIconData(int iconId); // Get icon bit data
@ -712,12 +713,12 @@ typedef enum {
RICON_CROSS = 113, RICON_CROSS = 113,
RICON_ARROW_LEFT = 114, RICON_ARROW_LEFT = 114,
RICON_ARROW_RIGHT = 115, RICON_ARROW_RIGHT = 115,
RICON_ARROW_BOTTOM = 116, RICON_ARROW_DOWN = 116,
RICON_ARROW_TOP = 117, RICON_ARROW_UP = 117,
RICON_ARROW_LEFT_FILL = 118, RICON_ARROW_LEFT_FILL = 118,
RICON_ARROW_RIGHT_FILL = 119, RICON_ARROW_RIGHT_FILL = 119,
RICON_ARROW_BOTTOM_FILL = 120, RICON_ARROW_DOWN_FILL = 120,
RICON_ARROW_TOP_FILL = 121, RICON_ARROW_UP_FILL = 121,
RICON_AUDIO = 122, RICON_AUDIO = 122,
RICON_FX = 123, RICON_FX = 123,
RICON_WAVE = 124, RICON_WAVE = 124,
@ -982,12 +983,12 @@ static unsigned int guiIcons[RICON_MAX_ICONS*RICON_DATA_ELEMENTS] = {
0x00000000, 0x10080000, 0x04200810, 0x01800240, 0x02400180, 0x08100420, 0x00001008, 0x00000000, // RICON_CROSS 0x00000000, 0x10080000, 0x04200810, 0x01800240, 0x02400180, 0x08100420, 0x00001008, 0x00000000, // RICON_CROSS
0x00000000, 0x02000000, 0x00800100, 0x00200040, 0x00200010, 0x00800040, 0x02000100, 0x00000000, // RICON_ARROW_LEFT 0x00000000, 0x02000000, 0x00800100, 0x00200040, 0x00200010, 0x00800040, 0x02000100, 0x00000000, // RICON_ARROW_LEFT
0x00000000, 0x00400000, 0x01000080, 0x04000200, 0x04000800, 0x01000200, 0x00400080, 0x00000000, // RICON_ARROW_RIGHT 0x00000000, 0x00400000, 0x01000080, 0x04000200, 0x04000800, 0x01000200, 0x00400080, 0x00000000, // RICON_ARROW_RIGHT
0x00000000, 0x00000000, 0x00000000, 0x08081004, 0x02200410, 0x00800140, 0x00000000, 0x00000000, // RICON_ARROW_BOTTOM 0x00000000, 0x00000000, 0x00000000, 0x08081004, 0x02200410, 0x00800140, 0x00000000, 0x00000000, // RICON_ARROW_DOWN
0x00000000, 0x00000000, 0x01400080, 0x04100220, 0x10040808, 0x00000000, 0x00000000, 0x00000000, // RICON_ARROW_TOP 0x00000000, 0x00000000, 0x01400080, 0x04100220, 0x10040808, 0x00000000, 0x00000000, 0x00000000, // RICON_ARROW_UP
0x00000000, 0x02000000, 0x03800300, 0x03e003c0, 0x03e003f0, 0x038003c0, 0x02000300, 0x00000000, // RICON_ARROW_LEFT_FILL 0x00000000, 0x02000000, 0x03800300, 0x03e003c0, 0x03e003f0, 0x038003c0, 0x02000300, 0x00000000, // RICON_ARROW_LEFT_FILL
0x00000000, 0x00400000, 0x01c000c0, 0x07c003c0, 0x07c00fc0, 0x01c003c0, 0x004000c0, 0x00000000, // RICON_ARROW_RIGHT_FILL 0x00000000, 0x00400000, 0x01c000c0, 0x07c003c0, 0x07c00fc0, 0x01c003c0, 0x004000c0, 0x00000000, // RICON_ARROW_RIGHT_FILL
0x00000000, 0x00000000, 0x00000000, 0x0ff81ffc, 0x03e007f0, 0x008001c0, 0x00000000, 0x00000000, // RICON_ARROW_BOTTOM_FILL 0x00000000, 0x00000000, 0x00000000, 0x0ff81ffc, 0x03e007f0, 0x008001c0, 0x00000000, 0x00000000, // RICON_ARROW_DOWN_FILL
0x00000000, 0x00000000, 0x01c00080, 0x07f003e0, 0x1ffc0ff8, 0x00000000, 0x00000000, 0x00000000, // RICON_ARROW_TOP_FILL 0x00000000, 0x00000000, 0x01c00080, 0x07f003e0, 0x1ffc0ff8, 0x00000000, 0x00000000, 0x00000000, // RICON_ARROW_UP_FILL
0x00000000, 0x18a008c0, 0x32881290, 0x24822686, 0x26862482, 0x12903288, 0x08c018a0, 0x00000000, // RICON_AUDIO 0x00000000, 0x18a008c0, 0x32881290, 0x24822686, 0x26862482, 0x12903288, 0x08c018a0, 0x00000000, // RICON_AUDIO
0x00000000, 0x04800780, 0x004000c0, 0x662000f0, 0x08103c30, 0x130a0e18, 0x0000318e, 0x00000000, // RICON_FX 0x00000000, 0x04800780, 0x004000c0, 0x662000f0, 0x08103c30, 0x130a0e18, 0x0000318e, 0x00000000, // RICON_FX
0x00000000, 0x00800000, 0x08880888, 0x2aaa0a8a, 0x0a8a2aaa, 0x08880888, 0x00000080, 0x00000000, // RICON_WAVE 0x00000000, 0x00800000, 0x08880888, 0x2aaa0a8a, 0x0a8a2aaa, 0x08880888, 0x00000080, 0x00000000, // RICON_WAVE
@ -1187,7 +1188,7 @@ static bool guiStyleLoaded = false; // Style loaded flag for lazy style init
// Input required functions // Input required functions
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
static Vector2 GetMousePosition(void); static Vector2 GetMousePosition(void);
static int GetMouseWheelMove(void); static float GetMouseWheelMove(void);
static bool IsMouseButtonDown(int button); static bool IsMouseButtonDown(int button);
static bool IsMouseButtonPressed(int button); static bool IsMouseButtonPressed(int button);
static bool IsMouseButtonReleased(int button); static bool IsMouseButtonReleased(int button);
@ -1201,24 +1202,20 @@ static int GetCharPressed(void); // -- GuiTextBox(), GuiTextBoxMulti(),
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle(), GuiDrawIcon() static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle(), GuiDrawIcon()
static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker()
static void DrawTriangle(Vector2 v1, Vector2 v2, Vector2 v3, Color color); // -- GuiDropdownBox(), GuiScrollBar()
//static void DrawTextBoxed(Font font, const char *text, Rectangle rec, float fontSize, float spacing, bool wordWrap, Color tint); // -- GuiTextBoxMulti()
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
// Text required functions // Text required functions
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
static Font LoadFontEx(const char *fileName, int fontSize, int *fontChars, int glyphCount); // -- GuiLoadStyle()
static Font GetFontDefault(void); // -- GuiLoadStyleDefault() static Font GetFontDefault(void); // -- GuiLoadStyleDefault()
static Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle() static Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle()
static void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle() static void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle()
static Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing); // -- GetTextWidth(), GuiTextBoxMulti()
static void DrawTextEx(Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint); // -- GuiDrawText()
static Font LoadFontEx(const char *fileName, int fontSize, int *fontChars, int glyphCount); // -- GuiLoadStyle()
static char *LoadFileText(const char *fileName); // -- GuiLoadStyle() static char *LoadFileText(const char *fileName); // -- GuiLoadStyle()
static const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle() static const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle()
static Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing); // -- GetTextWidth(), GuiTextBoxMulti()
static void DrawTextEx(Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint); // -- GuiDrawText()
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
// raylib functions already implemented in raygui // raylib functions already implemented in raygui
@ -1230,11 +1227,10 @@ static bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if
static const char *TextFormat(const char *text, ...); // Formatting of text with variables to 'embed' static const char *TextFormat(const char *text, ...); // Formatting of text with variables to 'embed'
static const char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings static const char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings
static int TextToInteger(const char *text); // Get integer value from text static int TextToInteger(const char *text); // Get integer value from text
static int GetCodepoint(const char *text, int *bytesProcessed); // Get next codepoint in a UTF-8 encoded text
static const char *CodepointToUTF8(int codepoint, int *byteSize); // Encode codepoint into UTF-8 text (char array size returned as parameter)
static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2); // Draw rectangle vertical gradient static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2); // Draw rectangle vertical gradient
static int GetCodepoint(const char *text, int *bytesProcessed); // Get next codepoint in a UTF-8 encoded text
static const char *CodepointToUTF8(int codepoint, int *byteSize); // Encode codepoint into UTF-8 text (char array size returned as parameter)
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
#endif // RAYGUI_STANDALONE #endif // RAYGUI_STANDALONE
@ -1932,15 +1928,15 @@ bool GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMo
else GuiDrawText(items[i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_NORMAL)), guiAlpha)); else GuiDrawText(items[i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_NORMAL)), guiAlpha));
} }
} }
// TODO: Avoid DrawTriangle(), use icon or 'v' text instead // Draw arrows (using icon if available)
DrawTriangle(RAYGUI_CLITERAL(Vector2){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 2 }, #if defined(RAYGUI_NO_RICONS)
RAYGUI_CLITERAL(Vector2){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING) + 5, bounds.y + bounds.height/2 - 2 + 5 }, GuiDrawText("v", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 2, 10, 10 },
RAYGUI_CLITERAL(Vector2){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING) + 10, bounds.y + bounds.height/2 - 2 }, GUI_TEXT_ALIGN_CENTER, Fade(GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3))), guiAlpha));
Fade(GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3))), guiAlpha)); #else
GuiDrawText("#120#", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 6, 10, 10 },
//GuiDrawText("v", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 2, 10, 10 }, GUI_TEXT_ALIGN_CENTER, Fade(GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3))), guiAlpha)); // RICON_ARROW_DOWN_FILL
// GUI_TEXT_ALIGN_CENTER, Fade(GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3))), guiAlpha)); #endif
//-------------------------------------------------------------------- //--------------------------------------------------------------------
*active = itemSelected; *active = itemSelected;
@ -2693,45 +2689,20 @@ int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue)
GuiDrawRectangle(scrollbar, 0, BLANK, Fade(GetColor(GuiGetStyle(BUTTON, BASE_COLOR_NORMAL)), guiAlpha)); // Draw the scrollbar active area background GuiDrawRectangle(scrollbar, 0, BLANK, Fade(GetColor(GuiGetStyle(BUTTON, BASE_COLOR_NORMAL)), guiAlpha)); // Draw the scrollbar active area background
GuiDrawRectangle(slider, 0, BLANK, Fade(GetColor(GuiGetStyle(SLIDER, BORDER + state*3)), guiAlpha)); // Draw the slider bar GuiDrawRectangle(slider, 0, BLANK, Fade(GetColor(GuiGetStyle(SLIDER, BORDER + state*3)), guiAlpha)); // Draw the slider bar
// Draw arrows // Draw arrows (using icon if available)
const int padding = (spinnerSize - GuiGetStyle(SCROLLBAR, ARROWS_SIZE))/2;
const Vector2 lineCoords[] =
{
// Coordinates for < 0,1,2
{ arrowUpLeft.x + padding, arrowUpLeft.y + spinnerSize/2 },
{ arrowUpLeft.x + spinnerSize - padding, arrowUpLeft.y + padding },
{ arrowUpLeft.x + spinnerSize - padding, arrowUpLeft.y + spinnerSize - padding },
// Coordinates for > 3,4,5
{ arrowDownRight.x + padding, arrowDownRight.y + padding },
{ arrowDownRight.x + spinnerSize - padding, arrowDownRight.y + spinnerSize/2 },
{ arrowDownRight.x + padding, arrowDownRight.y + spinnerSize - padding },
// Coordinates for ∧ 6,7,8
{ arrowUpLeft.x + spinnerSize/2, arrowUpLeft.y + padding },
{ arrowUpLeft.x + padding, arrowUpLeft.y + spinnerSize - padding },
{ arrowUpLeft.x + spinnerSize - padding, arrowUpLeft.y + spinnerSize - padding },
// Coordinates for 9,10,11
{ arrowDownRight.x + padding, arrowDownRight.y + padding },
{ arrowDownRight.x + spinnerSize/2, arrowDownRight.y + spinnerSize - padding },
{ arrowDownRight.x + spinnerSize - padding, arrowDownRight.y + padding }
};
Color lineColor = Fade(GetColor(GuiGetStyle(BUTTON, TEXT + state*3)), guiAlpha);
if (GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)) if (GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE))
{ {
if (isVertical) #if defined(RAYGUI_NO_RICONS)
{ GuiDrawText(isVertical? "^" : "<", RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height },
DrawTriangle(lineCoords[6], lineCoords[7], lineCoords[8], lineColor); GUI_TEXT_ALIGN_CENTER, Fade(GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3))), guiAlpha));
DrawTriangle(lineCoords[9], lineCoords[10], lineCoords[11], lineColor); GuiDrawText(isVertical? "v" : ">", RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height },
} GUI_TEXT_ALIGN_CENTER, Fade(GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3))), guiAlpha));
else #else
{ GuiDrawText(isVertical? "#121#" : "#118#", RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height },
DrawTriangle(lineCoords[2], lineCoords[1], lineCoords[0], lineColor); GUI_TEXT_ALIGN_CENTER, Fade(GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3)), guiAlpha)); // RICON_ARROW_UP_FILL / RICON_ARROW_LEFT_FILL
DrawTriangle(lineCoords[5], lineCoords[4], lineCoords[3], lineColor); GuiDrawText(isVertical? "#120#" : "#119#", RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height },
} GUI_TEXT_ALIGN_CENTER, Fade(GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3)), guiAlpha)); // RICON_ARROW_DOWN_FILL / RICON_ARROW_RIGHT_FILL
#endif
} }
//-------------------------------------------------------------------- //--------------------------------------------------------------------
@ -3682,7 +3653,7 @@ char **GuiLoadIcons(const char *fileName, bool loadIconsName)
} }
// Draw selected icon using rectangles pixel-by-pixel // Draw selected icon using rectangles pixel-by-pixel
void GuiDrawIcon(int iconId, Vector2 position, int pixelSize, Color color) void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color)
{ {
#define BIT_CHECK(a,b) ((a) & (1<<(b))) #define BIT_CHECK(a,b) ((a) & (1<<(b)))
@ -3693,7 +3664,7 @@ void GuiDrawIcon(int iconId, Vector2 position, int pixelSize, Color color)
if (BIT_CHECK(guiIcons[iconId*RICON_DATA_ELEMENTS + i], k)) if (BIT_CHECK(guiIcons[iconId*RICON_DATA_ELEMENTS + i], k))
{ {
#if !defined(RAYGUI_STANDALONE) #if !defined(RAYGUI_STANDALONE)
DrawRectangle(position.x + (k%RICON_SIZE)*pixelSize, position.y + y*pixelSize, pixelSize, pixelSize, color); DrawRectangle(posX + (k%RICON_SIZE)*pixelSize, posY + y*pixelSize, pixelSize, pixelSize, color);
#endif #endif
} }
@ -3754,13 +3725,15 @@ bool GuiCheckIconPixel(int iconId, int x, int y)
// Module specific Functions Definition // Module specific Functions Definition
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Gui get text width using default font // Gui get text width using default font
// NOTE: Icon is not considered here
static int GetTextWidth(const char *text) static int GetTextWidth(const char *text)
{ {
Vector2 size = { 0 }; Vector2 size = { 0 };
if ((text != NULL) && (text[0] != '\0')) size = MeasureTextEx(guiFont, text, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); if ((text != NULL) && (text[0] != '\0'))
{
// TODO: Consider text icon width here??? size = MeasureTextEx(guiFont, text, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), (float)GuiGetStyle(DEFAULT, TEXT_SPACING));
}
return (int)size.x; return (int)size.x;
} }
@ -3815,7 +3788,7 @@ static const char *GetTextIcon(const char *text, int *iconId)
*iconId = TextToInteger(iconValue); *iconId = TextToInteger(iconValue);
// Move text pointer after icon // Move text pointer after icon
// WARNING: If only icon provided, it could point to EOL character! // WARNING: If only icon provided, it could point to EOL character: '\0'
if (*iconId >= 0) text += (pos + 1); if (*iconId >= 0) text += (pos + 1);
} }
} }
@ -3832,7 +3805,7 @@ static void GuiDrawText(const char *text, Rectangle bounds, int alignment, Color
if ((text != NULL) && (text[0] != '\0')) if ((text != NULL) && (text[0] != '\0'))
{ {
int iconId = 0; int iconId = 0;
text = GetTextIcon(text, &iconId); // Check text for icon and move cursor text = GetTextIcon(text, &iconId); // Check text for icon and move cursor
// Get text position depending on alignment and iconId // Get text position depending on alignment and iconId
//--------------------------------------------------------------------------------- //---------------------------------------------------------------------------------
@ -3840,7 +3813,7 @@ static void GuiDrawText(const char *text, Rectangle bounds, int alignment, Color
Vector2 position = { bounds.x, bounds.y }; Vector2 position = { bounds.x, bounds.y };
// NOTE: We get text size after icon been processed // NOTE: We get text size after icon has been processed
int textWidth = GetTextWidth(text); int textWidth = GetTextWidth(text);
int textHeight = GuiGetStyle(DEFAULT, TEXT_SIZE); int textHeight = GuiGetStyle(DEFAULT, TEXT_SIZE);
@ -3849,7 +3822,7 @@ static void GuiDrawText(const char *text, Rectangle bounds, int alignment, Color
{ {
textWidth += RICON_SIZE; textWidth += RICON_SIZE;
// WARNING: If only icon provided, text could be pointing to eof character! // WARNING: If only icon provided, text could be pointing to EOF character: '\0'
if ((text != NULL) && (text[0] != '\0')) textWidth += RICON_TEXT_PADDING; if ((text != NULL) && (text[0] != '\0')) textWidth += RICON_TEXT_PADDING;
} }
@ -3886,7 +3859,7 @@ static void GuiDrawText(const char *text, Rectangle bounds, int alignment, Color
if (iconId >= 0) if (iconId >= 0)
{ {
// NOTE: We consider icon height, probably different than text size // NOTE: We consider icon height, probably different than text size
GuiDrawIcon(iconId, RAYGUI_CLITERAL(Vector2){ position.x, bounds.y + bounds.height/2 - RICON_SIZE/2 + TEXT_VALIGN_PIXEL_OFFSET(bounds.height) }, 1, tint); GuiDrawIcon(iconId, (int)position.x, (int)(bounds.y + bounds.height/2 - RICON_SIZE/2 + TEXT_VALIGN_PIXEL_OFFSET(bounds.height)), 1, tint);
position.x += (RICON_SIZE + RICON_TEXT_PADDING); position.x += (RICON_SIZE + RICON_TEXT_PADDING);
} }
#endif #endif