summaryrefslogtreecommitdiffstats
path: root/WebCore/svg/SVGTransformList.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/svg/SVGTransformList.cpp')
-rw-r--r--WebCore/svg/SVGTransformList.cpp57
1 files changed, 28 insertions, 29 deletions
diff --git a/WebCore/svg/SVGTransformList.cpp b/WebCore/svg/SVGTransformList.cpp
index ae2f298..9137a89 100644
--- a/WebCore/svg/SVGTransformList.cpp
+++ b/WebCore/svg/SVGTransformList.cpp
@@ -26,53 +26,52 @@
#include "AffineTransform.h"
#include "SVGSVGElement.h"
#include "SVGTransform.h"
+#include <wtf/text/StringConcatenate.h>
+#include <wtf/text/StringBuilder.h>
-using namespace WebCore;
+namespace WebCore {
-SVGTransformList::SVGTransformList(const QualifiedName& attributeName)
- : SVGPODList<SVGTransform>(attributeName)
-{
-}
-
-SVGTransformList::~SVGTransformList()
-{
-}
-
-SVGTransform SVGTransformList::createSVGTransformFromMatrix(const AffineTransform& matrix) const
+SVGTransform SVGTransformList::createSVGTransformFromMatrix(const SVGMatrix& matrix) const
{
return SVGSVGElement::createSVGTransformFromMatrix(matrix);
}
SVGTransform SVGTransformList::consolidate()
{
- ExceptionCode ec = 0;
- return initialize(concatenate(), ec);
+ AffineTransform matrix;
+ if (!concatenate(matrix))
+ return SVGTransform();
+
+ SVGTransform transform(matrix);
+ clear();
+ append(transform);
+ return transform;
}
-SVGTransform SVGTransformList::concatenate() const
+bool SVGTransformList::concatenate(AffineTransform& result) const
{
- unsigned int length = numberOfItems();
- if (!length)
- return SVGTransform();
-
- AffineTransform matrix;
- ExceptionCode ec = 0;
- for (unsigned int i = 0; i < length; i++)
- matrix = getItem(i, ec).matrix() * matrix;
+ unsigned size = this->size();
+ if (!size)
+ return false;
- return SVGTransform(matrix);
+ for (unsigned i = 0; i < size; ++i)
+ result = at(i).matrix() * result;
+
+ return true;
}
String SVGTransformList::valueAsString() const
{
// TODO: We may want to build a real transform string, instead of concatting to a matrix(...).
- SVGTransform transform = concatenate();
- if (transform.type() == SVGTransform::SVG_TRANSFORM_MATRIX) {
- AffineTransform matrix = transform.matrix();
- return String::format("matrix(%f %f %f %f %f %f)", matrix.a(), matrix.b(), matrix.c(), matrix.d(), matrix.e(), matrix.f());
- }
+ AffineTransform matrix;
+ concatenate(matrix);
- return String();
+ StringBuilder builder;
+ builder.append(makeString("matrix(", String::number(matrix.a()), ' ', String::number(matrix.b()), ' ', String::number(matrix.c()), ' '));
+ builder.append(makeString(String::number(matrix.d()), ' ', String::number(matrix.e()), ' ', String::number(matrix.f()), ')'));
+ return builder.toString();
}
+} // namespace WebCore
+
#endif // ENABLE(SVG)