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 DefaultStyleInterpolation_h 6#define DefaultStyleInterpolation_h 7 8#include "core/animation/StyleInterpolation.h" 9#include "core/css/resolver/StyleBuilder.h" 10 11namespace blink { 12 13class DefaultStyleInterpolation : public StyleInterpolation { 14public: 15 static PassRefPtrWillBeRawPtr<DefaultStyleInterpolation> create(CSSValue* start, CSSValue* end, CSSPropertyID id) 16 { 17 return adoptRefWillBeNoop(new DefaultStyleInterpolation(start, end, id)); 18 } 19 20 virtual void apply(StyleResolverState& state) const 21 { 22 StyleBuilder::applyProperty(m_id, state, toInterpolableBool(m_cachedValue.get())->value() ? m_endCSSValue.get() : m_startCSSValue.get()); 23 } 24 25 virtual void trace(Visitor* visitor) OVERRIDE 26 { 27 StyleInterpolation::trace(visitor); 28 visitor->trace(m_startCSSValue); 29 visitor->trace(m_endCSSValue); 30 } 31 32private: 33 DefaultStyleInterpolation(CSSValue* start, CSSValue* end, CSSPropertyID id) 34 : StyleInterpolation(InterpolableBool::create(false), InterpolableBool::create(true), id) 35 , m_startCSSValue(start) 36 , m_endCSSValue(end) 37 { 38 } 39 40 RefPtrWillBeMember<CSSValue> m_startCSSValue; 41 RefPtrWillBeMember<CSSValue> m_endCSSValue; 42}; 43 44} 45 46#endif 47