d5cc04b2bc
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12427 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
78 lines
1.7 KiB
Diff
78 lines
1.7 KiB
Diff
1,10d0
|
|
< //
|
|
< // "$Id$"
|
|
< //
|
|
<
|
|
< /* Modified by FLTK from original source file "nanosvg.h" to support compilation
|
|
< with Visual Studio 7:
|
|
< remove the implementation of function nsvg__atof() that uses
|
|
< unsupported "long long" type and strtoll() function.
|
|
< */
|
|
<
|
|
1087a1078,1137
|
|
> // We roll our own string to float because the std library one uses locale and messes things up.
|
|
> static double nsvg__atof(const char* s)
|
|
> {
|
|
> char* cur = (char*)s;
|
|
> char* end = NULL;
|
|
> double res = 0.0, sign = 1.0;
|
|
> long long intPart = 0, fracPart = 0;
|
|
> char hasIntPart = 0, hasFracPart = 0;
|
|
>
|
|
> // Parse optional sign
|
|
> if (*cur == '+') {
|
|
> cur++;
|
|
> } else if (*cur == '-') {
|
|
> sign = -1;
|
|
> cur++;
|
|
> }
|
|
>
|
|
> // Parse integer part
|
|
> if (nsvg__isdigit(*cur)) {
|
|
> // Parse digit sequence
|
|
> intPart = (double)strtoll(cur, &end, 10);
|
|
> if (cur != end) {
|
|
> res = (double)intPart;
|
|
> hasIntPart = 1;
|
|
> cur = end;
|
|
> }
|
|
> }
|
|
>
|
|
> // Parse fractional part.
|
|
> if (*cur == '.') {
|
|
> cur++; // Skip '.'
|
|
> if (nsvg__isdigit(*cur)) {
|
|
> // Parse digit sequence
|
|
> fracPart = strtoll(cur, &end, 10);
|
|
> if (cur != end) {
|
|
> res += (double)fracPart / pow(10.0, (double)(end - cur));
|
|
> hasFracPart = 1;
|
|
> cur = end;
|
|
> }
|
|
> }
|
|
> }
|
|
>
|
|
> // A valid number should have integer or fractional part.
|
|
> if (!hasIntPart && !hasFracPart)
|
|
> return 0.0;
|
|
>
|
|
> // Parse optional exponent
|
|
> if (*cur == 'e' || *cur == 'E') {
|
|
> int expPart = 0;
|
|
> cur++; // skip 'E'
|
|
> expPart = strtol(cur, &end, 10); // Parse digit sequence with sign
|
|
> if (cur != end) {
|
|
> res *= pow(10.0, (double)expPart);
|
|
> }
|
|
> }
|
|
>
|
|
> return res * sign;
|
|
> }
|
|
>
|
|
>
|
|
2876,2879d2925
|
|
<
|
|
< //
|
|
< // End of "$Id$".
|
|
< //
|