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

Unified Diff: third_party/WebKit/Source/core/css/cssom/CSSTranslation.cpp

Issue 2047923002: [WIP] Add support for CSSValue-> CSSLengthValue and CSSTranslation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@supported-types
Patch Set: Created 4 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: third_party/WebKit/Source/core/css/cssom/CSSTranslation.cpp
diff --git a/third_party/WebKit/Source/core/css/cssom/CSSTranslation.cpp b/third_party/WebKit/Source/core/css/cssom/CSSTranslation.cpp
index 49e26c1e8ab545c3f0831b19debdc5906e64d833..192b7a1e24977903c68f498fca043bc0f0b65b85 100644
--- a/third_party/WebKit/Source/core/css/cssom/CSSTranslation.cpp
+++ b/third_party/WebKit/Source/core/css/cssom/CSSTranslation.cpp
@@ -18,6 +18,37 @@ CSSTranslation* CSSTranslation::create(CSSLengthValue* x, CSSLengthValue* y, CSS
return new CSSTranslation(x, y, z);
}
+CSSTranslation* CSSTranslation::fromCSSValue(const CSSValue& value)
+{
+ if (!value.isFunctionValue())
+ return nullptr;
+
+ const CSSFunctionValue& cssFunctionValue = toCSSFunctionValue(value);
+ if (cssFunctionValue.length() < 2)
+ return nullptr;
+
+ CSSLengthValue* x = CSSLengthValue::fromCSSValue(*cssFunctionValue.item(0));
+ CSSLengthValue* y = CSSLengthValue::fromCSSValue(*cssFunctionValue.item(1));
+ if (!x || !y)
+ return nullptr;
+
+ if (cssFunctionValue.functionType() == CSSValueTranslate) {
+ if (cssFunctionValue.length() != 2)
+ return nullptr;
+ return CSSTranslation::create(x, y);
+ }
+
+ if (cssFunctionValue.functionType() == CSSValueTranslate3d) {
+ if (cssFunctionValue.length() != 3)
+ return nullptr;
+ CSSLengthValue* z = CSSLengthValue::fromCSSValue(*cssFunctionValue.item(2));
+ if (!z || z->containsPercent())
+ return nullptr;
+ return new CSSTranslation(x, y, z);
+ }
+ return nullptr;
+}
+
CSSFunctionValue* CSSTranslation::toCSSValue() const
{
CSSFunctionValue* result = CSSFunctionValue::create(is2D() ? CSSValueTranslate : CSSValueTranslate3d);

Powered by Google App Engine
This is Rietveld 408576698