diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/animation/interpolation/StyleInterpolation.h')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/animation/interpolation/StyleInterpolation.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/chromium/third_party/WebKit/Source/core/animation/interpolation/StyleInterpolation.h b/chromium/third_party/WebKit/Source/core/animation/interpolation/StyleInterpolation.h new file mode 100644 index 00000000000..5c277439ffd --- /dev/null +++ b/chromium/third_party/WebKit/Source/core/animation/interpolation/StyleInterpolation.h @@ -0,0 +1,48 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef StyleInterpolation_h +#define StyleInterpolation_h + +#include "core/CSSPropertyNames.h" +#include "core/animation/interpolation/Interpolation.h" + +namespace WebCore { + +class StyleResolverState; + +class StyleInterpolation : public Interpolation { +public: + // 1) convert m_cachedValue into an X + // 2) shove X into StyleResolverState + // X can be: + // (1) a CSSValue (and applied via StyleBuilder::applyProperty) + // (2) an AnimatableValue (and applied via // AnimatedStyleBuilder::applyProperty) + // (3) a custom value that is inserted directly into the StyleResolverState. + virtual void apply(StyleResolverState&) const = 0; + + virtual bool isStyleInterpolation() const OVERRIDE FINAL { return true; } + + CSSPropertyID id() const { return m_id; } + + virtual void trace(Visitor* visitor) OVERRIDE + { + Interpolation::trace(visitor); + } + +protected: + CSSPropertyID m_id; + + StyleInterpolation(PassOwnPtrWillBeRawPtr<InterpolableValue> start, PassOwnPtrWillBeRawPtr<InterpolableValue> end, CSSPropertyID id) + : Interpolation(start, end) + , m_id(id) + { + } +}; + +DEFINE_TYPE_CASTS(StyleInterpolation, Interpolation, value, value->isStyleInterpolation(), value.isStyleInterpolation()); + +} + +#endif |