1d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)// found in the LICENSE file.
4d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
5d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#ifndef DefaultStyleInterpolation_h
6d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#define DefaultStyleInterpolation_h
7d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
8c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#include "core/animation/StyleInterpolation.h"
9d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#include "core/css/resolver/StyleBuilder.h"
10d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
11c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
12d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
13d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)class DefaultStyleInterpolation : public StyleInterpolation {
14d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)public:
15d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    static PassRefPtrWillBeRawPtr<DefaultStyleInterpolation> create(CSSValue* start, CSSValue* end, CSSPropertyID id)
16d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    {
17d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        return adoptRefWillBeNoop(new DefaultStyleInterpolation(start, end, id));
18d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    }
19d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
20d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    virtual void apply(StyleResolverState& state) const
21d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    {
22d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        StyleBuilder::applyProperty(m_id, state, toInterpolableBool(m_cachedValue.get())->value() ? m_endCSSValue.get() : m_startCSSValue.get());
23d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    }
24d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
25d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    virtual void trace(Visitor* visitor) OVERRIDE
26d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    {
27d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        StyleInterpolation::trace(visitor);
28d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        visitor->trace(m_startCSSValue);
29d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        visitor->trace(m_endCSSValue);
30d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    }
31d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
32d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)private:
33d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    DefaultStyleInterpolation(CSSValue* start, CSSValue* end, CSSPropertyID id)
34d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        : StyleInterpolation(InterpolableBool::create(false), InterpolableBool::create(true), id)
35d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        , m_startCSSValue(start)
36d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)        , m_endCSSValue(end)
37d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    {
38d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    }
39d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
40d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    RefPtrWillBeMember<CSSValue> m_startCSSValue;
41d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)    RefPtrWillBeMember<CSSValue> m_endCSSValue;
42d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)};
43d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
44d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)}
45d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)
46d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles)#endif
47