Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / animation / LengthStyleInterpolation.h
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
11 namespace blink {
12
13 class LengthStyleInterpolation : public StyleInterpolation {
14 public:
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
26 private:
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