Home | History | Annotate | Download | only in animation
      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 StyleInterpolation_h
      6 #define StyleInterpolation_h
      7 
      8 #include "core/CSSPropertyNames.h"
      9 #include "core/animation/Interpolation.h"
     10 
     11 namespace blink {
     12 
     13 class StyleResolverState;
     14 
     15 class StyleInterpolation : public Interpolation {
     16 public:
     17     // 1) convert m_cachedValue into an X
     18     // 2) shove X into StyleResolverState
     19     // X can be:
     20     // (1) a CSSValue (and applied via StyleBuilder::applyProperty)
     21     // (2) an AnimatableValue (and applied via // AnimatedStyleBuilder::applyProperty)
     22     // (3) a custom value that is inserted directly into the StyleResolverState.
     23     virtual void apply(StyleResolverState&) const = 0;
     24 
     25     virtual bool isStyleInterpolation() const OVERRIDE FINAL { return true; }
     26 
     27     CSSPropertyID id() const { return m_id; }
     28 
     29     virtual void trace(Visitor* visitor) OVERRIDE
     30     {
     31         Interpolation::trace(visitor);
     32     }
     33 
     34 protected:
     35     CSSPropertyID m_id;
     36 
     37     StyleInterpolation(PassOwnPtrWillBeRawPtr<InterpolableValue> start, PassOwnPtrWillBeRawPtr<InterpolableValue> end, CSSPropertyID id)
     38         : Interpolation(start, end)
     39         , m_id(id)
     40     {
     41     }
     42 };
     43 
     44 DEFINE_TYPE_CASTS(StyleInterpolation, Interpolation, value, value->isStyleInterpolation(), value.isStyleInterpolation());
     45 
     46 }
     47 
     48 #endif
     49