SVGTransformType parseTransformType(const String& string) { if (string.isEmpty()) return SVG_TRANSFORM_UNKNOWN; SVGTransformType type = SVG_TRANSFORM_UNKNOWN; if (string.is8Bit()) { const LChar* ptr = string.characters8(); const LChar* end = ptr + string.length(); parseAndSkipTransformType(ptr, end, type); } else { const UChar* ptr = string.characters16(); const UChar* end = ptr + string.length(); parseAndSkipTransformType(ptr, end, type); } return type; }
bool SVGTransformList::parseInternal(const CharType*& ptr, const CharType* end) { clear(); bool delimParsed = false; while (ptr < end) { delimParsed = false; SVGTransformType transformType = SVG_TRANSFORM_UNKNOWN; skipOptionalSVGSpaces(ptr, end); if (!parseAndSkipTransformType(ptr, end, transformType)) return false; if (!skipOptionalSVGSpaces(ptr, end) || *ptr != '(') return false; ptr++; RefPtr<SVGTransform> transform = parseTransformOfType(transformType, ptr, end); if (!transform) return false; if (!skipOptionalSVGSpaces(ptr, end) || *ptr != ')') return false; ptr++; append(transform.release()); skipOptionalSVGSpaces(ptr, end); if (ptr < end && *ptr == ',') { delimParsed = true; ++ptr; skipOptionalSVGSpaces(ptr, end); } } return !delimParsed; }