void SVGPointList::calculateAnimatedValue(SVGAnimationElement* animationElement, float percentage, unsigned repeatCount, RawPtr<SVGPropertyBase> fromValue, RawPtr<SVGPropertyBase> toValue, RawPtr<SVGPropertyBase> toAtEndOfDurationValue, SVGElement* contextElement) { RawPtr<SVGPointList> fromList = toSVGPointList(fromValue); RawPtr<SVGPointList> toList = toSVGPointList(toValue); RawPtr<SVGPointList> toAtEndOfDurationList = toSVGPointList(toAtEndOfDurationValue); size_t fromPointListSize = fromList->length(); size_t toPointListSize = toList->length(); size_t toAtEndOfDurationListSize = toAtEndOfDurationList->length(); if (!adjustFromToListValues(fromList, toList, percentage, animationElement->getAnimationMode())) return; for (size_t i = 0; i < toPointListSize; ++i) { float animatedX = at(i)->x(); float animatedY = at(i)->y(); FloatPoint effectiveFrom; if (fromPointListSize) effectiveFrom = fromList->at(i)->value(); FloatPoint effectiveTo = toList->at(i)->value(); FloatPoint effectiveToAtEnd; if (i < toAtEndOfDurationListSize) effectiveToAtEnd = toAtEndOfDurationList->at(i)->value(); animationElement->animateAdditiveNumber(percentage, repeatCount, effectiveFrom.x(), effectiveTo.x(), effectiveToAtEnd.x(), animatedX); animationElement->animateAdditiveNumber(percentage, repeatCount, effectiveFrom.y(), effectiveTo.y(), effectiveToAtEnd.y(), animatedY); at(i)->setValue(FloatPoint(animatedX, animatedY)); } }
void SVGPointList::add(RawPtr<SVGPropertyBase> other, SVGElement* contextElement) { RawPtr<SVGPointList> otherList = toSVGPointList(other); if (length() != otherList->length()) return; for (size_t i = 0; i < length(); ++i) at(i)->setValue(at(i)->value() + otherList->at(i)->value()); }
Element* TreeScope::adjustedFocusedElement() const { Document& document = rootNode().document(); Element* element = document.focusedElement(); if (!element && document.page()) element = document.page()->focusController().focusedFrameOwnerElement(*document.frame()); if (!element) return 0; RawPtr<EventPath> eventPath = new EventPath(*element); for (size_t i = 0; i < eventPath->size(); ++i) { if (eventPath->at(i).node() == rootNode()) { // eventPath->at(i).target() is one of the followings: // - InsertionPoint // - shadow host // - Document::focusedElement() // So, it's safe to do toElement(). return toElement(eventPath->at(i).target()->toNode()); } } return 0; }