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

Unified Diff: Source/core/css/parser/CSSPropertyParser.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/parser/CSSPropertyParser.cpp
diff --git a/Source/core/css/parser/CSSPropertyParser.cpp b/Source/core/css/parser/CSSPropertyParser.cpp
index 8b082c78598b56264b1ab0d8053348048309681e..3ffb7ac7299486d0bea03d78e72e13fd673bf4d8 100644
--- a/Source/core/css/parser/CSSPropertyParser.cpp
+++ b/Source/core/css/parser/CSSPropertyParser.cpp
@@ -1093,6 +1093,78 @@ bool CSSPropertyParser::parseValue(CSSPropertyID unresolvedProperty, bool import
addProperty(propId, list.release(), important);
return true;
}
+
+ case CSSPropertyTranslate: {
+ // translate : [ <length> | <percentage> ] [[ <length> | <percentage> ] <length>? ]?
+ // defaults to 0 on all axis, note that the last value CANNOT be a percentage
+ ASSERT(RuntimeEnabledFeatures::cssIndependentTransformPropertiesEnabled());
+ RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
+ if (!validUnit(value, FLength | FPercent))
+ return false;
+
+ list->append(createPrimitiveNumericValue(value));
+ value = m_valueList->next();
+
+ if (value) {
+ if (!validUnit(value, FLength | FPercent))
+ return false;
+
+ list->append(createPrimitiveNumericValue(value));
+ value = m_valueList->next();
+
+ if (value) {
+ if (!validUnit(value, FLength))
+ return false;
+
+ list->append(createPrimitiveNumericValue(value));
+ value = m_valueList->next();
+ }
+ }
+
+ parsedValue = list.release();
+ break;
+ }
+
+ case CSSPropertyRotate: { // rotate : <angle> <number>{3}? defaults to a 0 0 1
+ ASSERT(RuntimeEnabledFeatures::cssIndependentTransformPropertiesEnabled());
+ RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
+
+ if (!validUnit(value, FAngle))
+ return false;
+ list->append(createPrimitiveNumericValue(value));
+ value = m_valueList->next();
+
+ if (!value) {
+ parsedValue = list.release();
+ break;
+ }
+
+ for (unsigned i = 0; i < 3; i++) { // 3 dimensions of rotation
+ if (!value || !validUnit(value, FNumber))
+ return false;
+ list->append(createPrimitiveNumericValue(value));
+ value = m_valueList->next();
+ }
+
+ parsedValue = list.release();
+ break;
+ }
+
+ case CSSPropertyScale: { // scale: <number>{1,3}, default scale for all axis is 1
+ ASSERT(RuntimeEnabledFeatures::cssIndependentTransformPropertiesEnabled());
+ RefPtrWillBeRawPtr<CSSValueList> scaleList = CSSValueList::createSpaceSeparated();
+
+ for (unsigned i = 0; value && i < 3; i++) { // up to 3 dimensions of scale
+ if (!validUnit(value, FNumber))
+ return false;
+ scaleList->append(createPrimitiveNumericValue(value));
+ value = m_valueList->next();
+ }
+
+ parsedValue = scaleList.release();
+ break;
+ }
+
case CSSPropertyWebkitPerspectiveOriginX:
case CSSPropertyWebkitTransformOriginX:
parsedValue = parseFillPositionX(m_valueList);

Powered by Google App Engine
This is Rietveld 408576698