RefPtr<CSSCrossfadeValue> CSSCrossfadeValue::blend(const CSSCrossfadeValue& from, double progress) const { ASSERT(equalInputImages(from)); if (!m_cachedToImage || !m_cachedFromImage) return nullptr; auto fromImageValue = CSSImageValue::create(*m_cachedFromImage); auto toImageValue = CSSImageValue::create(*m_cachedToImage); double fromPercentage = from.m_percentageValue->getDoubleValue(); if (from.m_percentageValue->isPercentage()) fromPercentage /= 100.0; double toPercentage = m_percentageValue->getDoubleValue(); if (m_percentageValue->isPercentage()) toPercentage /= 100.0; auto percentageValue = CSSPrimitiveValue::create(blendFunc(fromPercentage, toPercentage, progress), CSSPrimitiveValue::CSS_NUMBER); return CSSCrossfadeValue::create(WTFMove(fromImageValue), WTFMove(toImageValue), WTFMove(percentageValue), from.isPrefixed() && isPrefixed()); }
PassRefPtr<CSSCrossfadeValue> CSSCrossfadeValue::blend(const CSSCrossfadeValue& from, double progress) const { ASSERT(equalInputImages(from)); RefPtr<StyleCachedImage> toStyledImage = StyleCachedImage::create(m_cachedToImage.get()); RefPtr<StyleCachedImage> fromStyledImage = StyleCachedImage::create(m_cachedFromImage.get()); auto fromImageValue = CSSImageValue::create(m_cachedFromImage->url(), fromStyledImage.get()); auto toImageValue = CSSImageValue::create(m_cachedToImage->url(), toStyledImage.get()); RefPtr<CSSCrossfadeValue> crossfadeValue = CSSCrossfadeValue::create(WTF::move(fromImageValue), WTF::move(toImageValue)); double fromPercentage = from.m_percentageValue->getDoubleValue(); if (from.m_percentageValue->isPercentage()) fromPercentage /= 100.0; double toPercentage = m_percentageValue->getDoubleValue(); if (m_percentageValue->isPercentage()) toPercentage /= 100.0; crossfadeValue->setPercentage(CSSPrimitiveValue::create(blendFunc(fromPercentage, toPercentage, progress), CSSPrimitiveValue::CSS_NUMBER)); return crossfadeValue.release(); }
bool CSSCrossfadeValue::equals(const CSSCrossfadeValue& other) const { return equalInputImages(other) && compareCSSValue(m_percentageValue, other.m_percentageValue); }
bool CSSFilterImageValue::equals(const CSSFilterImageValue& other) const { return equalInputImages(other) && compareCSSValuePtr(m_filterValue, other.m_filterValue); }