| Index: Source/core/svg/SVGParserUtilities.cpp
|
| diff --git a/Source/core/svg/SVGParserUtilities.cpp b/Source/core/svg/SVGParserUtilities.cpp
|
| index 21a4aea865988b6a8029e0ca131933ce46789f35..a810bc91d8c8762499a65d86006772c2f8f95d6e 100644
|
| --- a/Source/core/svg/SVGParserUtilities.cpp
|
| +++ b/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<typename CharType>
|
| -static bool parseGlyphName(const CharType*& ptr, const CharType* end, HashSet<String>& 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<CharType>(*inputEnd))
|
| - --inputEnd;
|
| -
|
| - values.add(String(inputStart, inputEnd - inputStart + 1));
|
| - skipOptionalSVGSpacesOrDelimiter(ptr, end, ',');
|
| - }
|
| -
|
| - return true;
|
| -}
|
| -
|
| -bool parseGlyphName(const String& input, HashSet<String>& 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<typename CharType>
|
| -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<typename CharType>
|
| -static bool genericParseKerningUnicodeString(const CharType*& ptr, const CharType* end, UnicodeRanges& rangeList, HashSet<String>& 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<String>& 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<typename CharType>
|
| -static Vector<String> genericParseDelimitedString(const CharType*& ptr, const CharType* end, const char seperator)
|
| -{
|
| - Vector<String> 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<CharType>(*inputEnd))
|
| - inputEnd--;
|
| -
|
| - values.append(String(inputStart, inputEnd - inputStart + 1));
|
| - skipOptionalSVGSpacesOrDelimiter(ptr, end, seperator);
|
| - }
|
| -
|
| - return values;
|
| -}
|
| -
|
| -Vector<String> parseDelimitedString(const String& input, const char seperator)
|
| -{
|
| - if (input.isEmpty())
|
| - return Vector<String>();
|
| - 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 <typename CharType>
|
| bool parseFloatPoint(const CharType*& current, const CharType* end, FloatPoint& point)
|
| {
|
|
|