Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(605)

Unified Diff: Source/core/css/resolver/StyleBuilderConverter.cpp

Issue 1158603003: CSS Independent Transform Properties (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase master and explicit applyTransform parameters Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/css/resolver/StyleBuilderConverter.cpp
diff --git a/Source/core/css/resolver/StyleBuilderConverter.cpp b/Source/core/css/resolver/StyleBuilderConverter.cpp
index a4bac3c279f1164ea87d686de85775cb30cb19ae..989880e2f2e925661e0188d6704cb05e5ef9960d 100644
--- a/Source/core/css/resolver/StyleBuilderConverter.cpp
+++ b/Source/core/css/resolver/StyleBuilderConverter.cpp
@@ -39,6 +39,9 @@
#include "core/css/Rect.h"
#include "core/svg/SVGElement.h"
#include "core/svg/SVGURIReference.h"
+#include "platform/transforms/RotateTransformOperation.h"
+#include "platform/transforms/ScaleTransformOperation.h"
+#include "platform/transforms/TranslateTransformOperation.h"
namespace blink {
@@ -937,4 +940,51 @@ Vector<LengthPoint> StyleBuilderConverter::convertSnapCoordinates(StyleResolverS
return coordinates;
}
+PassRefPtr<TranslateTransformOperation> StyleBuilderConverter::convertTranslate(StyleResolverState& state, CSSValue* value)
+{
+ CSSValueList& list = *toCSSValueList(value);
+ ASSERT(list.length() <= 3);
+ Length tx = convertLength(state, list.item(0));
+ Length ty(0, Fixed);
+ double tz = 0;
+ if (list.length() >= 2)
+ ty = convertLength(state, list.item(1));
+ if (list.length() == 3)
+ tz = toCSSPrimitiveValue(list.item(2))->getDoubleValue();
+
+ return TranslateTransformOperation::create(tx, ty, tz, TransformOperation::Translate3D);
+}
+
+PassRefPtr<RotateTransformOperation> StyleBuilderConverter::convertRotate(StyleResolverState& state, CSSValue* value)
+{
+ CSSValueList& list = *toCSSValueList(value);
+ ASSERT(list.length() == 1 || list.length() == 4);
+ double angle = toCSSPrimitiveValue(list.item(0))->computeDegrees();
+ double x = 0;
+ double y = 0;
+ double z = 1;
+ if (list.length() == 4) {
+ x = toCSSPrimitiveValue(list.item(1))->getDoubleValue();
+ y = toCSSPrimitiveValue(list.item(2))->getDoubleValue();
+ z = toCSSPrimitiveValue(list.item(3))->getDoubleValue();
+ }
+
+ return RotateTransformOperation::create(x, y, z, angle, TransformOperation::Rotate3D);
+}
+
+PassRefPtr<ScaleTransformOperation> StyleBuilderConverter::convertScale(StyleResolverState& state, CSSValue* value)
+{
+ CSSValueList& list = *toCSSValueList(value);
+ ASSERT(list.length() <= 3);
+ double sx = toCSSPrimitiveValue(list.item(0))->getDoubleValue();
+ double sy = sx;
+ double sz = 1;
+ if (list.length() >= 2)
+ sy = toCSSPrimitiveValue(list.item(1))->getDoubleValue();
+ if (list.length() == 3)
+ sz = toCSSPrimitiveValue(list.item(2))->getDoubleValue();
+
+ return ScaleTransformOperation::create(sx, sy, sz, TransformOperation::Scale3D);
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698