{
// if only one char in string, can only be regular image
const std::size_t count = url.size();
+ VisualUrl::Type returnType = VisualUrl::REGULAR_IMAGE;
if(count > 0)
{
// parsing from the end for better chance of early outs
char GIF[4] = {'f', 'i', 'g', '.'};
char WEBP[5] = {'p', 'b', 'e', 'w', '.'};
char JSON[5] = {'n', 'o', 's', 'j', '.'};
+ char TVG[4] = {'g', 'v', 't', '.'};
unsigned int svgScore = 0;
+ unsigned int tvgScore = 0;
unsigned int gifScore = 0;
unsigned int webpScore = 0;
unsigned int jsonScore = 0;
return VisualUrl::SVG;
}
}
+ if((offsetFromEnd < sizeof(TVG)) && (currentChar == TVG[offsetFromEnd]))
+ {
+ // early out if TVG as can't be used in N patch for now
+ if(++tvgScore == sizeof(TVG))
+ {
+ return VisualUrl::TVG;
+ }
+ }
if((offsetFromEnd < sizeof(GIF)) && (currentChar == GIF[offsetFromEnd]))
{
- // early out if GIF as can't be used in N patch for now
+ //find type, but need to be check used in N patch
if(++gifScore == sizeof(GIF))
{
- return VisualUrl::GIF;
+ returnType = VisualUrl::GIF;
}
}
if((offsetFromEnd < sizeof(WEBP)) && (currentChar == WEBP[offsetFromEnd]))
{
- // early out if WEBP as can't be used in N patch for now
if(++webpScore == sizeof(WEBP))
{
- return VisualUrl::WEBP;
+ //find type, but need to be check used in N patch
+ returnType = VisualUrl::WEBP;
}
}
if((offsetFromEnd < sizeof(JSON)) && (currentChar == JSON[offsetFromEnd]))
else
{
// early out, not a valid N/9-patch URL
- return VisualUrl::REGULAR_IMAGE;
+ return returnType;
}
break;
}
else
{
// early out, not a valid N/9-patch URL
- return VisualUrl::REGULAR_IMAGE;
+ return returnType;
}
break;
}
}
}
// if we got here it is a regular image
- return VisualUrl::REGULAR_IMAGE;
+ return returnType;
}
} // namespace