OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> | 2 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> |
3 * Copyright (C) 2007 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2007 Rob Buis <buis@kde.org> |
4 * Copyright (C) 2008 Apple Inc. All rights reserved. | 4 * Copyright (C) 2008 Apple Inc. All rights reserved. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 | 44 |
45 DEFINE_NODE_FACTORY(SVGAnimateMotionElement) | 45 DEFINE_NODE_FACTORY(SVGAnimateMotionElement) |
46 | 46 |
47 SVGAnimateMotionElement::~SVGAnimateMotionElement() {} | 47 SVGAnimateMotionElement::~SVGAnimateMotionElement() {} |
48 | 48 |
49 bool SVGAnimateMotionElement::hasValidAttributeType() { | 49 bool SVGAnimateMotionElement::hasValidAttributeType() { |
50 SVGElement* targetElement = this->targetElement(); | 50 SVGElement* targetElement = this->targetElement(); |
51 if (!targetElement) | 51 if (!targetElement) |
52 return false; | 52 return false; |
53 | 53 |
54 // We don't have a special attribute name to verify the animation type. Check
the element name instead. | 54 // We don't have a special attribute name to verify the animation type. Check |
| 55 // the element name instead. |
55 if (!targetElement->isSVGGraphicsElement()) | 56 if (!targetElement->isSVGGraphicsElement()) |
56 return false; | 57 return false; |
57 // Spec: SVG 1.1 section 19.2.15 | 58 // Spec: SVG 1.1 section 19.2.15 |
58 // FIXME: svgTag is missing. Needs to be checked, if transforming <svg> could
cause problems. | 59 // FIXME: svgTag is missing. Needs to be checked, if transforming <svg> could |
| 60 // cause problems. |
59 return ( | 61 return ( |
60 isSVGGElement(*targetElement) || isSVGDefsElement(*targetElement) || | 62 isSVGGElement(*targetElement) || isSVGDefsElement(*targetElement) || |
61 isSVGUseElement(*targetElement) || isSVGImageElement(*targetElement) || | 63 isSVGUseElement(*targetElement) || isSVGImageElement(*targetElement) || |
62 isSVGSwitchElement(*targetElement) || isSVGPathElement(*targetElement) || | 64 isSVGSwitchElement(*targetElement) || isSVGPathElement(*targetElement) || |
63 isSVGRectElement(*targetElement) || isSVGCircleElement(*targetElement) || | 65 isSVGRectElement(*targetElement) || isSVGCircleElement(*targetElement) || |
64 isSVGEllipseElement(*targetElement) || isSVGLineElement(*targetElement) || | 66 isSVGEllipseElement(*targetElement) || isSVGLineElement(*targetElement) || |
65 isSVGPolylineElement(*targetElement) || | 67 isSVGPolylineElement(*targetElement) || |
66 isSVGPolygonElement(*targetElement) || isSVGTextElement(*targetElement) || | 68 isSVGPolygonElement(*targetElement) || isSVGTextElement(*targetElement) || |
67 isSVGClipPathElement(*targetElement) || | 69 isSVGClipPathElement(*targetElement) || |
68 isSVGMaskElement(*targetElement) || isSVGAElement(*targetElement) || | 70 isSVGMaskElement(*targetElement) || isSVGAElement(*targetElement) || |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 parsePoint(byString, byPoint); | 202 parsePoint(byString, byPoint); |
201 m_toPoint = | 203 m_toPoint = |
202 FloatPoint(m_fromPoint.x() + byPoint.x(), m_fromPoint.y() + byPoint.y()); | 204 FloatPoint(m_fromPoint.x() + byPoint.x(), m_fromPoint.y() + byPoint.y()); |
203 return true; | 205 return true; |
204 } | 206 } |
205 | 207 |
206 void SVGAnimateMotionElement::calculateAnimatedValue(float percentage, | 208 void SVGAnimateMotionElement::calculateAnimatedValue(float percentage, |
207 unsigned repeatCount, | 209 unsigned repeatCount, |
208 SVGSMILElement*) { | 210 SVGSMILElement*) { |
209 SVGElement* targetElement = this->targetElement(); | 211 SVGElement* targetElement = this->targetElement(); |
210 if (!targetElement) | 212 DCHECK(targetElement); |
211 return; | |
212 AffineTransform* transform = targetElement->animateMotionTransform(); | 213 AffineTransform* transform = targetElement->animateMotionTransform(); |
213 if (!transform) | 214 if (!transform) |
214 return; | 215 return; |
215 | 216 |
216 if (LayoutObject* targetLayoutObject = targetElement->layoutObject()) | 217 if (LayoutObject* targetLayoutObject = targetElement->layoutObject()) |
217 targetLayoutObject->setNeedsTransformUpdate(); | 218 targetLayoutObject->setNeedsTransformUpdate(); |
218 | 219 |
219 if (!isAdditive()) | 220 if (!isAdditive()) |
220 transform->makeIdentity(); | 221 transform->makeIdentity(); |
221 | 222 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 transform->translate(position.x(), position.y()); | 255 transform->translate(position.x(), position.y()); |
255 RotateMode rotateMode = this->getRotateMode(); | 256 RotateMode rotateMode = this->getRotateMode(); |
256 if (rotateMode != RotateAuto && rotateMode != RotateAutoReverse) | 257 if (rotateMode != RotateAuto && rotateMode != RotateAutoReverse) |
257 return; | 258 return; |
258 if (rotateMode == RotateAutoReverse) | 259 if (rotateMode == RotateAutoReverse) |
259 angle += 180; | 260 angle += 180; |
260 transform->rotate(angle); | 261 transform->rotate(angle); |
261 } | 262 } |
262 | 263 |
263 void SVGAnimateMotionElement::applyResultsToTarget() { | 264 void SVGAnimateMotionElement::applyResultsToTarget() { |
264 // We accumulate to the target element transform list so there is not much to
do here. | 265 // We accumulate to the target element transform list so there is not much to |
| 266 // do here. |
265 SVGElement* targetElement = this->targetElement(); | 267 SVGElement* targetElement = this->targetElement(); |
266 if (!targetElement) | 268 if (!targetElement) |
267 return; | 269 return; |
268 | 270 |
269 if (LayoutObject* layoutObject = targetElement->layoutObject()) | 271 if (LayoutObject* layoutObject = targetElement->layoutObject()) |
270 markForLayoutAndParentResourceInvalidation(layoutObject); | 272 markForLayoutAndParentResourceInvalidation(layoutObject); |
271 | 273 |
272 AffineTransform* t = targetElement->animateMotionTransform(); | 274 AffineTransform* t = targetElement->animateMotionTransform(); |
273 if (!t) | 275 if (!t) |
274 return; | 276 return; |
(...skipping 27 matching lines...) Expand all Loading... |
302 } | 304 } |
303 | 305 |
304 void SVGAnimateMotionElement::updateAnimationMode() { | 306 void SVGAnimateMotionElement::updateAnimationMode() { |
305 if (!m_animationPath.isEmpty()) | 307 if (!m_animationPath.isEmpty()) |
306 setAnimationMode(PathAnimation); | 308 setAnimationMode(PathAnimation); |
307 else | 309 else |
308 SVGAnimationElement::updateAnimationMode(); | 310 SVGAnimationElement::updateAnimationMode(); |
309 } | 311 } |
310 | 312 |
311 } // namespace blink | 313 } // namespace blink |
OLD | NEW |