1// Copyright 2014 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.
4
5#ifndef LengthStyleInterpolation_h
6#define LengthStyleInterpolation_h
7
8#include "core/animation/StyleInterpolation.h"
9#include "platform/Length.h"
10
11namespace blink {
12
13class LengthStyleInterpolation : public StyleInterpolation {
14public:
15    static PassRefPtrWillBeRawPtr<LengthStyleInterpolation> create(CSSValue* start, CSSValue* end, CSSPropertyID id,  ValueRange range)
16    {
17        return adoptRefWillBeNoop(new LengthStyleInterpolation(lengthToInterpolableValue(start), lengthToInterpolableValue(end), id, range));
18    }
19
20    static bool canCreateFrom(const CSSValue&);
21
22    virtual void apply(StyleResolverState&) const OVERRIDE;
23
24    virtual void trace(Visitor*) OVERRIDE;
25
26private:
27    LengthStyleInterpolation(PassOwnPtrWillBeRawPtr<InterpolableValue> start, PassOwnPtrWillBeRawPtr<InterpolableValue> end, CSSPropertyID id,  ValueRange range)
28        : StyleInterpolation(start, end, id)
29        , m_range(range)
30    { }
31
32    static PassOwnPtrWillBeRawPtr<InterpolableValue> lengthToInterpolableValue(CSSValue*);
33    static PassRefPtrWillBeRawPtr<CSSValue> interpolableValueToLength(InterpolableValue*, ValueRange);
34
35    ValueRange m_range;
36
37    friend class AnimationLengthStyleInterpolationTest;
38};
39
40}
41
42#endif
43