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 11namespace blink { 12 13class LengthStyleInterpolation : public StyleInterpolation { 14public: 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 26private: 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