You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ha...@apache.org on 2026/02/25 12:43:36 UTC

(royale-asjs) branch develop updated: transform

This is an automated email from the ASF dual-hosted git repository.

harbs pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new d525c36ac8 transform
d525c36ac8 is described below

commit d525c36ac82b5d25dc736ca9783396e5aa5c8305
Author: Harbs <ha...@in-tools.com>
AuthorDate: Wed Feb 25 14:43:30 2026 +0200

    transform
---
 .../royale/style/stylebeads/flexgrid/FlexGrow.as   |   2 +-
 .../royale/style/stylebeads/flexgrid/FlexShrink.as |   2 +-
 .../apache/royale/style/stylebeads/flexgrid/Gap.as |   2 +-
 .../BackfaceVisibility.as}                         |  15 ++-
 .../style/stylebeads/transform/Perspective.as      |  71 +++++++++++++
 .../FlexGrow.as => transform/PerspectiveOrigin.as} |  21 ++--
 .../royale/style/stylebeads/transform/Rotate.as    | 116 +++++++++++++++++++++
 .../royale/style/stylebeads/transform/Scale.as     | 114 ++++++++++++++++++++
 .../royale/style/stylebeads/transform/Skew.as      | 104 ++++++++++++++++++
 .../FlexGrow.as => transform/Transform.as}         |  19 ++--
 .../FlexGrow.as => transform/TransformOrigin.as}   |  20 ++--
 .../FlexGrow.as => transform/TransformStyle.as}    |  17 ++-
 .../FlexGrow.as => transform/Translate.as}         |  28 +++--
 13 files changed, 475 insertions(+), 56 deletions(-)

diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
index be46188884..ebab1a5e29 100644
--- a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
@@ -31,7 +31,7 @@ package org.apache.royale.style.stylebeads.flexgrid
 		override public function set value(value:*):void
 		{
 			// For now we're assuming that flex-grow is only a number, but it can also be "initial" or "inherit"
-			assert(parseFloat(value) == value && parseInt(value, 10) >= 0, "Invalid value for flex-grow: " + value);
+			assert(parseFloat(value) == value && int(value) >= 0, "Invalid value for flex-grow: " + value);
 			calculatedRuleValue = calculatedSelector = _value = value;
 			
 		}
diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexShrink.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexShrink.as
index 6e5f26316b..fa11a42282 100644
--- a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexShrink.as
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexShrink.as
@@ -31,7 +31,7 @@ package org.apache.royale.style.stylebeads.flexgrid
 		override public function set value(value:*):void
 		{
 			// For now we're assuming that flex-shrink is only a number, but it can also be "initial" or "inherit"
-			assert(parseFloat(value) == value && parseInt(value, 10) >= 0, "Invalid value for flex-shrink: " + value);
+			assert(parseFloat(value) == value && int(value) >= 0, "Invalid value for flex-shrink: " + value);
 			calculatedRuleValue = calculatedSelector = _value = value;
 			
 		}
diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/Gap.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/Gap.as
index 8d82ea2707..3a974e5050 100644
--- a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/Gap.as
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/Gap.as
@@ -37,7 +37,7 @@ package org.apache.royale.style.stylebeads.flexgrid
 			_value = value;
 			// TODO validate aspect before setting
 			var ruleProp:* = value;
