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 DeferredLegacyStyleInterpolation_h
6#define DeferredLegacyStyleInterpolation_h
7
8#include "core/animation/StyleInterpolation.h"
9#include "core/css/CSSValue.h"
10
11namespace blink {
12
13class CSSBasicShape;
14class CSSImageValue;
15class CSSPrimitiveValue;
16class CSSShadowValue;
17class CSSSVGDocumentValue;
18class CSSValueList;
19
20class DeferredLegacyStyleInterpolation : public StyleInterpolation {
21public:
22    static PassRefPtrWillBeRawPtr<DeferredLegacyStyleInterpolation> create(PassRefPtrWillBeRawPtr<CSSValue> start, PassRefPtrWillBeRawPtr<CSSValue> end, CSSPropertyID id)
23    {
24        return adoptRefWillBeNoop(new DeferredLegacyStyleInterpolation(start, end, id));
25    }
26
27    virtual void apply(StyleResolverState&) const OVERRIDE;
28
29    virtual void trace(Visitor*) OVERRIDE;
30
31    static bool interpolationRequiresStyleResolve(const CSSValue&);
32    static bool interpolationRequiresStyleResolve(const CSSPrimitiveValue&);
33    static bool interpolationRequiresStyleResolve(const CSSImageValue&);
34    static bool interpolationRequiresStyleResolve(const CSSShadowValue&);
35    static bool interpolationRequiresStyleResolve(const CSSSVGDocumentValue&);
36    static bool interpolationRequiresStyleResolve(const CSSValueList&);
37    static bool interpolationRequiresStyleResolve(const CSSBasicShape&);
38
39private:
40    DeferredLegacyStyleInterpolation(PassRefPtrWillBeRawPtr<CSSValue> start, PassRefPtrWillBeRawPtr<CSSValue> end, CSSPropertyID id)
41        : StyleInterpolation(InterpolableNumber::create(0), InterpolableNumber::create(1), id)
42        , m_startCSSValue(start)
43        , m_endCSSValue(end)
44    {
45    }
46
47    RefPtrWillBeMember<CSSValue> m_startCSSValue;
48    RefPtrWillBeMember<CSSValue> m_endCSSValue;
49};
50
51}
52
53#endif
54