diff options
Diffstat (limited to 'Source/WebCore/svg/SVGTransformDistance.cpp')
-rw-r--r-- | Source/WebCore/svg/SVGTransformDistance.cpp | 99 |
1 files changed, 48 insertions, 51 deletions
diff --git a/Source/WebCore/svg/SVGTransformDistance.cpp b/Source/WebCore/svg/SVGTransformDistance.cpp index 85b3a27a8..04f08358d 100644 --- a/Source/WebCore/svg/SVGTransformDistance.cpp +++ b/Source/WebCore/svg/SVGTransformDistance.cpp @@ -18,27 +18,26 @@ */ #include "config.h" -#if ENABLE(SVG) #include "SVGTransformDistance.h" #include "FloatConversion.h" #include "FloatPoint.h" #include "FloatSize.h" -#include "SVGTransform.h" +#include "SVGTransformValue.h" #include <math.h> namespace WebCore { SVGTransformDistance::SVGTransformDistance() - : m_type(SVGTransform::SVG_TRANSFORM_UNKNOWN) + : m_type(SVGTransformValue::SVG_TRANSFORM_UNKNOWN) , m_angle(0) , m_cx(0) , m_cy(0) { } -SVGTransformDistance::SVGTransformDistance(SVGTransform::SVGTransformType type, float angle, float cx, float cy, const AffineTransform& transform) +SVGTransformDistance::SVGTransformDistance(SVGTransformValue::SVGTransformType type, float angle, float cx, float cy, const AffineTransform& transform) : m_type(type) , m_angle(angle) , m_cx(cx) @@ -47,7 +46,7 @@ SVGTransformDistance::SVGTransformDistance(SVGTransform::SVGTransformType type, { } -SVGTransformDistance::SVGTransformDistance(const SVGTransform& fromSVGTransform, const SVGTransform& toSVGTransform) +SVGTransformDistance::SVGTransformDistance(const SVGTransformValue& fromSVGTransform, const SVGTransformValue& toSVGTransform) : m_type(fromSVGTransform.type()) , m_angle(0) , m_cx(0) @@ -56,33 +55,33 @@ SVGTransformDistance::SVGTransformDistance(const SVGTransform& fromSVGTransform, ASSERT(m_type == toSVGTransform.type()); switch (m_type) { - case SVGTransform::SVG_TRANSFORM_MATRIX: + case SVGTransformValue::SVG_TRANSFORM_MATRIX: ASSERT_NOT_REACHED(); #if ASSERT_DISABLED FALLTHROUGH; #endif - case SVGTransform::SVG_TRANSFORM_UNKNOWN: + case SVGTransformValue::SVG_TRANSFORM_UNKNOWN: break; - case SVGTransform::SVG_TRANSFORM_ROTATE: { + case SVGTransformValue::SVG_TRANSFORM_ROTATE: { FloatSize centerDistance = toSVGTransform.rotationCenter() - fromSVGTransform.rotationCenter(); m_angle = toSVGTransform.angle() - fromSVGTransform.angle(); m_cx = centerDistance.width(); m_cy = centerDistance.height(); break; } - case SVGTransform::SVG_TRANSFORM_TRANSLATE: { + case SVGTransformValue::SVG_TRANSFORM_TRANSLATE: { FloatSize translationDistance = toSVGTransform.translate() - fromSVGTransform.translate(); m_transform.translate(translationDistance.width(), translationDistance.height()); break; } - case SVGTransform::SVG_TRANSFORM_SCALE: { + case SVGTransformValue::SVG_TRANSFORM_SCALE: { float scaleX = toSVGTransform.scale().width() - fromSVGTransform.scale().width(); float scaleY = toSVGTransform.scale().height() - fromSVGTransform.scale().height(); m_transform.scaleNonUniform(scaleX, scaleY); break; } - case SVGTransform::SVG_TRANSFORM_SKEWX: - case SVGTransform::SVG_TRANSFORM_SKEWY: + case SVGTransformValue::SVG_TRANSFORM_SKEWX: + case SVGTransformValue::SVG_TRANSFORM_SKEWY: m_angle = toSVGTransform.angle() - fromSVGTransform.angle(); break; } @@ -91,25 +90,25 @@ SVGTransformDistance::SVGTransformDistance(const SVGTransform& fromSVGTransform, SVGTransformDistance SVGTransformDistance::scaledDistance(float scaleFactor) const { switch (m_type) { - case SVGTransform::SVG_TRANSFORM_MATRIX: + case SVGTransformValue::SVG_TRANSFORM_MATRIX: ASSERT_NOT_REACHED(); #if ASSERT_DISABLED FALLTHROUGH; #endif - case SVGTransform::SVG_TRANSFORM_UNKNOWN: + case SVGTransformValue::SVG_TRANSFORM_UNKNOWN: return SVGTransformDistance(); - case SVGTransform::SVG_TRANSFORM_ROTATE: + case SVGTransformValue::SVG_TRANSFORM_ROTATE: return SVGTransformDistance(m_type, m_angle * scaleFactor, m_cx * scaleFactor, m_cy * scaleFactor, AffineTransform()); - case SVGTransform::SVG_TRANSFORM_SCALE: + case SVGTransformValue::SVG_TRANSFORM_SCALE: return SVGTransformDistance(m_type, m_angle * scaleFactor, m_cx * scaleFactor, m_cy * scaleFactor, AffineTransform(m_transform).scale(scaleFactor)); - case SVGTransform::SVG_TRANSFORM_TRANSLATE: { + case SVGTransformValue::SVG_TRANSFORM_TRANSLATE: { AffineTransform newTransform(m_transform); newTransform.setE(m_transform.e() * scaleFactor); newTransform.setF(m_transform.f() * scaleFactor); return SVGTransformDistance(m_type, 0, 0, 0, newTransform); } - case SVGTransform::SVG_TRANSFORM_SKEWX: - case SVGTransform::SVG_TRANSFORM_SKEWY: + case SVGTransformValue::SVG_TRANSFORM_SKEWX: + case SVGTransformValue::SVG_TRANSFORM_SKEWY: return SVGTransformDistance(m_type, m_angle * scaleFactor, m_cx * scaleFactor, m_cy * scaleFactor, AffineTransform()); } @@ -117,89 +116,89 @@ SVGTransformDistance SVGTransformDistance::scaledDistance(float scaleFactor) con return SVGTransformDistance(); } -SVGTransform SVGTransformDistance::addSVGTransforms(const SVGTransform& first, const SVGTransform& second, unsigned repeatCount) +SVGTransformValue SVGTransformDistance::addSVGTransforms(const SVGTransformValue& first, const SVGTransformValue& second, unsigned repeatCount) { ASSERT(first.type() == second.type()); - SVGTransform transform; + SVGTransformValue transform; switch (first.type()) { - case SVGTransform::SVG_TRANSFORM_MATRIX: + case SVGTransformValue::SVG_TRANSFORM_MATRIX: ASSERT_NOT_REACHED(); #if ASSERT_DISABLED FALLTHROUGH; #endif - case SVGTransform::SVG_TRANSFORM_UNKNOWN: - return SVGTransform(); - case SVGTransform::SVG_TRANSFORM_ROTATE: { + case SVGTransformValue::SVG_TRANSFORM_UNKNOWN: + return { }; + case SVGTransformValue::SVG_TRANSFORM_ROTATE: { transform.setRotate(first.angle() + second.angle() * repeatCount, first.rotationCenter().x() + second.rotationCenter().x() * repeatCount, first.rotationCenter().y() + second.rotationCenter().y() * repeatCount); return transform; } - case SVGTransform::SVG_TRANSFORM_TRANSLATE: { + case SVGTransformValue::SVG_TRANSFORM_TRANSLATE: { float dx = first.translate().x() + second.translate().x() * repeatCount; float dy = first.translate().y() + second.translate().y() * repeatCount; transform.setTranslate(dx, dy); return transform; } - case SVGTransform::SVG_TRANSFORM_SCALE: { + case SVGTransformValue::SVG_TRANSFORM_SCALE: { FloatSize scale = second.scale(); scale.scale(repeatCount); scale += first.scale(); transform.setScale(scale.width(), scale.height()); return transform; } - case SVGTransform::SVG_TRANSFORM_SKEWX: + case SVGTransformValue::SVG_TRANSFORM_SKEWX: transform.setSkewX(first.angle() + second.angle() * repeatCount); return transform; - case SVGTransform::SVG_TRANSFORM_SKEWY: + case SVGTransformValue::SVG_TRANSFORM_SKEWY: transform.setSkewY(first.angle() + second.angle() * repeatCount); return transform; } ASSERT_NOT_REACHED(); - return SVGTransform(); + return { }; } -SVGTransform SVGTransformDistance::addToSVGTransform(const SVGTransform& transform) const +SVGTransformValue SVGTransformDistance::addToSVGTransform(const SVGTransformValue& transform) const { - ASSERT(m_type == transform.type() || transform == SVGTransform()); + ASSERT(m_type == transform.type() || transform == SVGTransformValue()); - SVGTransform newTransform(transform); + SVGTransformValue newTransform(transform); switch (m_type) { - case SVGTransform::SVG_TRANSFORM_MATRIX: + case SVGTransformValue::SVG_TRANSFORM_MATRIX: ASSERT_NOT_REACHED(); #if ASSERT_DISABLED FALLTHROUGH; #endif - case SVGTransform::SVG_TRANSFORM_UNKNOWN: - return SVGTransform(); - case SVGTransform::SVG_TRANSFORM_TRANSLATE: { + case SVGTransformValue::SVG_TRANSFORM_UNKNOWN: + return { }; + case SVGTransformValue::SVG_TRANSFORM_TRANSLATE: { FloatPoint translation = transform.translate(); translation += FloatSize::narrowPrecision(m_transform.e(), m_transform.f()); newTransform.setTranslate(translation.x(), translation.y()); return newTransform; } - case SVGTransform::SVG_TRANSFORM_SCALE: { + case SVGTransformValue::SVG_TRANSFORM_SCALE: { FloatSize scale = transform.scale(); scale += FloatSize::narrowPrecision(m_transform.a(), m_transform.d()); newTransform.setScale(scale.width(), scale.height()); return newTransform; } - case SVGTransform::SVG_TRANSFORM_ROTATE: { + case SVGTransformValue::SVG_TRANSFORM_ROTATE: { FloatPoint center = transform.rotationCenter(); newTransform.setRotate(transform.angle() + m_angle, center.x() + m_cx, center.y() + m_cy); return newTransform; } - case SVGTransform::SVG_TRANSFORM_SKEWX: + case SVGTransformValue::SVG_TRANSFORM_SKEWX: newTransform.setSkewX(transform.angle() + m_angle); return newTransform; - case SVGTransform::SVG_TRANSFORM_SKEWY: + case SVGTransformValue::SVG_TRANSFORM_SKEWY: newTransform.setSkewY(transform.angle() + m_angle); return newTransform; } ASSERT_NOT_REACHED(); - return SVGTransform(); + return { }; } bool SVGTransformDistance::isZero() const @@ -210,21 +209,21 @@ bool SVGTransformDistance::isZero() const float SVGTransformDistance::distance() const { switch (m_type) { - case SVGTransform::SVG_TRANSFORM_MATRIX: + case SVGTransformValue::SVG_TRANSFORM_MATRIX: ASSERT_NOT_REACHED(); #if ASSERT_DISABLED FALLTHROUGH; #endif - case SVGTransform::SVG_TRANSFORM_UNKNOWN: + case SVGTransformValue::SVG_TRANSFORM_UNKNOWN: return 0; - case SVGTransform::SVG_TRANSFORM_ROTATE: + case SVGTransformValue::SVG_TRANSFORM_ROTATE: return sqrtf(m_angle * m_angle + m_cx * m_cx + m_cy * m_cy); - case SVGTransform::SVG_TRANSFORM_SCALE: + case SVGTransformValue::SVG_TRANSFORM_SCALE: return static_cast<float>(sqrt(m_transform.a() * m_transform.a() + m_transform.d() * m_transform.d())); - case SVGTransform::SVG_TRANSFORM_TRANSLATE: + case SVGTransformValue::SVG_TRANSFORM_TRANSLATE: return static_cast<float>(sqrt(m_transform.e() * m_transform.e() + m_transform.f() * m_transform.f())); - case SVGTransform::SVG_TRANSFORM_SKEWX: - case SVGTransform::SVG_TRANSFORM_SKEWY: + case SVGTransformValue::SVG_TRANSFORM_SKEWX: + case SVGTransformValue::SVG_TRANSFORM_SKEWY: return m_angle; } ASSERT_NOT_REACHED(); @@ -232,5 +231,3 @@ float SVGTransformDistance::distance() const } } - -#endif |