diff options
Diffstat (limited to 'WebCore/svg/SVGTransformable.cpp')
-rw-r--r-- | WebCore/svg/SVGTransformable.cpp | 73 |
1 files changed, 35 insertions, 38 deletions
diff --git a/WebCore/svg/SVGTransformable.cpp b/WebCore/svg/SVGTransformable.cpp index a25e086..006bb94 100644 --- a/WebCore/svg/SVGTransformable.cpp +++ b/WebCore/svg/SVGTransformable.cpp @@ -89,7 +89,7 @@ static int parseTransformParamList(const UChar*& ptr, const UChar* end, float* v static const int requiredValuesForType[] = {0, 6, 1, 1, 1, 1, 1}; static const int optionalValuesForType[] = {0, 0, 1, 1, 2, 0, 0}; -bool SVGTransformable::parseTransformValue(unsigned type, const UChar*& ptr, const UChar* end, SVGTransform& t) +bool SVGTransformable::parseTransformValue(unsigned type, const UChar*& ptr, const UChar* end, SVGTransform& transform) { if (type == SVGTransform::SVG_TRANSFORM_UNKNOWN) return false; @@ -100,33 +100,33 @@ bool SVGTransformable::parseTransformValue(unsigned type, const UChar*& ptr, con return false; switch (type) { - case SVGTransform::SVG_TRANSFORM_SKEWX: - t.setSkewX(values[0]); - break; - case SVGTransform::SVG_TRANSFORM_SKEWY: - t.setSkewY(values[0]); - break; - case SVGTransform::SVG_TRANSFORM_SCALE: - if (valueCount == 1) // Spec: if only one param given, assume uniform scaling - t.setScale(values[0], values[0]); - else - t.setScale(values[0], values[1]); - break; - case SVGTransform::SVG_TRANSFORM_TRANSLATE: - if (valueCount == 1) // Spec: if only one param given, assume 2nd param to be 0 - t.setTranslate(values[0], 0); - else - t.setTranslate(values[0], values[1]); - break; - case SVGTransform::SVG_TRANSFORM_ROTATE: - if (valueCount == 1) - t.setRotate(values[0], 0, 0); - else - t.setRotate(values[0], values[1], values[2]); - break; - case SVGTransform::SVG_TRANSFORM_MATRIX: - t.setMatrix(AffineTransform(values[0], values[1], values[2], values[3], values[4], values[5])); - break; + case SVGTransform::SVG_TRANSFORM_SKEWX: + transform.setSkewX(values[0]); + break; + case SVGTransform::SVG_TRANSFORM_SKEWY: + transform.setSkewY(values[0]); + break; + case SVGTransform::SVG_TRANSFORM_SCALE: + if (valueCount == 1) // Spec: if only one param given, assume uniform scaling + transform.setScale(values[0], values[0]); + else + transform.setScale(values[0], values[1]); + break; + case SVGTransform::SVG_TRANSFORM_TRANSLATE: + if (valueCount == 1) // Spec: if only one param given, assume 2nd param to be 0 + transform.setTranslate(values[0], 0); + else + transform.setTranslate(values[0], values[1]); + break; + case SVGTransform::SVG_TRANSFORM_ROTATE: + if (valueCount == 1) + transform.setRotate(values[0], 0, 0); + else + transform.setRotate(values[0], values[1], values[2]); + break; + case SVGTransform::SVG_TRANSFORM_MATRIX: + transform.setMatrix(AffineTransform(values[0], values[1], values[2], values[3], values[4], values[5])); + break; } return true; @@ -165,19 +165,16 @@ static inline bool parseAndSkipType(const UChar*& currTransform, const UChar* en return true; } -bool SVGTransformable::parseTransformAttribute(SVGTransformList* list, const AtomicString& transform) +bool SVGTransformable::parseTransformAttribute(SVGTransformList& list, const AtomicString& transform) { const UChar* start = transform.characters(); return parseTransformAttribute(list, start, start + transform.length()); } -bool SVGTransformable::parseTransformAttribute(SVGTransformList* list, const UChar*& currTransform, const UChar* end, TransformParsingMode mode) +bool SVGTransformable::parseTransformAttribute(SVGTransformList& list, const UChar*& currTransform, const UChar* end, TransformParsingMode mode) { - ExceptionCode ec = 0; - if (mode == ClearList) { - list->clear(ec); - ASSERT(!ec); - } + if (mode == ClearList) + list.clear(); bool delimParsed = false; while (currTransform < end) { @@ -188,11 +185,11 @@ bool SVGTransformable::parseTransformAttribute(SVGTransformList* list, const UCh if (!parseAndSkipType(currTransform, end, type)) return false; - SVGTransform t; - if (!parseTransformValue(type, currTransform, end, t)) + SVGTransform transform; + if (!parseTransformValue(type, currTransform, end, transform)) return false; - list->appendItem(t, ec); + list.append(transform); skipOptionalSpaces(currTransform, end); if (currTransform < end && *currTransform == ',') { delimParsed = true; |