PassOwnPtr<InterpolableValue> DoubleStyleInterpolation::doubleToInterpolableValue(const CSSValue& value) { ASSERT(canCreateFrom(value)); const CSSPrimitiveValue& primitive = toCSSPrimitiveValue(value); if (primitive.isNumber()) return InterpolableNumber::create(primitive.getDoubleValue()); if (primitive.isAngle()) return InterpolableNumber::create(primitive.computeDegrees()); ASSERT_NOT_REACHED(); return nullptr; }
PassRefPtrWillBeRawPtr<AnimatableLength> AnimatableLength::create(CSSValue* value) { ASSERT(canCreateFrom(value)); if (value->isPrimitiveValue()) { CSSPrimitiveValue* primitiveValue = WebCore::toCSSPrimitiveValue(value); const CSSCalcValue* calcValue = primitiveValue->cssCalcValue(); if (calcValue) return create(calcValue->expressionNode(), primitiveValue); CSSPrimitiveValue::LengthUnitType unitType; bool isPrimitiveLength = CSSPrimitiveValue::unitTypeToLengthUnitType(primitiveValue->primitiveType(), unitType); ASSERT_UNUSED(isPrimitiveLength, isPrimitiveLength); const double scale = CSSPrimitiveValue::conversionToCanonicalUnitsScaleFactor(primitiveValue->primitiveType()); return create(primitiveValue->getDoubleValue() * scale, unitType, primitiveValue); } if (value->isCalcValue()) return create(toCSSCalcValue(value)->expressionNode()); ASSERT_NOT_REACHED(); return nullptr; }
PassRefPtrWillBeRawPtr<ColorStyleInterpolation> ColorStyleInterpolation::maybeCreateFromColor(const CSSValue& start, const CSSValue& end, CSSPropertyID id) { if (canCreateFrom(start) && !toCSSPrimitiveValue(start).colorIsDerivedFromElement() && canCreateFrom(end) && !toCSSPrimitiveValue(end).colorIsDerivedFromElement()) return adoptRefWillBeNoop(new ColorStyleInterpolation(colorToInterpolableValue(start), colorToInterpolableValue(end), id)); return nullptr; }
PassOwnPtr<InterpolableValue> DoubleStyleInterpolation::toInterpolableValue(const CSSValue& value, CSSPropertyID property) { ASSERT(canCreateFrom(value)); return doubleToInterpolableValue(value); }
PassOwnPtrWillBeRawPtr<InterpolableValue> DoubleStyleInterpolation::doubleToInterpolableValue(const CSSValue& value) { ASSERT(canCreateFrom(value)); const CSSPrimitiveValue& primitive = toCSSPrimitiveValue(value); return InterpolableNumber::create(primitive.getDoubleValue()); }