| Index: Source/core/css/resolver/TransformBuilder.cpp
|
| diff --git a/Source/core/css/resolver/TransformBuilder.cpp b/Source/core/css/resolver/TransformBuilder.cpp
|
| index f6fdbc11e8c510e189735d158518cbf936beb429..d6786476bf4f35c00aba8e6d0d8fe16feeae2ef2 100644
|
| --- a/Source/core/css/resolver/TransformBuilder.cpp
|
| +++ b/Source/core/css/resolver/TransformBuilder.cpp
|
| @@ -43,10 +43,9 @@
|
|
|
| namespace blink {
|
|
|
| -static Length convertToFloatLength(CSSPrimitiveValue* primitiveValue, const CSSToLengthConversionData& conversionData)
|
| +static Length convertToFloatLength(CSSPrimitiveValue& primitiveValue, const CSSToLengthConversionData& conversionData)
|
| {
|
| - ASSERT(primitiveValue);
|
| - return primitiveValue->convertToLength(conversionData);
|
| + return primitiveValue.convertToLength(conversionData);
|
| }
|
|
|
| static TransformOperation::OperationType getTransformOperationType(CSSValueID type)
|
| @@ -90,10 +89,10 @@ void TransformBuilder::createTransformOperations(CSSValue& inValue, const CSSToL
|
|
|
| float zoomFactor = conversionData.zoom();
|
| for (auto& value : toCSSValueList(inValue)) {
|
| - CSSFunctionValue* transformValue = toCSSFunctionValue(value.get());
|
| - TransformOperation::OperationType transformType = getTransformOperationType(transformValue->functionType());
|
| + CSSFunctionValue& transformValue = toCSSFunctionValue(value);
|
| + TransformOperation::OperationType transformType = getTransformOperationType(transformValue.functionType());
|
|
|
| - CSSPrimitiveValue* firstValue = toCSSPrimitiveValue(transformValue->item(0));
|
| + CSSPrimitiveValue& firstValue = toCSSPrimitiveValue(transformValue.item(0));
|
|
|
| switch (transformType) {
|
| case TransformOperation::Scale:
|
| @@ -102,13 +101,13 @@ void TransformBuilder::createTransformOperations(CSSValue& inValue, const CSSToL
|
| double sx = 1.0;
|
| double sy = 1.0;
|
| if (transformType == TransformOperation::ScaleY) {
|
| - sy = firstValue->getDoubleValue();
|
| + sy = firstValue.getDoubleValue();
|
| } else {
|
| - sx = firstValue->getDoubleValue();
|
| + sx = firstValue.getDoubleValue();
|
| if (transformType != TransformOperation::ScaleX) {
|
| - if (transformValue->length() > 1) {
|
| - CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(transformValue->item(1));
|
| - sy = secondValue->getDoubleValue();
|
| + if (transformValue.length() > 1) {
|
| + CSSPrimitiveValue& secondValue = toCSSPrimitiveValue(transformValue.item(1));
|
| + sy = secondValue.getDoubleValue();
|
| } else {
|
| sy = sx;
|
| }
|
| @@ -123,11 +122,11 @@ void TransformBuilder::createTransformOperations(CSSValue& inValue, const CSSToL
|
| double sy = 1.0;
|
| double sz = 1.0;
|
| if (transformType == TransformOperation::ScaleZ) {
|
| - sz = firstValue->getDoubleValue();
|
| + sz = firstValue.getDoubleValue();
|
| } else {
|
| - sx = firstValue->getDoubleValue();
|
| - sy = toCSSPrimitiveValue(transformValue->item(1))->getDoubleValue();
|
| - sz = toCSSPrimitiveValue(transformValue->item(2))->getDoubleValue();
|
| + sx = firstValue.getDoubleValue();
|
| + sy = toCSSPrimitiveValue(transformValue.item(1)).getDoubleValue();
|
| + sz = toCSSPrimitiveValue(transformValue.item(2)).getDoubleValue();
|
| }
|
| outOperations.operations().append(ScaleTransformOperation::create(sx, sy, sz, transformType));
|
| break;
|
| @@ -142,8 +141,8 @@ void TransformBuilder::createTransformOperations(CSSValue& inValue, const CSSToL
|
| else {
|
| tx = convertToFloatLength(firstValue, conversionData);
|
| if (transformType != TransformOperation::TranslateX) {
|
| - if (transformValue->length() > 1) {
|
| - CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(transformValue->item(1));
|
| + if (transformValue.length() > 1) {
|
| + CSSPrimitiveValue& secondValue = toCSSPrimitiveValue(transformValue.item(1));
|
| ty = convertToFloatLength(secondValue, conversionData);
|
| }
|
| }
|
| @@ -158,11 +157,11 @@ void TransformBuilder::createTransformOperations(CSSValue& inValue, const CSSToL
|
| Length ty = Length(0, Fixed);
|
| double tz = 0;
|
| if (transformType == TransformOperation::TranslateZ) {
|
| - tz = firstValue->computeLength<double>(conversionData);
|
| + tz = firstValue.computeLength<double>(conversionData);
|
| } else {
|
| tx = convertToFloatLength(firstValue, conversionData);
|
| - ty = convertToFloatLength(toCSSPrimitiveValue(transformValue->item(1)), conversionData);
|
| - tz = toCSSPrimitiveValue(transformValue->item(2))->computeLength<double>(conversionData);
|
| + ty = convertToFloatLength(toCSSPrimitiveValue(transformValue.item(1)), conversionData);
|
| + tz = toCSSPrimitiveValue(transformValue.item(2)).computeLength<double>(conversionData);
|
| }
|
|
|
| outOperations.operations().append(TranslateTransformOperation::create(tx, ty, tz, transformType));
|
| @@ -171,7 +170,7 @@ void TransformBuilder::createTransformOperations(CSSValue& inValue, const CSSToL
|
| case TransformOperation::RotateX:
|
| case TransformOperation::RotateY:
|
| case TransformOperation::RotateZ: {
|
| - double angle = firstValue->computeDegrees();
|
| + double angle = firstValue.computeDegrees();
|
| double x = transformType == TransformOperation::RotateX;
|
| double y = transformType == TransformOperation::RotateY;
|
| double z = transformType == TransformOperation::RotateZ;
|
| @@ -179,13 +178,13 @@ void TransformBuilder::createTransformOperations(CSSValue& inValue, const CSSToL
|
| break;
|
| }
|
| case TransformOperation::Rotate3D: {
|
| - CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(transformValue->item(1));
|
| - CSSPrimitiveValue* thirdValue = toCSSPrimitiveValue(transformValue->item(2));
|
| - CSSPrimitiveValue* fourthValue = toCSSPrimitiveValue(transformValue->item(3));
|
| - double x = firstValue->getDoubleValue();
|
| - double y = secondValue->getDoubleValue();
|
| - double z = thirdValue->getDoubleValue();
|
| - double angle = fourthValue->computeDegrees();
|
| + CSSPrimitiveValue& secondValue = toCSSPrimitiveValue(transformValue.item(1));
|
| + CSSPrimitiveValue& thirdValue = toCSSPrimitiveValue(transformValue.item(2));
|
| + CSSPrimitiveValue& fourthValue = toCSSPrimitiveValue(transformValue.item(3));
|
| + double x = firstValue.getDoubleValue();
|
| + double y = secondValue.getDoubleValue();
|
| + double z = thirdValue.getDoubleValue();
|
| + double angle = fourthValue.computeDegrees();
|
| outOperations.operations().append(RotateTransformOperation::create(x, y, z, angle, transformType));
|
| break;
|
| }
|
| @@ -194,15 +193,15 @@ void TransformBuilder::createTransformOperations(CSSValue& inValue, const CSSToL
|
| case TransformOperation::SkewY: {
|
| double angleX = 0;
|
| double angleY = 0;
|
| - double angle = firstValue->computeDegrees();
|
| + double angle = firstValue.computeDegrees();
|
| if (transformType == TransformOperation::SkewY)
|
| angleY = angle;
|
| else {
|
| angleX = angle;
|
| if (transformType == TransformOperation::Skew) {
|
| - if (transformValue->length() > 1) {
|
| - CSSPrimitiveValue* secondValue = toCSSPrimitiveValue(transformValue->item(1));
|
| - angleY = secondValue->computeDegrees();
|
| + if (transformValue.length() > 1) {
|
| + CSSPrimitiveValue& secondValue = toCSSPrimitiveValue(transformValue.item(1));
|
| + angleY = secondValue.computeDegrees();
|
| }
|
| }
|
| }
|
| @@ -210,37 +209,37 @@ void TransformBuilder::createTransformOperations(CSSValue& inValue, const CSSToL
|
| break;
|
| }
|
| case TransformOperation::Matrix: {
|
| - double a = firstValue->getDoubleValue();
|
| - double b = toCSSPrimitiveValue(transformValue->item(1))->getDoubleValue();
|
| - double c = toCSSPrimitiveValue(transformValue->item(2))->getDoubleValue();
|
| - double d = toCSSPrimitiveValue(transformValue->item(3))->getDoubleValue();
|
| - double e = zoomFactor * toCSSPrimitiveValue(transformValue->item(4))->getDoubleValue();
|
| - double f = zoomFactor * toCSSPrimitiveValue(transformValue->item(5))->getDoubleValue();
|
| + double a = firstValue.getDoubleValue();
|
| + double b = toCSSPrimitiveValue(transformValue.item(1)).getDoubleValue();
|
| + double c = toCSSPrimitiveValue(transformValue.item(2)).getDoubleValue();
|
| + double d = toCSSPrimitiveValue(transformValue.item(3)).getDoubleValue();
|
| + double e = zoomFactor * toCSSPrimitiveValue(transformValue.item(4)).getDoubleValue();
|
| + double f = zoomFactor * toCSSPrimitiveValue(transformValue.item(5)).getDoubleValue();
|
| outOperations.operations().append(MatrixTransformOperation::create(a, b, c, d, e, f));
|
| break;
|
| }
|
| case TransformOperation::Matrix3D: {
|
| - TransformationMatrix matrix(toCSSPrimitiveValue(transformValue->item(0))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(1))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(2))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(3))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(4))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(5))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(6))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(7))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(8))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(9))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(10))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(11))->getDoubleValue(),
|
| - zoomFactor * toCSSPrimitiveValue(transformValue->item(12))->getDoubleValue(),
|
| - zoomFactor * toCSSPrimitiveValue(transformValue->item(13))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(14))->getDoubleValue(),
|
| - toCSSPrimitiveValue(transformValue->item(15))->getDoubleValue());
|
| + TransformationMatrix matrix(toCSSPrimitiveValue(transformValue.item(0)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(1)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(2)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(3)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(4)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(5)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(6)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(7)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(8)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(9)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(10)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(11)).getDoubleValue(),
|
| + zoomFactor * toCSSPrimitiveValue(transformValue.item(12)).getDoubleValue(),
|
| + zoomFactor * toCSSPrimitiveValue(transformValue.item(13)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(14)).getDoubleValue(),
|
| + toCSSPrimitiveValue(transformValue.item(15)).getDoubleValue());
|
| outOperations.operations().append(Matrix3DTransformOperation::create(matrix));
|
| break;
|
| }
|
| case TransformOperation::Perspective: {
|
| - double p = firstValue->computeLength<double>(conversionData);
|
| + double p = firstValue.computeLength<double>(conversionData);
|
| ASSERT(p >= 0);
|
| outOperations.operations().append(PerspectiveTransformOperation::create(p));
|
| break;
|
|
|