X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2FWebKit%2FSource%2Fcore%2Fsvg%2FSVGParserUtilities.cpp;h=a810bc91d8c8762499a65d86006772c2f8f95d6e;hb=1afa4dd80ef85af7c90efaea6959db1d92330844;hp=21a4aea865988b6a8029e0ca131933ce46789f35;hpb=90762837333c13ccf56f2ad88e4481fc71e8d281;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/WebKit/Source/core/svg/SVGParserUtilities.cpp b/src/third_party/WebKit/Source/core/svg/SVGParserUtilities.cpp index 21a4aea..a810bc9 100644 --- a/src/third_party/WebKit/Source/core/svg/SVGParserUtilities.cpp +++ b/src/third_party/WebKit/Source/core/svg/SVGParserUtilities.cpp @@ -251,200 +251,6 @@ bool parseNumberOrPercentage(const String& string, float& number) return genericParseNumberOrPercentage(ptr, end, number); } -#if ENABLE(SVG_FONTS) -template -static bool parseGlyphName(const CharType*& ptr, const CharType* end, HashSet& values) -{ - skipOptionalSVGSpaces(ptr, end); - - while (ptr < end) { - // Leading and trailing white space, and white space before and after separators, will be ignored. - const CharType* inputStart = ptr; - while (ptr < end && *ptr != ',') - ++ptr; - - if (ptr == inputStart) - break; - - // walk backwards from the ; to ignore any whitespace - const CharType* inputEnd = ptr - 1; - while (inputStart < inputEnd && isHTMLSpace(*inputEnd)) - --inputEnd; - - values.add(String(inputStart, inputEnd - inputStart + 1)); - skipOptionalSVGSpacesOrDelimiter(ptr, end, ','); - } - - return true; -} - -bool parseGlyphName(const String& input, HashSet& values) -{ - // FIXME: Parsing error detection is missing. - values.clear(); - if (input.isEmpty()) - return true; - if (input.is8Bit()) { - const LChar* ptr = input.characters8(); - const LChar* end = ptr + input.length(); - return parseGlyphName(ptr, end, values); - } - const UChar* ptr = input.characters16(); - const UChar* end = ptr + input.length(); - return parseGlyphName(ptr, end, values); -} - -template -static bool parseUnicodeRange(const CharType* characters, unsigned length, UnicodeRange& range) -{ - if (length < 2 || characters[0] != 'U' || characters[1] != '+') - return false; - - // Parse the starting hex number (or its prefix). - unsigned startRange = 0; - unsigned startLength = 0; - - const CharType* ptr = characters + 2; - const CharType* end = characters + length; - while (ptr < end) { - if (!isASCIIHexDigit(*ptr)) - break; - ++startLength; - if (startLength > 6) - return false; - startRange = (startRange << 4) | toASCIIHexValue(*ptr); - ++ptr; - } - - // Handle the case of ranges separated by "-" sign. - if (2 + startLength < length && *ptr == '-') { - if (!startLength) - return false; - - // Parse the ending hex number (or its prefix). - unsigned endRange = 0; - unsigned endLength = 0; - ++ptr; - while (ptr < end) { - if (!isASCIIHexDigit(*ptr)) - break; - ++endLength; - if (endLength > 6) - return false; - endRange = (endRange << 4) | toASCIIHexValue(*ptr); - ++ptr; - } - - if (!endLength) - return false; - - range.first = startRange; - range.second = endRange; - return true; - } - - // Handle the case of a number with some optional trailing question marks. - unsigned endRange = startRange; - while (ptr < end) { - if (*ptr != '?') - break; - ++startLength; - if (startLength > 6) - return false; - startRange <<= 4; - endRange = (endRange << 4) | 0xF; - ++ptr; - } - - if (!startLength) - return false; - - range.first = startRange; - range.second = endRange; - return true; -} - -template -static bool genericParseKerningUnicodeString(const CharType*& ptr, const CharType* end, UnicodeRanges& rangeList, HashSet& stringList) -{ - while (ptr < end) { - const CharType* inputStart = ptr; - while (ptr < end && *ptr != ',') - ++ptr; - - if (ptr == inputStart) - break; - - // Try to parse unicode range first - UnicodeRange range; - if (parseUnicodeRange(inputStart, ptr - inputStart, range)) - rangeList.append(range); - else - stringList.add(String(inputStart, ptr - inputStart)); - ++ptr; - } - - return true; -} - -bool parseKerningUnicodeString(const String& input, UnicodeRanges& rangeList, HashSet& stringList) -{ - // FIXME: Parsing error detection is missing. - if (input.isEmpty()) - return true; - if (input.is8Bit()) { - const LChar* ptr = input.characters8(); - const LChar* end = ptr + input.length(); - return genericParseKerningUnicodeString(ptr, end, rangeList, stringList); - } - const UChar* ptr = input.characters16(); - const UChar* end = ptr + input.length(); - return genericParseKerningUnicodeString(ptr, end, rangeList, stringList); -} - -template -static Vector genericParseDelimitedString(const CharType*& ptr, const CharType* end, const char seperator) -{ - Vector values; - - skipOptionalSVGSpaces(ptr, end); - - while (ptr < end) { - // Leading and trailing white space, and white space before and after semicolon separators, will be ignored. - const CharType* inputStart = ptr; - while (ptr < end && *ptr != seperator) // careful not to ignore whitespace inside inputs - ptr++; - - if (ptr == inputStart) - break; - - // walk backwards from the ; to ignore any whitespace - const CharType* inputEnd = ptr - 1; - while (inputStart < inputEnd && isHTMLSpace(*inputEnd)) - inputEnd--; - - values.append(String(inputStart, inputEnd - inputStart + 1)); - skipOptionalSVGSpacesOrDelimiter(ptr, end, seperator); - } - - return values; -} - -Vector parseDelimitedString(const String& input, const char seperator) -{ - if (input.isEmpty()) - return Vector(); - if (input.is8Bit()) { - const LChar* ptr = input.characters8(); - const LChar* end = ptr + input.length(); - return genericParseDelimitedString(ptr, end, seperator); - } - const UChar* ptr = input.characters16(); - const UChar* end = ptr + input.length(); - return genericParseDelimitedString(ptr, end, seperator); -} -#endif - template bool parseFloatPoint(const CharType*& current, const CharType* end, FloatPoint& point) {