OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org> |
3 * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org> |
4 * | 4 * |
5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
9 * | 9 * |
10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 | 67 |
68 return builder.toString(); | 68 return builder.toString(); |
69 } | 69 } |
70 | 70 |
71 template <typename CharType> | 71 template <typename CharType> |
72 SVGParsingError SVGLengthList::parseInternal(const CharType*& ptr, const CharTyp
e* end) | 72 SVGParsingError SVGLengthList::parseInternal(const CharType*& ptr, const CharTyp
e* end) |
73 { | 73 { |
74 const CharType* listStart = ptr; | 74 const CharType* listStart = ptr; |
75 while (ptr < end) { | 75 while (ptr < end) { |
76 const CharType* start = ptr; | 76 const CharType* start = ptr; |
| 77 // TODO(shanmuga.m): Enable calc for SVGLengthList |
77 while (ptr < end && *ptr != ',' && !isHTMLSpace<CharType>(*ptr)) | 78 while (ptr < end && *ptr != ',' && !isHTMLSpace<CharType>(*ptr)) |
78 ptr++; | 79 ptr++; |
79 if (ptr == start) | 80 if (ptr == start) |
80 break; | 81 break; |
81 String valueString(start, ptr - start); | 82 String valueString(start, ptr - start); |
82 if (valueString.isEmpty()) | 83 if (valueString.isEmpty()) |
83 break; | 84 break; |
84 | 85 |
85 SVGLength* length = SVGLength::create(m_mode); | 86 SVGLength* length = SVGLength::create(m_mode); |
86 SVGParsingError lengthParseStatus = length->setValueAsString(valueString
); | 87 SVGParsingError lengthParseStatus = length->setValueAsString(valueString
); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 ASSERT(m_mode == SVGLength::lengthModeForAnimatedLengthAttribute(animationEl
ement->attributeName())); | 137 ASSERT(m_mode == SVGLength::lengthModeForAnimatedLengthAttribute(animationEl
ement->attributeName())); |
137 | 138 |
138 size_t fromLengthListSize = fromList->length(); | 139 size_t fromLengthListSize = fromList->length(); |
139 size_t toLengthListSize = toList->length(); | 140 size_t toLengthListSize = toList->length(); |
140 size_t toAtEndOfDurationListSize = toAtEndOfDurationList->length(); | 141 size_t toAtEndOfDurationListSize = toAtEndOfDurationList->length(); |
141 | 142 |
142 if (!adjustFromToListValues(fromList, toList, percentage, animationElement->
getAnimationMode())) | 143 if (!adjustFromToListValues(fromList, toList, percentage, animationElement->
getAnimationMode())) |
143 return; | 144 return; |
144 | 145 |
145 for (size_t i = 0; i < toLengthListSize; ++i) { | 146 for (size_t i = 0; i < toLengthListSize; ++i) { |
| 147 // TODO(shanmuga.m): Support calc for SVGLengthList animation |
146 float animatedNumber = at(i)->value(lengthContext); | 148 float animatedNumber = at(i)->value(lengthContext); |
147 CSSPrimitiveValue::UnitType unitType = toList->at(i)->typeWithCalcResolv
ed(); | 149 CSSPrimitiveValue::UnitType unitType = toList->at(i)->typeWithCalcResolv
ed(); |
148 float effectiveFrom = 0; | 150 float effectiveFrom = 0; |
149 if (fromLengthListSize) { | 151 if (fromLengthListSize) { |
150 if (percentage < 0.5) | 152 if (percentage < 0.5) |
151 unitType = fromList->at(i)->typeWithCalcResolved(); | 153 unitType = fromList->at(i)->typeWithCalcResolved(); |
152 effectiveFrom = fromList->at(i)->value(lengthContext); | 154 effectiveFrom = fromList->at(i)->value(lengthContext); |
153 } | 155 } |
154 float effectiveTo = toList->at(i)->value(lengthContext); | 156 float effectiveTo = toList->at(i)->value(lengthContext); |
155 float effectiveToAtEnd = i < toAtEndOfDurationListSize ? toAtEndOfDurati
onList->at(i)->value(lengthContext) : 0; | 157 float effectiveToAtEnd = i < toAtEndOfDurationListSize ? toAtEndOfDurati
onList->at(i)->value(lengthContext) : 0; |
156 | 158 |
157 animationElement->animateAdditiveNumber(percentage, repeatCount, effecti
veFrom, effectiveTo, effectiveToAtEnd, animatedNumber); | 159 animationElement->animateAdditiveNumber(percentage, repeatCount, effecti
veFrom, effectiveTo, effectiveToAtEnd, animatedNumber); |
158 at(i)->setUnitType(unitType); | 160 at(i)->setUnitType(unitType); |
159 at(i)->setValue(animatedNumber, lengthContext); | 161 at(i)->setValue(animatedNumber, lengthContext); |
160 } | 162 } |
161 } | 163 } |
162 | 164 |
163 float SVGLengthList::calculateDistance(SVGPropertyBase* to, SVGElement*) | 165 float SVGLengthList::calculateDistance(SVGPropertyBase* to, SVGElement*) |
164 { | 166 { |
165 // FIXME: Distance calculation is not possible for SVGLengthList right now.
We need the distance for every single value. | 167 // FIXME: Distance calculation is not possible for SVGLengthList right now.
We need the distance for every single value. |
166 return -1; | 168 return -1; |
167 } | 169 } |
168 } // namespace blink | 170 } // namespace blink |
OLD | NEW |