Added TextToFloat()

I recently created a pull request for the raygui library (#309), which adds GuiFloatBox() that requires TextToFloat() to function properly
This commit is contained in:
Z0RIK 2023-07-24 09:24:40 +06:00
parent 090b857912
commit 95e99b84a3
2 changed files with 36 additions and 1 deletions

View File

@ -1416,7 +1416,8 @@ RLAPI int TextFindIndex(const char *text, const char *find);
RLAPI const char *TextToUpper(const char *text); // Get upper case version of provided string
RLAPI const char *TextToLower(const char *text); // Get lower case version of provided string
RLAPI const char *TextToPascal(const char *text); // Get Pascal case notation version of provided string
RLAPI int TextToInteger(const char *text); // Get integer value from text (negative values not supported)
RLAPI int TextToInteger(const char *text); // Get integer value from text
RLAPI float TextToFloat(const char* text); // Get float value from text
//------------------------------------------------------------------------------------
// Basic 3d Shapes Drawing Functions (Module: models)

View File

@ -1389,6 +1389,40 @@ int TextToInteger(const char *text)
return value*sign;
}
// Get float value from text
float TextToFloat(const char* text)
{
float value = 0.0f;
float floatingPoint = 0.0f;
int sign = 1;
if ((text[0] == '+') || (text[0] == '-'))
{
if (text[0] == '-') sign = -1;
text++;
}
for (int i = 0; (((text[i] >= '0') && (text[i] <= '9')) || text[i] == '.'); i++)
{
if (text[i] == '.')
{
if (floatingPoint > 0.0f) break;
floatingPoint = 10.0f;
continue;
}
if (floatingPoint > 0.0f)
{
value += (float)(text[i] - '0') / floatingPoint;
floatingPoint *= 10.0f;
}
else
value = value * 10.0f + (float)(text[i] - '0');
}
return value * sign;
}
#if defined(SUPPORT_TEXT_MANIPULATION)
// Copy one string to another, returns bytes copied
int TextCopy(char *dst, const char *src)