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