OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde
.org> | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde
.org> |
3 * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005 Rob Buis <buis@kde.org> |
4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> | 4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> |
5 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 5 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 { | 58 { |
59 } | 59 } |
60 | 60 |
61 PassRefPtr<SVGPathSegList> SVGPathSegList::clone() | 61 PassRefPtr<SVGPathSegList> SVGPathSegList::clone() |
62 { | 62 { |
63 RefPtr<SVGPathSegList> svgPathSegList = adoptRef(new SVGPathSegList(m_contex
tElement, m_role, byteStream()->copy())); | 63 RefPtr<SVGPathSegList> svgPathSegList = adoptRef(new SVGPathSegList(m_contex
tElement, m_role, byteStream()->copy())); |
64 svgPathSegList->invalidateList(); | 64 svgPathSegList->invalidateList(); |
65 return svgPathSegList.release(); | 65 return svgPathSegList.release(); |
66 } | 66 } |
67 | 67 |
68 PassRefPtr<NewSVGPropertyBase> SVGPathSegList::cloneForAnimation(const String& v
alue) const | 68 PassRefPtr<SVGPropertyBase> SVGPathSegList::cloneForAnimation(const String& valu
e) const |
69 { | 69 { |
70 RefPtr<SVGPathSegList> svgPathSegList = SVGPathSegList::create(m_contextElem
ent); | 70 RefPtr<SVGPathSegList> svgPathSegList = SVGPathSegList::create(m_contextElem
ent); |
71 svgPathSegList->setValueAsString(value, IGNORE_EXCEPTION); | 71 svgPathSegList->setValueAsString(value, IGNORE_EXCEPTION); |
72 return svgPathSegList; | 72 return svgPathSegList; |
73 } | 73 } |
74 | 74 |
75 const SVGPathByteStream* SVGPathSegList::byteStream() const | 75 const SVGPathByteStream* SVGPathSegList::byteStream() const |
76 { | 76 { |
77 if (!m_byteStream) { | 77 if (!m_byteStream) { |
78 m_byteStream = SVGPathByteStream::create(); | 78 m_byteStream = SVGPathByteStream::create(); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 | 152 |
153 void SVGPathSegList::setValueAsString(const String& string, ExceptionState& exce
ptionState) | 153 void SVGPathSegList::setValueAsString(const String& string, ExceptionState& exce
ptionState) |
154 { | 154 { |
155 invalidateList(); | 155 invalidateList(); |
156 if (!m_byteStream) | 156 if (!m_byteStream) |
157 m_byteStream = SVGPathByteStream::create(); | 157 m_byteStream = SVGPathByteStream::create(); |
158 if (!buildSVGPathByteStreamFromString(string, m_byteStream.get(), UnalteredP
arsing)) | 158 if (!buildSVGPathByteStreamFromString(string, m_byteStream.get(), UnalteredP
arsing)) |
159 exceptionState.throwDOMException(SyntaxError, "Problem parsing path \""
+ string + "\""); | 159 exceptionState.throwDOMException(SyntaxError, "Problem parsing path \""
+ string + "\""); |
160 } | 160 } |
161 | 161 |
162 void SVGPathSegList::add(PassRefPtr<NewSVGPropertyBase> other, SVGElement*) | 162 void SVGPathSegList::add(PassRefPtr<SVGPropertyBase> other, SVGElement*) |
163 { | 163 { |
164 RefPtr<SVGPathSegList> otherList = toSVGPathSegList(other); | 164 RefPtr<SVGPathSegList> otherList = toSVGPathSegList(other); |
165 if (length() != otherList->length()) | 165 if (length() != otherList->length()) |
166 return; | 166 return; |
167 | 167 |
168 byteStream(); // create |m_byteStream| if not exist. | 168 byteStream(); // create |m_byteStream| if not exist. |
169 addToSVGPathByteStream(m_byteStream.get(), otherList->byteStream()); | 169 addToSVGPathByteStream(m_byteStream.get(), otherList->byteStream()); |
170 invalidateList(); | 170 invalidateList(); |
171 } | 171 } |
172 | 172 |
173 void SVGPathSegList::calculateAnimatedValue(SVGAnimationElement* animationElemen
t, float percentage, unsigned repeatCount, PassRefPtr<NewSVGPropertyBase> fromVa
lue, PassRefPtr<NewSVGPropertyBase> toValue, PassRefPtr<NewSVGPropertyBase> toAt
EndOfDurationValue, SVGElement*) | 173 void SVGPathSegList::calculateAnimatedValue(SVGAnimationElement* animationElemen
t, float percentage, unsigned repeatCount, PassRefPtr<SVGPropertyBase> fromValue
, PassRefPtr<SVGPropertyBase> toValue, PassRefPtr<SVGPropertyBase> toAtEndOfDura
tionValue, SVGElement*) |
174 { | 174 { |
175 invalidateList(); | 175 invalidateList(); |
176 | 176 |
177 ASSERT(animationElement); | 177 ASSERT(animationElement); |
178 bool isToAnimation = animationElement->animationMode() == ToAnimation; | 178 bool isToAnimation = animationElement->animationMode() == ToAnimation; |
179 | 179 |
180 const RefPtr<SVGPathSegList> from = toSVGPathSegList(fromValue); | 180 const RefPtr<SVGPathSegList> from = toSVGPathSegList(fromValue); |
181 const RefPtr<SVGPathSegList> to = toSVGPathSegList(toValue); | 181 const RefPtr<SVGPathSegList> to = toSVGPathSegList(toValue); |
182 const RefPtr<SVGPathSegList> toAtEndOfDuration = toSVGPathSegList(toAtEndOfD
urationValue); | 182 const RefPtr<SVGPathSegList> toAtEndOfDuration = toSVGPathSegList(toAtEndOfD
urationValue); |
183 | 183 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 if (!fromStream->size() || (animationElement->isAdditive() && !isToAnimation
)) | 223 if (!fromStream->size() || (animationElement->isAdditive() && !isToAnimation
)) |
224 addToSVGPathByteStream(m_byteStream.get(), lastAnimatedStream.get()); | 224 addToSVGPathByteStream(m_byteStream.get(), lastAnimatedStream.get()); |
225 | 225 |
226 // Handle accumulate='sum'. | 226 // Handle accumulate='sum'. |
227 if (animationElement->isAccumulated() && repeatCount) { | 227 if (animationElement->isAccumulated() && repeatCount) { |
228 const SVGPathByteStream* toAtEndOfDurationStream = toAtEndOfDuration->by
teStream(); | 228 const SVGPathByteStream* toAtEndOfDurationStream = toAtEndOfDuration->by
teStream(); |
229 addToSVGPathByteStream(m_byteStream.get(), toAtEndOfDurationStream, repe
atCount); | 229 addToSVGPathByteStream(m_byteStream.get(), toAtEndOfDurationStream, repe
atCount); |
230 } | 230 } |
231 } | 231 } |
232 | 232 |
233 float SVGPathSegList::calculateDistance(PassRefPtr<NewSVGPropertyBase> to, SVGEl
ement*) | 233 float SVGPathSegList::calculateDistance(PassRefPtr<SVGPropertyBase> to, SVGEleme
nt*) |
234 { | 234 { |
235 // FIXME: Support paced animations. | 235 // FIXME: Support paced animations. |
236 return -1; | 236 return -1; |
237 } | 237 } |
238 | 238 |
239 } | 239 } |
OLD | NEW |