-			if(parseInt(value, 10) == value)
+			if(int(value) == value)
 			{
 				assert(value >= 0, "Invalid value for gap: " + value);
 				var pixelValue:Number = ThemeManager.instance.activeTheme.spacing * value;
diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/BackfaceVisibility.as
similarity index 72%
copy from frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
copy to frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/BackfaceVisibility.as
index be46188884..72f9ba1836 100644
--- a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/BackfaceVisibility.as
@@ -16,24 +16,21 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.style.stylebeads.flexgrid
+package org.apache.royale.style.stylebeads.transform
 {
 	import org.apache.royale.style.stylebeads.SingleStyleBase;
 	import org.apache.royale.debugging.assert;
 
-	public class FlexGrow extends SingleStyleBase
+	public class BackfaceVisibility extends SingleStyleBase
 	{
-		public function FlexGrow()
+		public function BackfaceVisibility()
 		{
-			super("grow", "flex-grow");
+			super("backface", "backface-visibility");
 		}
-
 		override public function set value(value:*):void
 		{
-			// For now we're assuming that flex-grow is only a number, but it can also be "initial" or "inherit"
-			assert(parseFloat(value) == value && parseInt(value, 10) >= 0, "Invalid value for flex-grow: " + value);
-			calculatedRuleValue = calculatedSelector = _value = value;
-			
+			assert(value == "hidden" || value == "visible", "Invalid value for backface-visibility: " + value);
+			calculatedSelector = calculatedRuleValue = _value = value;
 		}
 	}
 }
\ No newline at end of file
diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Perspective.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Perspective.as
new file mode 100644
index 0000000000..278fa6f7b8
--- /dev/null
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Perspective.as
@@ -0,0 +1,71 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.style.stylebeads.transform
+{
+	import org.apache.royale.style.stylebeads.SingleStyleBase;
+	import org.apache.royale.debugging.assert;
+	import org.apache.royale.style.util.CSSLookup;
+	import org.apache.royale.style.util.StyleTheme;
+	import org.apache.royale.style.util.ThemeManager;
+
+	public class Perspective extends SingleStyleBase
+	{
+		public function Perspective()
+		{
+			super("perspective", "perspective");
+		}
+		
+		override public function set value(value:*):void
+		{
+			var isVar:Boolean = CSSLookup.has(value);
+			assert(isVar || ["dramatic","near","normal","midrange","distant","none"].indexOf(value) != -1, "Invalid value for perspective: " + value);
+			calculatedSelector = _value = value;
+			if(isVar)
+				calculatedRuleValue = CSSLookup.getProperty(value);
+			else
+			{
+				var theme:StyleTheme = ThemeManager.instance.activeTheme;
+				switch(value)
+				{
+					case "dramatic":
+						calculatedRuleValue = theme.perspectiveDramatic;
+						break;
+					case "near":
+						calculatedRuleValue = theme.perspectiveNear;
+						break;
+					case "normal":
+						calculatedRuleValue = theme.perspectiveNormal;
+						break;
+					case "midrange":
+						calculatedRuleValue = theme.perspectiveMidrange;
+						break;
+					case "distant":
+						calculatedRuleValue = theme.perspectiveDistant;
+						break;
+					case "none":
+						calculatedRuleValue = "none";
+						break;
+					default:
+						assert(false, "Invalid value for perspective: " + value);
+						break;
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/PerspectiveOrigin.as
similarity index 66%
copy from frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
copy to frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/PerspectiveOrigin.as
index be46188884..654e511b82 100644
--- a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/PerspectiveOrigin.as
@@ -16,24 +16,29 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.style.stylebeads.flexgrid
+package org.apache.royale.style.stylebeads.transform
 {
 	import org.apache.royale.style.stylebeads.SingleStyleBase;
 	import org.apache.royale.debugging.assert;
+	import org.apache.royale.style.util.CSSLookup;
 
-	public class FlexGrow extends SingleStyleBase
+	public class PerspectiveOrigin extends SingleStyleBase
 	{
-		public function FlexGrow()
+		public function PerspectiveOrigin()
 		{
-			super("grow", "flex-grow");
+			super("perspective-origin", "perspective-origin");
 		}
-
 		override public function set value(value:*):void
 		{
-			// For now we're assuming that flex-grow is only a number, but it can also be "initial" or "inherit"
-			assert(parseFloat(value) == value && parseInt(value, 10) >= 0, "Invalid value for flex-grow: " + value);
+			var isVar:Boolean = CSSLookup.has(value);
+			assert(isVar || ['center','top','top right','right','bottom right','bottom','bottom left','left','top left'].indexOf(value) != -1, "Invalid value for perspective-origin: " + value);
 			calculatedRuleValue = calculatedSelector = _value = value;
-			
+			if(isVar)
+				calculatedRuleValue = CSSLookup.getProperty(value);
+			else
+			{
+				calculatedSelector = sanitizeSelector(value);
+			}
 		}
 	}
 }
\ No newline at end of file
diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Rotate.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Rotate.as
new file mode 100644
index 0000000000..75fac27dbe
--- /dev/null
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Rotate.as
@@ -0,0 +1,116 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.style.stylebeads.transform
+{
+	import org.apache.royale.style.stylebeads.SingleStyleBase;
+	import org.apache.royale.debugging.assert;
+	import org.apache.royale.style.util.CSSLookup;
+
+	public class Rotate extends SingleStyleBase
+	{
+		public function Rotate()
+		{
+			super("rotate", "rotate");
+		}
+
+		public function set rotate(value:*):void
+		{
+			_rotateX = _rotateY = _rotateZ = null;
+			this.value = value;
+		}
+		private var _rotateX:*;
+
+		public function set rotateX(value:*):void
+		{
+			_rotateX = _value = value;
+			calculateVals();
+		}
+		private var _rotateY:*;
+
+		public function set rotateY(value:*):void
+		{
+			_rotateY = value;
+			calculateVals();
+		}
+		private var _rotateZ:*;
+
+		public function set rotateZ(value:*):void
+		{
+			_rotateZ = value;
+			calculateVals();
+		}
+		override public function set value(value:*):void
+		{
+			_value = value;
+			calculateVals();
+		}
+		private function calculateVals():void
+		{
+			var negative:Boolean = false;
+			var selectors:Array = [];
+			var rules:Array = [];
+			if(_rotateX != null)
+			{
+				negative ||= _rotateX + "".indexOf("-") == 0;
+				selectors.push("x-" + positive(_rotateX));
+				rules.push("rotateX(" + parseVal(_rotateX) + ")");
+			}
+			if(_rotateY != null)
+			{
+				negative ||= _rotateY + "".indexOf("-") == 0;
+				selectors.push("y-" + positive(_rotateY));
+				rules.push("rotateY(" + parseVal(_rotateY) + ")");
+			}
+			if(_rotateZ != null)
+			{
+				negative ||= _rotateZ + "".indexOf("-") == 0;
+				selectors.push("z-" + positive(_rotateZ));
+				rules.push("rotateZ(" + parseVal(_rotateZ) + ")");
+			}
+			if(rules.length)
+			{
+				calculatedRuleValue = rules.join(" ");
+				calculatedSelector = selectors.join("-");
+			}
+			else
+			{
+				calculatedRuleValue = "rotate(" + parseVal(_value) + ")";
+				calculatedSelector = positive(_value);
+			}
+			_selectorPrefix = negative ? "-rotate" : "rotate";
+		}
+		private function positive(val:*):String
+		{
+			var valStr:String = "" + val;
+			if(valStr.indexOf("-") == 0)
+				return valStr.substring(1);
+			return valStr;
+		}
+		private function parseVal(value:*):String{
+			if(value == "none")
+				return "none";
+			if(parseFloat(value) == value)
+				return value + "deg";
+			if(CSSLookup.has(value))
+				return CSSLookup.getProperty(value);
+			assert(false, "Invalid value for rotate: " + value);
+			return value;
+		}
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Scale.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Scale.as
new file mode 100644
index 0000000000..d9512f0535
--- /dev/null
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Scale.as
@@ -0,0 +1,114 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.style.stylebeads.transform
+{
+	import org.apache.royale.style.stylebeads.SingleStyleBase;
+	import org.apache.royale.debugging.assert;
+	import org.apache.royale.style.util.CSSLookup;
+
+	public class Scale extends SingleStyleBase
+	{
+		public function Scale()
+		{
+			super("scale", "scale");
+		}
+
+		public function set scale(value:*):void
+		{
+			_scaleX = _scaleY = _scaleZ = null;
+			this.value = value;
+		}
+		private var _scaleX:*;
+
+		public function set scaleX(value:*):void
+		{
+			_scaleX = _value = value;
+			calculateVals();
+		}
+		private var _scaleY:*;
+
+		public function set scaleY(value:*):void
+		{
+			_scaleY = value;
+			calculateVals();
+		}
+		private var _scaleZ:*;
+
+		public function set scaleZ(value:*):void
+		{
+			_scaleZ = value;
+			calculateVals();
+		}
+		override public function set value(value:*):void
+		{
+			_value = value;
+			calculateVals();
+		}
+		private function calculateVals():void
+		{
+			var negative:Boolean = false;
+			var selectors:Array = [];
+			var rules:Array = [];
+			if(_scaleX != null)
+			{
+				negative ||= _scaleX + "".indexOf("-") == 0;
+				selectors.push("x-" + positive(_scaleX));
+				rules.push(parseVal(_scaleX));
+			}
+			if(_scaleY != null)
+			{
+				negative ||= _scaleY + "".indexOf("-") == 0;
+				selectors.push("y-" + positive(_scaleY));
+				rules.push(parseVal(_scaleY));
+			}
+			if(_scaleZ != null)
+			{
+				negative ||= _scaleZ + "".indexOf("-") == 0;
+				selectors.push("z-" + positive(_scaleZ));
+				rules.push(parseVal(_scaleZ));
+			}
+			if(rules.length)
+			{
+				calculatedRuleValue = rules.join(" ");
+				calculatedSelector = selectors.join("-");
+			}
+			else
+			{
+				calculatedRuleValue = parseVal(_value) + " " + parseVal(_value);
+				calculatedSelector = positive(_value);
+			}
+			_selectorPrefix = negative ? "-scale" : "scale";
+		}
+		private function positive(val:*):String
+		{
+			var valStr:String = "" + val;
+			if(valStr.indexOf("-") == 0)
+				return sanitizeSelector(valStr.substring(1));
+			return sanitizeSelector(valStr);
+		}
+		private function parseVal(value:*):String{
+			if(value == "none")
+				return "none";
+			if(CSSLookup.has(value))
+				return CSSLookup.getProperty(value);
+			assert(false, "Invalid value for scale: " + value);
+			return value;
+		}
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Skew.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Skew.as
new file mode 100644
index 0000000000..e5743d7907
--- /dev/null
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Skew.as
@@ -0,0 +1,104 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.royale.style.stylebeads.transform
+{
+	import org.apache.royale.style.stylebeads.SingleStyleBase;
+	import org.apache.royale.debugging.assert;
+	import org.apache.royale.style.util.CSSLookup;
+
+	public class Skew extends SingleStyleBase
+	{
+		public function Skew()
+		{
+			super("skew", "transform");
+		}
+
+		public function set skew(value:*):void
+		{
+			_skewX = _skewY = null;
+			this.value = value;
+		}
+		private var _skewX:*;
+
+		public function set skewX(value:*):void
+		{
+			_skewX = _value = value;
+			calculateVals();
+		}
+		private var _skewY:*;
+
+		public function set skewY(value:*):void
+		{
+			_skewY = value;
+			calculateVals();
+		}
+
+		override public function set value(value:*):void
+		{
+			_value = value;
+			calculateVals();
+		}
+		private function calculateVals():void
+		{
+			var negative:Boolean = false;
+			var selectors:Array = [];
+			var rules:Array = [];
+			if(_skewX != null)
+			{
+				negative ||= _skewX + "".indexOf("-") == 0;
+				selectors.push("x-" + positive(_skewX));
+				rules.push("skewX(" + parseVal(_skewX) + ")");
+			}
+			if(_skewY != null)
+			{
+				negative ||= _skewY + "".indexOf("-") == 0;
+				selectors.push("y-" + positive(_skewY));
+				rules.push("skewY(" + parseVal(_skewY) + ")");
+			}
+			if(rules.length)
+			{
+				calculatedRuleValue = rules.join(" ");
+				calculatedSelector = selectors.join("-");
+			}
+			else
+			{
+				calculatedRuleValue = "skewX(" + parseVal(_value) + ") " +"skewY(" + parseVal(_value) + ")";
+				calculatedSelector = positive(_value);
+			}
+			_selectorPrefix = negative ? "-skew" : "skew";
+		}
+		private function positive(val:*):String
+		{
+			var valStr:String = "" + val;
+			if(valStr.indexOf("-") == 0)
+				return valStr.substring(1);
+			return valStr;
+		}
+		private function parseVal(value:*):String{
+			if(value == "none")
+				return "none";
+			if(parseFloat(value) == value)
+				return value + "deg";
+			if(CSSLookup.has(value))
+				return CSSLookup.getProperty(value);
+			assert(false, "Invalid value for skew: " + value);
+			return value;
+		}
+	}
+}
\ No newline at end of file
diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Transform.as
similarity index 71%
copy from frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
copy to frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Transform.as
index be46188884..a455eb7766 100644
--- a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Transform.as
@@ -16,24 +16,25 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.style.stylebeads.flexgrid
+package org.apache.royale.style.stylebeads.transform
 {
 	import org.apache.royale.style.stylebeads.SingleStyleBase;
 	import org.apache.royale.debugging.assert;
+	import org.apache.royale.style.util.CSSLookup;
 
-	public class FlexGrow extends SingleStyleBase
+	public class Transform extends SingleStyleBase
 	{
-		public function FlexGrow()
+		public function Transform()
 		{
-			super("grow", "flex-grow");
+			super("transform", "transform");
 		}
-
 		override public function set value(value:*):void
 		{
-			// For now we're assuming that flex-grow is only a number, but it can also be "initial" or "inherit"
-			assert(parseFloat(value) == value && parseInt(value, 10) >= 0, "Invalid value for flex-grow: " + value);
-			calculatedRuleValue = calculatedSelector = _value = value;
-			
+			var isVar:Boolean = CSSLookup.has(value);
+			assert(isVar || value == "none", "Invalid value for transform: " + value);
+			calculatedSelector = calculatedRuleValue = _value = value;
+			if(isVar)
+				calculatedRuleValue = CSSLookup.getProperty(value);
 		}
 	}
 }
\ No newline at end of file
diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/TransformOrigin.as
similarity index 65%
copy from frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
copy to frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/TransformOrigin.as
index be46188884..ec99c99102 100644
--- a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/TransformOrigin.as
@@ -16,24 +16,26 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.style.stylebeads.flexgrid
+package org.apache.royale.style.stylebeads.transform
 {
 	import org.apache.royale.style.stylebeads.SingleStyleBase;
 	import org.apache.royale.debugging.assert;
+	import org.apache.royale.style.util.CSSLookup;
 
-	public class FlexGrow extends SingleStyleBase
+	public class TransformOrigin extends SingleStyleBase
 	{
-		public function FlexGrow()
+		public function TransformOrigin()
 		{
-			super("grow", "flex-grow");
+			super("origin", "transform-origin");
 		}
-
 		override public function set value(value:*):void
 		{
-			// For now we're assuming that flex-grow is only a number, but it can also be "initial" or "inherit"
-			assert(parseFloat(value) == value && parseInt(value, 10) >= 0, "Invalid value for flex-grow: " + value);
-			calculatedRuleValue = calculatedSelector = _value = value;
-			
+			var isVar:Boolean = CSSLookup.has(value);
+			assert(isVar || ["center","top","top right","right","bottom right","bottom","bottom left","left","top left"].indexOf(value) != -1, "Invalid value for transform-origin: " + value);
+			calculatedRuleValue = _value = value;
+			calculatedSelector = sanitizeSelector(value);
+			if(isVar)
+				calculatedRuleValue = CSSLookup.getProperty(value);
 		}
 	}
 }
\ No newline at end of file
diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/TransformStyle.as
similarity index 72%
copy from frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
copy to frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/TransformStyle.as
index be46188884..d4e9bbdaf9 100644
--- a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/TransformStyle.as
@@ -16,24 +16,23 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.style.stylebeads.flexgrid
+package org.apache.royale.style.stylebeads.transform
 {
 	import org.apache.royale.style.stylebeads.SingleStyleBase;
 	import org.apache.royale.debugging.assert;
 
-	public class FlexGrow extends SingleStyleBase
+	public class TransformStyle extends SingleStyleBase
 	{
-		public function FlexGrow()
+		public function TransformStyle()
 		{
-			super("grow", "flex-grow");
+			super("transform", "transform-style");
 		}
-
 		override public function set value(value:*):void
 		{
-			// For now we're assuming that flex-grow is only a number, but it can also be "initial" or "inherit"
-			assert(parseFloat(value) == value && parseInt(value, 10) >= 0, "Invalid value for flex-grow: " + value);
-			calculatedRuleValue = calculatedSelector = _value = value;
-			
+			assert(value == "preserve-3d" || value == "flat", "Invalid value for transform-style: " + value);
+			calculatedSelector = calculatedRuleValue = _value = value;
+			if(value == "preserve-3d")
+				calculatedSelector = "3d";
 		}
 	}
 }
\ No newline at end of file
diff --git a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Translate.as
similarity index 61%
copy from frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
copy to frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Translate.as
index be46188884..a3a1795119 100644
--- a/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/flexgrid/FlexGrow.as
+++ b/frameworks/projects/Style/src/main/royale/org/apache/royale/style/stylebeads/transform/Translate.as
@@ -16,24 +16,34 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.style.stylebeads.flexgrid
+package org.apache.royale.style.stylebeads.transform
 {
 	import org.apache.royale.style.stylebeads.SingleStyleBase;
 	import org.apache.royale.debugging.assert;
 
-	public class FlexGrow extends SingleStyleBase
+	public class Translate extends SingleStyleBase
 	{
-		public function FlexGrow()
+		public function Translate()
 		{
-			super("grow", "flex-grow");
+			super("translate", "translate");
 		}
-
+		//TODO: Not implemented. Add support for x, y and z.
 		override public function set value(value:*):void
 		{
-			// For now we're assuming that flex-grow is only a number, but it can also be "initial" or "inherit"
-			assert(parseFloat(value) == value && parseInt(value, 10) >= 0, "Invalid value for flex-grow: " + value);
-			calculatedRuleValue = calculatedSelector = _value = value;
-			
+			var negative:Boolean = value + "".indexOf("-") == 0;
+
+				var isInt:Boolean = int(value) == value;
+				if(isInt)
+				{
+					// validated = true;
+					// var pixelValue:Number = ThemeManager.instance.activeTheme.spacing * val;
+					// selectorValue[i] = "" + Math.abs(val);
+					// ruleValue[i] = CSSUnit.convert(pixelValue, CSSUnit.PX, unit) + unit;
+				}
+
+
+			assert(isInt || value == "none", "Invalid value for translate: " + value);
+			calculatedSelector = calculatedRuleValue = _value = value;
 		}
 	}
 }
\ No newline at end of file