diff --git a/src/raylib.h b/src/raylib.h index fd870c188..d5eafe7f3 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1481,6 +1481,7 @@ RLAPI const char *TextToUpper(const char *text); // Get upp 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 float TextToFloat(const char *text); // Get float value from text (negative values not supported) //------------------------------------------------------------------------------------ // Basic 3d Shapes Drawing Functions (Module: models) diff --git a/src/rtext.c b/src/rtext.c index 1ab45277a..94a615b73 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -1421,6 +1421,26 @@ int TextToInteger(const char *text) return value*sign; } +float TextToFloat(const char *text) { + float value = 0; + float sign = 1; + + if ((text[0] == '+') || (text[0] == '-')) { + if (text[0] == '-') sign = -1; + text++; + } + int i; + for (i = 0; ((text[i] >= '0') && (text[i] <= '9')); ++i) value = value * 10 + (float) (text[i] - '0'); + if (text[i++] == '.') { + float divisor = 10; + for (; ((text[i] >= '0') && (text[i] <= '9')); ++i) { + value += (float) (text[i] - '0') / divisor; + divisor *= 10; + } + } + return value * sign; +} + #if defined(SUPPORT_TEXT_MANIPULATION) // Copy one string to another, returns bytes copied int TextCopy(char *dst, const char *src)