Commit 19dbf3f3 authored by fs's avatar fs Committed by Commit bot

Use a converter for building style value for 'transform'

Also change TransformBuilder::createTransformOperations to return the
TransformOperations rather than use an out argument.

Review-Url: https://codereview.chromium.org/2435413002
Cr-Commit-Position: refs/heads/master@{#427036}
parent 75efa395
......@@ -201,9 +201,8 @@ InterpolationValue CSSTransformInterpolationType::maybeConvertValue(
conversionCheckers.append(std::move(lengthUnitsChecker));
}
TransformOperations transform;
TransformBuilder::createTransformOperations(
value, state.cssToLengthConversionData(), transform);
TransformOperations transform = TransformBuilder::createTransformOperations(
value, state.cssToLengthConversionData());
return convertTransform(std::move(transform));
}
......
......@@ -77,11 +77,10 @@ void CSSMatrix::setMatrixValue(const String& string,
return;
DEFINE_STATIC_REF(ComputedStyle, initialStyle, createInitialStyle());
TransformOperations operations;
TransformBuilder::createTransformOperations(
*value, CSSToLengthConversionData(initialStyle, initialStyle,
LayoutViewItem(nullptr), 1.0f),
operations);
TransformOperations operations =
TransformBuilder::createTransformOperations(
*value, CSSToLengthConversionData(initialStyle, initialStyle,
LayoutViewItem(nullptr), 1.0f));
// Convert transform operations to a TransformationMatrix. This can fail
// if a param has a percentage ('%')
......
......@@ -350,7 +350,7 @@ text-transform inherited
text-underline-position runtime_flag=CSS3TextDecorations, inherited, type_name=TextUnderlinePosition
top typedom_types=[Length], keywords=[auto], supports_percentage, interpolable, initial=initialOffset, converter=convertLengthOrAuto
touch-action converter=convertFlags<TouchAction>, type_name=TouchAction
transform typedom_types=[Transform], keywords=[none], interpolable, custom_value
transform typedom_types=[Transform], keywords=[none], interpolable, converter=convertTransformOperations
transform-origin interpolable, converter=convertTransformOrigin
transform-style name_for_methods=TransformStyle3D
translate runtime_flag=CSSIndependentTransformProperties, converter=convertTranslate, interpolable
......
......@@ -45,6 +45,7 @@
#include "core/css/CSSURIValue.h"
#include "core/css/CSSValuePair.h"
#include "core/css/resolver/FilterOperationResolver.h"
#include "core/css/resolver/TransformBuilder.h"
#include "core/frame/LocalFrame.h"
#include "core/frame/UseCounter.h"
#include "core/style/ClipPathOperation.h"
......@@ -1141,6 +1142,13 @@ TextSizeAdjust StyleBuilderConverter::convertTextSizeAdjust(
return TextSizeAdjust(primitiveValue.getFloatValue() / 100.0f);
}
TransformOperations StyleBuilderConverter::convertTransformOperations(
StyleResolverState& state,
const CSSValue& value) {
return TransformBuilder::createTransformOperations(
value, state.cssToLengthConversionData());
}
TransformOrigin StyleBuilderConverter::convertTransformOrigin(
StyleResolverState& state,
const CSSValue& value) {
......
......@@ -140,6 +140,8 @@ class StyleBuilderConverter {
static float convertTextStrokeWidth(StyleResolverState&, const CSSValue&);
static TextSizeAdjust convertTextSizeAdjust(StyleResolverState&,
const CSSValue&);
static TransformOperations convertTransformOperations(StyleResolverState&,
const CSSValue&);
static TransformOrigin convertTransformOrigin(StyleResolverState&,
const CSSValue&);
......
......@@ -63,7 +63,6 @@
#include "core/css/resolver/FilterOperationResolver.h"
#include "core/css/resolver/FontBuilder.h"
#include "core/css/resolver/StyleBuilder.h"
#include "core/css/resolver/TransformBuilder.h"
#include "core/frame/LocalFrame.h"
#include "core/frame/Settings.h"
#include "core/style/ComputedStyle.h"
......@@ -562,16 +561,6 @@ void StyleBuilderFunctions::applyValueCSSPropertyTextIndent(
state.style()->setTextIndentType(textIndentTypeValue);
}
void StyleBuilderFunctions::applyValueCSSPropertyTransform(
StyleResolverState& state,
const CSSValue& value) {
// FIXME: We should just make this a converter
TransformOperations operations;
TransformBuilder::createTransformOperations(
value, state.cssToLengthConversionData(), operations);
state.style()->setTransform(operations);
}
void StyleBuilderFunctions::applyInheritCSSPropertyVerticalAlign(
StyleResolverState& state) {
EVerticalAlign verticalAlign = state.parentStyle()->verticalAlign();
......
......@@ -102,14 +102,13 @@ static TransformOperation::OperationType getTransformOperationType(
}
}
void TransformBuilder::createTransformOperations(
TransformOperations TransformBuilder::createTransformOperations(
const CSSValue& inValue,
const CSSToLengthConversionData& conversionData,
TransformOperations& outOperations) {
ASSERT(!outOperations.size());
const CSSToLengthConversionData& conversionData) {
TransformOperations operations;
if (!inValue.isValueList()) {
DCHECK_EQ(toCSSIdentifierValue(inValue).getValueID(), CSSValueNone);
return;
return operations;
}
float zoomFactor = conversionData.zoom();
......@@ -141,7 +140,7 @@ void TransformBuilder::createTransformOperations(
}
}
}
outOperations.operations().append(
operations.operations().append(
ScaleTransformOperation::create(sx, sy, 1.0, transformType));
break;
}
......@@ -157,7 +156,7 @@ void TransformBuilder::createTransformOperations(
sy = toCSSPrimitiveValue(transformValue->item(1)).getDoubleValue();
sz = toCSSPrimitiveValue(transformValue->item(2)).getDoubleValue();
}
outOperations.operations().append(
operations.operations().append(
ScaleTransformOperation::create(sx, sy, sz, transformType));
break;
}
......@@ -179,7 +178,7 @@ void TransformBuilder::createTransformOperations(
}
}
outOperations.operations().append(
operations.operations().append(
TranslateTransformOperation::create(tx, ty, 0, transformType));
break;
}
......@@ -198,7 +197,7 @@ void TransformBuilder::createTransformOperations(
.computeLength<double>(conversionData);
}
outOperations.operations().append(
operations.operations().append(
TranslateTransformOperation::create(tx, ty, tz, transformType));
break;
}
......@@ -209,7 +208,7 @@ void TransformBuilder::createTransformOperations(
double x = transformType == TransformOperation::RotateX;
double y = transformType == TransformOperation::RotateY;
double z = transformType == TransformOperation::RotateZ;
outOperations.operations().append(
operations.operations().append(
RotateTransformOperation::create(x, y, z, angle, transformType));
break;
}
......@@ -224,7 +223,7 @@ void TransformBuilder::createTransformOperations(
double y = secondValue.getDoubleValue();
double z = thirdValue.getDoubleValue();
double angle = fourthValue.computeDegrees();
outOperations.operations().append(
operations.operations().append(
RotateTransformOperation::create(x, y, z, angle, transformType));
break;
}
......@@ -246,7 +245,7 @@ void TransformBuilder::createTransformOperations(
}
}
}
outOperations.operations().append(
operations.operations().append(
SkewTransformOperation::create(angleX, angleY, transformType));
break;
}
......@@ -264,7 +263,7 @@ void TransformBuilder::createTransformOperations(
double f =
zoomFactor *
toCSSPrimitiveValue(transformValue->item(5)).getDoubleValue();
outOperations.operations().append(
operations.operations().append(
MatrixTransformOperation::create(a, b, c, d, e, f));
break;
}
......@@ -288,14 +287,14 @@ void TransformBuilder::createTransformOperations(
toCSSPrimitiveValue(transformValue->item(13)).getDoubleValue(),
toCSSPrimitiveValue(transformValue->item(14)).getDoubleValue(),
toCSSPrimitiveValue(transformValue->item(15)).getDoubleValue());
outOperations.operations().append(
operations.operations().append(
Matrix3DTransformOperation::create(matrix));
break;
}
case TransformOperation::Perspective: {
double p = firstValue.computeLength<double>(conversionData);
ASSERT(p >= 0);
outOperations.operations().append(
operations.operations().append(
PerspectiveTransformOperation::create(p));
break;
}
......@@ -304,6 +303,7 @@ void TransformBuilder::createTransformOperations(
break;
}
}
return operations;
}
} // namespace blink
......@@ -44,9 +44,9 @@ class TransformBuilder {
STATIC_ONLY(TransformBuilder);
public:
static void createTransformOperations(const CSSValue& inValue,
const CSSToLengthConversionData&,
TransformOperations& outOperations);
static TransformOperations createTransformOperations(
const CSSValue& inValue,
const CSSToLengthConversionData&);
};
} // namespace blink
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment