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 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
     43