11 Commits

Author SHA1 Message Date
Ray
0f5f0f7d00 Update raygui.h 2026-01-20 21:02:08 +01:00
Ray
9a1c183d85 Update raylib.vcxproj 2026-01-11 16:57:48 +01:00
Ray
51e6bcb393 Update raygui.h 2026-01-09 20:07:07 +01:00
Ray
04282d1763 Update year to 2026 2026-01-02 13:40:53 +01:00
Ray
0b94b80c92 Update raygui.h 2025-12-20 22:09:03 +01:00
Ray
867ca4bf8d Update raygui.h 2025-12-11 21:41:33 +01:00
367e169ad3 initializ some variables to prevent warnings (#515) 2025-12-02 23:31:24 +01:00
Ray
1a74db2ab3 Update raygui.h 2025-11-25 12:15:44 +01:00
Ray
715baf250d Update raygui.rc 2025-11-25 12:15:42 +01:00
Ray
3aea427fc8 REVIEWED: Out of bounds warning 2025-11-18 20:59:05 +01:00
Ray
773d1ec52b Update raygui.h 2025-11-18 16:49:44 +01:00
4 changed files with 39 additions and 53 deletions

View File

@ -1,6 +1,6 @@
zlib License zlib License
Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) Copyright (c) 2014-2026 Ramon Santamaria (@raysan5)
This software is provided "as-is", without any express or implied warranty. In no event This software is provided "as-is", without any express or implied warranty. In no event
will the authors be held liable for any damages arising from the use of this software. will the authors be held liable for any damages arising from the use of this software.

View File

@ -311,7 +311,6 @@
<ClCompile Include="$(ProjectDir)..\..\..\..\raylib\src\rshapes.c" /> <ClCompile Include="$(ProjectDir)..\..\..\..\raylib\src\rshapes.c" />
<ClCompile Include="$(ProjectDir)..\..\..\..\raylib\src\rtext.c" /> <ClCompile Include="$(ProjectDir)..\..\..\..\raylib\src\rtext.c" />
<ClCompile Include="$(ProjectDir)..\..\..\..\raylib\src\rtextures.c" /> <ClCompile Include="$(ProjectDir)..\..\..\..\raylib\src\rtextures.c" />
<ClCompile Include="$(ProjectDir)..\..\..\..\raylib\src\utils.c" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="$(ProjectDir)..\..\..\..\raylib\src\external\cgltf.h" /> <ClInclude Include="$(ProjectDir)..\..\..\..\raylib\src\external\cgltf.h" />
@ -331,7 +330,6 @@
<ClInclude Include="$(ProjectDir)..\..\..\..\raylib\src\raylib.h" /> <ClInclude Include="$(ProjectDir)..\..\..\..\raylib\src\raylib.h" />
<ClInclude Include="$(ProjectDir)..\..\..\..\raylib\src\raymath.h" /> <ClInclude Include="$(ProjectDir)..\..\..\..\raylib\src\raymath.h" />
<ClInclude Include="$(ProjectDir)..\..\..\..\raylib\src\rlgl.h" /> <ClInclude Include="$(ProjectDir)..\..\..\..\raylib\src\rlgl.h" />
<ClInclude Include="$(ProjectDir)..\..\..\..\raylib\src\utils.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="..\..\..\..\raylib\src\raylib.dll.rc" /> <ResourceCompile Include="..\..\..\..\raylib\src\raylib.dll.rc" />

View File

