blob: e732c0d66c2c2acba8381e2163eca5967bd3d7e5 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "config.h"
#include "core/animation/RectSVGInterpolation.h"
#include "wtf/StdLibExtras.h"
namespace blink {
PassOwnPtr<InterpolableValue> RectSVGInterpolation::toInterpolableValue(SVGPropertyBase* value)
{
RefPtrWillBeRawPtr<SVGRect> rect = toSVGRect(value);
float element[] = { rect->x(), rect->y(), rect->width(), rect->height() };
OwnPtr<InterpolableList> result = InterpolableList::create(WTF_ARRAY_LENGTH(element));
for (size_t i = 0; i < WTF_ARRAY_LENGTH(element); i++) {
result->set(i, InterpolableNumber::create(element[i]));
}
return result.release();
}
PassRefPtrWillBeRawPtr<SVGRect> RectSVGInterpolation::fromInterpolableValue(const InterpolableValue& value)
{
const InterpolableList& list = toInterpolableList(value);
RefPtrWillBeRawPtr<SVGRect> result = SVGRect::create();
result->setX(toInterpolableNumber(list.get(0))->value());
result->setY(toInterpolableNumber(list.get(1))->value());
result->setWidth(toInterpolableNumber(list.get(2))->value());
result->setHeight(toInterpolableNumber(list.get(3))->value());
return result;
}
}