blob: 5e5205b5a0e82ba58cdbac875e98b914255c1b45 [file] [log] [blame]
// 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.
#ifndef CSSImageInterpolationType_h
#define CSSImageInterpolationType_h
#include "core/animation/CSSInterpolationType.h"
namespace blink {
class StyleImage;
class CSSImageInterpolationType : public CSSInterpolationType {
public:
CSSImageInterpolationType(PropertyHandle property)
: CSSInterpolationType(property) {}
InterpolationValue maybeConvertStandardPropertyUnderlyingValue(
const StyleResolverState&) const final;
void composite(UnderlyingValueOwner&,
double underlyingFraction,
const InterpolationValue&,
double interpolationFraction) const final;
void applyStandardPropertyValue(const InterpolableValue&,
const NonInterpolableValue*,
StyleResolverState&) const final;
static InterpolationValue maybeConvertCSSValue(const CSSValue&,
bool acceptGradients);
static InterpolationValue maybeConvertStyleImage(const StyleImage&,
bool acceptGradients);
static InterpolationValue maybeConvertStyleImage(const StyleImage* image,
bool acceptGradients) {
return image ? maybeConvertStyleImage(*image, acceptGradients) : nullptr;
}
static PairwiseInterpolationValue staticMergeSingleConversions(
InterpolationValue&& start,
InterpolationValue&& end);
static CSSValue* createCSSValue(const InterpolableValue&,
const NonInterpolableValue*);
static StyleImage* resolveStyleImage(CSSPropertyID,
const InterpolableValue&,
const NonInterpolableValue*,
StyleResolverState&);
static bool equalNonInterpolableValues(const NonInterpolableValue*,
const NonInterpolableValue*);
private:
InterpolationValue maybeConvertNeutral(const InterpolationValue& underlying,
ConversionCheckers&) const final;
InterpolationValue maybeConvertInitial(const StyleResolverState&,
ConversionCheckers&) const final;
InterpolationValue maybeConvertInherit(const StyleResolverState&,
ConversionCheckers&) const final;
InterpolationValue maybeConvertValue(const CSSValue&,
const StyleResolverState&,
ConversionCheckers&) const final;
PairwiseInterpolationValue maybeMergeSingles(
InterpolationValue&& start,
InterpolationValue&& end) const final {
return staticMergeSingleConversions(std::move(start), std::move(end));
}
};
} // namespace blink
#endif // CSSImageInterpolationType_h