@ -141,7 +141,7 @@
* Draw text bounds rectangles for debug * Draw text bounds rectangles for debug
* *
* VERSIONS HISTORY: * VERSIONS HISTORY:
* 5.0-dev (2025) Current dev version... * 5.0 (xx-Nov-2025) ADDED: Support up to 32 controls (v500)
* ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes * ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes
* ADDED: GuiValueBoxFloat() * ADDED: GuiValueBoxFloat()
* ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP * ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP
@ -316,7 +316,7 @@
* *
* LICENSE: zlib/libpng * LICENSE: zlib/libpng
* *
* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) * Copyright (c) 2014-2026 Ramon Santamaria (@raysan5)
* *
* This software is provided "as-is", without any express or implied warranty. In no event * This software is provided "as-is", without any express or implied warranty. In no event
* will the authors be held liable for any damages arising from the use of this software. * will the authors be held liable for any damages arising from the use of this software.
@ -351,9 +351,9 @@
// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll // NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll
#if defined(_WIN32) #if defined(_WIN32)
#if defined(BUILD_LIBTYPE_SHARED) #if defined(BUILD_LIBTYPE_SHARED)
#define RAYGUIAPI __declspec(dllexport) // We are building the library as a Win32 shared library (.dll) #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll)
#elif defined(USE_LIBTYPE_SHARED) #elif defined(USE_LIBTYPE_SHARED)
#define RAYGUIAPI __declspec(dllimport) // We are using the library as a Win32 shared library (.dll) #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll)
#endif #endif
#endif #endif
@ -1091,7 +1091,7 @@ typedef enum {
// Icons data is defined by bit array (every bit represents one pixel) // Icons data is defined by bit array (every bit represents one pixel)
// Those arrays are stored as unsigned int data arrays, so, // Those arrays are stored as unsigned int data arrays, so,
// every array element defines 32 pixels (bits) of information // every array element defines 32 pixels (bits) of information
// One icon is defined by 8 int, (8 int * 32 bit = 256 bit = 16*16 pixels) // One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels)
// NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) // NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels)
#define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) #define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32)
@ -2692,8 +2692,8 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode)
{ {
int offset = textBoxCursorIndex; int offset = textBoxCursorIndex;
int accCodepointSize = 0; int accCodepointSize = 0;
int prevCodepointSize; int prevCodepointSize = 0;
int prevCodepoint; int prevCodepoint = 0;
// Check whitespace to delete (ASCII only) // Check whitespace to delete (ASCII only)
while (offset > 0) while (offset > 0)
@ -2744,8 +2744,8 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode)
{ {
int offset = textBoxCursorIndex; int offset = textBoxCursorIndex;
//int accCodepointSize = 0; //int accCodepointSize = 0;
int prevCodepointSize; int prevCodepointSize = 0;
int prevCodepoint; int prevCodepoint = 0;
// Check whitespace to skip (ASCII only) // Check whitespace to skip (ASCII only)
while (offset > 0) while (offset > 0)
@ -3033,7 +3033,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in
int result = 0; int result = 0;
GuiState state = guiState; GuiState state = guiState;
char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = "\0"; char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = { 0 };
snprintf(textValue, RAYGUI_VALUEBOX_MAX_CHARS + 1, "%i", *value); snprintf(textValue, RAYGUI_VALUEBOX_MAX_CHARS + 1, "%i", *value);
Rectangle textBounds = { 0 }; Rectangle textBounds = { 0 };
@ -3051,7 +3051,6 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in
if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode)
{ {
Vector2 mousePoint = GetMousePosition(); Vector2 mousePoint = GetMousePosition();
bool valueHasChanged = false; bool valueHasChanged = false;
if (editMode) if (editMode)
@ -3070,7 +3069,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in
keyCount--; keyCount--;
valueHasChanged = true; valueHasChanged = true;
} }
else if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS -1) else if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS)
{ {
if (keyCount == 0) if (keyCount == 0)
{ {
@ -3087,12 +3086,12 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in
} }
} }
// Only allow keys in range [48..57] // Add new digit to text value
if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width))
{
if (GuiGetTextWidth(textValue) < bounds.width)
{ {
int key = GetCharPressed(); int key = GetCharPressed();
// Only allow keys in range [48..57]
if ((key >= 48) && (key <= 57)) if ((key >= 48) && (key <= 57))
{ {
textValue[keyCount] = (char)key; textValue[keyCount] = (char)key;
@ -3100,18 +3099,14 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in
valueHasChanged = true; valueHasChanged = true;
} }
} }
}
// Delete text // Delete text
if (keyCount > 0) if ((keyCount > 0) && IsKeyPressed(KEY_BACKSPACE))
{
if (IsKeyPressed(KEY_BACKSPACE))
{ {
keyCount--; keyCount--;
textValue[keyCount] = '\0'; textValue[keyCount] = '\0';
valueHasChanged = true; valueHasChanged = true;
} }
}
if (valueHasChanged) *value = TextToInteger(textValue); if (valueHasChanged) *value = TextToInteger(textValue);
@ -4236,7 +4231,7 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co
// Grid control // Grid control
// NOTE: Returns grid mouse-hover selected cell // NOTE: Returns grid mouse-hover selected cell
// About drawing lines at subpixel spacing, simple put, not easy solution: // About drawing lines at subpixel spacing, simple put, not easy solution:
// https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster // REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster
int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell)
{ {
// Grid lines alpha amount // Grid lines alpha amount
@ -5081,28 +5076,21 @@ static const char **GetTextLines(const char *text, int *count)
static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 };
for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings
int textSize = (int)strlen(text); int textLength = (int)strlen(text);
lines[0] = text; lines[0] = text;
int len = 0;
*count = 1; *count = 1;
//int lineSize = 0; // Stores current line size, not returned
for (int i = 0, k = 0; (i < textSize) && (*count < RAYGUI_MAX_TEXT_LINES); i++) for (int i = 0, k = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++)
{ {
if (text[i] == '\n') if (text[i] == '\n')
{ {
//lineSize = len;
k++; k++;
lines[k] = &text[i + 1]; // WARNING: next value is valid? lines[k] = &text[i + 1]; // WARNING: next value is valid?
len = 0;
*count += 1; *count += 1;
} }
else len++;
} }
//lines[*count - 1].size = len;
return lines; return lines;
} }
@ -5878,7 +5866,7 @@ static int TextToInteger(const char *text)
text++; text++;
} }
for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); ++i) value = value*10 + (int)(text[i] - '0'); for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0');
return value*sign; return value*sign;
} }