| // Copyright 2015 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. |
| |
| #include "config.h" |
| #include "core/animation/ImageStyleInterpolation.h" |
| |
| #include "core/css/resolver/StyleBuilder.h" |
| |
| |
| namespace blink { |
| |
| bool ImageStyleInterpolation::canCreateFrom(const CSSValue& value) |
| { |
| return value.isImageValue() || value.isGradientValue(); |
| } |
| |
| void ImageStyleInterpolation::apply(StyleResolverState& state) const |
| { |
| double cachedValue = toInterpolableNumber(m_cachedValue.get())->value(); |
| if (cachedValue <= 0.0) { |
| StyleBuilder::applyProperty(m_id, state, m_initialImage.get()); |
| return; |
| } |
| if (cachedValue >= 1.0) { |
| StyleBuilder::applyProperty(m_id, state, m_finalImage.get()); |
| return; |
| } |
| RefPtrWillBeRawPtr<CSSCrossfadeValue> crossfadeValue = CSSCrossfadeValue::create(m_initialImage, m_finalImage, CSSPrimitiveValue::create(cachedValue, CSSPrimitiveValue::UnitType::Number)); |
| |
| StyleBuilder::applyProperty(m_id, state, crossfadeValue.get()); |
| } |
| |
| } // namespace blink |