summaryrefslogtreecommitdiff
path: root/Source/WebCore/svg/SVGTransformable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/svg/SVGTransformable.cpp')
-rw-r--r--Source/WebCore/svg/SVGTransformable.cpp55
1 files changed, 28 insertions, 27 deletions
diff --git a/Source/WebCore/svg/SVGTransformable.cpp b/Source/WebCore/svg/SVGTransformable.cpp
index fb8ff8866..ea048528b 100644
--- a/Source/WebCore/svg/SVGTransformable.cpp
+++ b/Source/WebCore/svg/SVGTransformable.cpp
@@ -20,8 +20,6 @@
*/
#include "config.h"
-
-#if ENABLE(SVG)
#include "SVGTransformable.h"
#include "AffineTransform.h"
@@ -29,7 +27,8 @@
#include "SVGElement.h"
#include "SVGNames.h"
#include "SVGParserUtilities.h"
-#include "SVGTransformList.h"
+#include "SVGTransformListValues.h"
+#include <wtf/text/StringView.h>
namespace WebCore {
@@ -94,9 +93,9 @@ SVGTransformable::~SVGTransformable()
{
}
-bool SVGTransformable::parseTransformValue(unsigned type, const UChar*& ptr, const UChar* end, SVGTransform& transform)
+bool SVGTransformable::parseTransformValue(SVGTransformValue::SVGTransformType type, const UChar*& ptr, const UChar* end, SVGTransformValue& transform)
{
- if (type == SVGTransform::SVG_TRANSFORM_UNKNOWN)
+ if (type == SVGTransformValue::SVG_TRANSFORM_UNKNOWN)
return false;
int valueCount = 0;
@@ -105,31 +104,34 @@ bool SVGTransformable::parseTransformValue(unsigned type, const UChar*& ptr, con
return false;
switch (type) {
- case SVGTransform::SVG_TRANSFORM_SKEWX:
+ case SVGTransformValue::SVG_TRANSFORM_UNKNOWN:
+ ASSERT_NOT_REACHED();
+ break;
+ case SVGTransformValue::SVG_TRANSFORM_SKEWX:
transform.setSkewX(values[0]);
break;
- case SVGTransform::SVG_TRANSFORM_SKEWY:
+ case SVGTransformValue::SVG_TRANSFORM_SKEWY:
transform.setSkewY(values[0]);
break;
- case SVGTransform::SVG_TRANSFORM_SCALE:
+ case SVGTransformValue::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:
+ case SVGTransformValue::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:
+ case SVGTransformValue::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:
+ case SVGTransformValue::SVG_TRANSFORM_MATRIX:
transform.setMatrix(AffineTransform(values[0], values[1], values[2], values[3], values[4], values[5]));
break;
}
@@ -144,41 +146,42 @@ static const UChar translateDesc[] = {'t', 'r', 'a', 'n', 's', 'l', 'a', 't', '
static const UChar rotateDesc[] = {'r', 'o', 't', 'a', 't', 'e'};
static const UChar matrixDesc[] = {'m', 'a', 't', 'r', 'i', 'x'};
-static inline bool parseAndSkipType(const UChar*& currTransform, const UChar* end, unsigned short& type)
+static inline bool parseAndSkipType(const UChar*& currTransform, const UChar* end, SVGTransformValue::SVGTransformType& type)
{
if (currTransform >= end)
return false;
if (*currTransform == 's') {
if (skipString(currTransform, end, skewXDesc, WTF_ARRAY_LENGTH(skewXDesc)))
- type = SVGTransform::SVG_TRANSFORM_SKEWX;
+ type = SVGTransformValue::SVG_TRANSFORM_SKEWX;
else if (skipString(currTransform, end, skewYDesc, WTF_ARRAY_LENGTH(skewYDesc)))
- type = SVGTransform::SVG_TRANSFORM_SKEWY;
+ type = SVGTransformValue::SVG_TRANSFORM_SKEWY;
else if (skipString(currTransform, end, scaleDesc, WTF_ARRAY_LENGTH(scaleDesc)))
- type = SVGTransform::SVG_TRANSFORM_SCALE;
+ type = SVGTransformValue::SVG_TRANSFORM_SCALE;
else
return false;
} else if (skipString(currTransform, end, translateDesc, WTF_ARRAY_LENGTH(translateDesc)))
- type = SVGTransform::SVG_TRANSFORM_TRANSLATE;
+ type = SVGTransformValue::SVG_TRANSFORM_TRANSLATE;
else if (skipString(currTransform, end, rotateDesc, WTF_ARRAY_LENGTH(rotateDesc)))
- type = SVGTransform::SVG_TRANSFORM_ROTATE;
+ type = SVGTransformValue::SVG_TRANSFORM_ROTATE;
else if (skipString(currTransform, end, matrixDesc, WTF_ARRAY_LENGTH(matrixDesc)))
- type = SVGTransform::SVG_TRANSFORM_MATRIX;
+ type = SVGTransformValue::SVG_TRANSFORM_MATRIX;
else
return false;
return true;
}
-SVGTransform::SVGTransformType SVGTransformable::parseTransformType(const String& typeString)
+SVGTransformValue::SVGTransformType SVGTransformable::parseTransformType(const String& typeString)
{
- unsigned short type = SVGTransform::SVG_TRANSFORM_UNKNOWN;
- const UChar* characters = typeString.deprecatedCharacters();
+ SVGTransformValue::SVGTransformType type = SVGTransformValue::SVG_TRANSFORM_UNKNOWN;
+ auto upconvertedCharacters = StringView(typeString).upconvertedCharacters();
+ const UChar* characters = upconvertedCharacters;
parseAndSkipType(characters, characters + typeString.length(), type);
- return static_cast<SVGTransform::SVGTransformType>(type);
+ return type;
}
-bool SVGTransformable::parseTransformAttribute(SVGTransformList& list, const UChar*& currTransform, const UChar* end, TransformParsingMode mode)
+bool SVGTransformable::parseTransformAttribute(SVGTransformListValues& list, const UChar*& currTransform, const UChar* end, TransformParsingMode mode)
{
if (mode == ClearList)
list.clear();
@@ -186,13 +189,13 @@ bool SVGTransformable::parseTransformAttribute(SVGTransformList& list, const UCh
bool delimParsed = false;
while (currTransform < end) {
delimParsed = false;
- unsigned short type = SVGTransform::SVG_TRANSFORM_UNKNOWN;
+ SVGTransformValue::SVGTransformType type = SVGTransformValue::SVG_TRANSFORM_UNKNOWN;
skipOptionalSVGSpaces(currTransform, end);
if (!parseAndSkipType(currTransform, end, type))
return false;
- SVGTransform transform;
+ SVGTransformValue transform;
if (!parseTransformValue(type, currTransform, end, transform))
return false;
@@ -209,5 +212,3 @@ bool SVGTransformable::parseTransformAttribute(SVGTransformList& list, const UCh
}
}
-
-#endif // ENABLE(SVG)