blob: 8b76f16f21ef03e5b8c08a0a3e90e4588d289008 [file] [log] [blame]
/*
* Copyright (C) Research In Motion Limited 2011. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#include "third_party/blink/renderer/core/svg/svg_animated_number_optional_number.h"
namespace blink {
SVGAnimatedNumberOptionalNumber::SVGAnimatedNumberOptionalNumber(
SVGElement* context_element,
const QualifiedName& attribute_name,
float initial_value)
: SVGAnimatedPropertyCommon<SVGNumberOptionalNumber>(
context_element,
attribute_name,
SVGNumberOptionalNumber::Create(SVGNumber::Create(initial_value),
SVGNumber::Create(initial_value)),
CSSPropertyInvalid,
static_cast<unsigned>(initial_value)),
first_number_(SVGAnimatedNumber::Create(context_element,
attribute_name,
BaseValue()->FirstNumber())),
second_number_(SVGAnimatedNumber::Create(context_element,
attribute_name,
BaseValue()->SecondNumber())) {
first_number_->SetParentOptionalNumber(this);
second_number_->SetParentOptionalNumber(this);
}
void SVGAnimatedNumberOptionalNumber::Trace(blink::Visitor* visitor) {
visitor->Trace(first_number_);
visitor->Trace(second_number_);
SVGAnimatedPropertyCommon<SVGNumberOptionalNumber>::Trace(visitor);
}
void SVGAnimatedNumberOptionalNumber::SetAnimatedValue(SVGPropertyBase* value) {
SVGAnimatedPropertyCommon<SVGNumberOptionalNumber>::SetAnimatedValue(value);
first_number_->SetAnimatedValue(CurrentValue()->FirstNumber());
second_number_->SetAnimatedValue(CurrentValue()->SecondNumber());
}
void SVGAnimatedNumberOptionalNumber::AnimationEnded() {
SVGAnimatedPropertyCommon<SVGNumberOptionalNumber>::AnimationEnded();
first_number_->AnimationEnded();
second_number_->AnimationEnded();
}
bool SVGAnimatedNumberOptionalNumber::NeedsSynchronizeAttribute() const {
return first_number_->NeedsSynchronizeAttribute() ||
second_number_->NeedsSynchronizeAttribute();
}
} // namespace blink