Repository: flex-asjs
Updated Branches:
  refs/heads/develop 9c5d176a3 -> 364509efc


refactor to get style precedence correct


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/18b61d4d
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/18b61d4d
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/18b61d4d

Branch: refs/heads/develop
Commit: 18b61d4da083c6396cd85898473cfc4db5276e2b
Parents: 9c5d176
Author: Alex Harui <[email protected]>
Authored: Thu Jul 30 12:25:21 2015 -0700
Committer: Alex Harui <[email protected]>
Committed: Thu Jul 30 12:25:21 2015 -0700

----------------------------------------------------------------------
 .../as/src/org/apache/flex/utils/BeadMetrics.as | 117 ++++++-------------
 1 file changed, 38 insertions(+), 79 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/18b61d4d/frameworks/projects/Core/as/src/org/apache/flex/utils/BeadMetrics.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/as/src/org/apache/flex/utils/BeadMetrics.as 
b/frameworks/projects/Core/as/src/org/apache/flex/utils/BeadMetrics.as
index 2902caf..bd87470 100644
--- a/frameworks/projects/Core/as/src/org/apache/flex/utils/BeadMetrics.as
+++ b/frameworks/projects/Core/as/src/org/apache/flex/utils/BeadMetrics.as
@@ -47,10 +47,20 @@ public class BeadMetrics
      */
        public static function getMetrics(object:Object) : UIMetrics
        {
-               var borderThickness:Object = 
ValuesManager.valuesImpl.getValue(object,"border-thickness");
+               var borderThickness:Object = 
ValuesManager.valuesImpl.getValue(object,"border-width");
                var borderOffset:Number;
-               if( borderThickness == null ) {
-                       borderOffset = 0;
+               if( borderThickness == null ) 
+        {
+            borderThickness = 
ValuesManager.valuesImpl.getValue(object,"border");
+            if (borderThickness != null)
+            {
+                if (borderThickness is Array)
+                    borderOffset = CSSUtils.toNumber(borderThickness[0], 
object.width);
+                else
+                    borderOffset = CSSUtils.toNumber(borderThickness as 
String, object.width);
+            }
+            else
+                borderOffset = 0;
                }
                else {
                        borderOffset = Number(borderThickness);
@@ -63,41 +73,14 @@ public class BeadMetrics
                var paddingBottom:Object;
                
                var padding:Object = ValuesManager.valuesImpl.getValue(object, 
"padding");
-               if (padding is Array)
-               {
-                       if (padding.length == 1)
-                               paddingLeft = paddingTop = padding[0];
-                       else if (padding.length <= 3)
-                       {
-                               paddingTop = padding[0];
-                               paddingLeft = padding[1];
-                               paddingBottom = padding[0];
-                               paddingRight = padding[1];
-                       }
-                       else if (padding.length == 4)
-                       {
-                               paddingTop = padding[0];
-                               paddingLeft = padding[1];
-                               paddingBottom = padding[2];
-                               paddingRight = padding[3];                      
                
-                       }
-               }
-               else if (padding == null)
-               {
-                       paddingLeft = ValuesManager.valuesImpl.getValue(object, 
"padding-left");
-                       paddingTop = ValuesManager.valuesImpl.getValue(object, 
"padding-top");
-                       paddingRight = 
ValuesManager.valuesImpl.getValue(object, "padding-right");
-                       paddingBottom = 
ValuesManager.valuesImpl.getValue(object, "padding-bottom");
-               }
-               else
-               {
-                       paddingLeft = paddingTop = padding;
-                       paddingRight = paddingBottom = padding;
-               }
-               var pl:Number = Number(paddingLeft);
-               var pt:Number = Number(paddingTop);
-               var pr:Number = Number(paddingRight);
-               var pb:Number = Number(paddingBottom);
+               paddingLeft = ValuesManager.valuesImpl.getValue(object, 
"padding-left");
+               paddingTop = ValuesManager.valuesImpl.getValue(object, 
"padding-top");
+               paddingRight = ValuesManager.valuesImpl.getValue(object, 
"padding-right");
+               paddingBottom = ValuesManager.valuesImpl.getValue(object, 
"padding-bottom");
+               var pl:Number = CSSUtils.getLeftValue(paddingLeft, padding, 
object.width);
+               var pt:Number = CSSUtils.getTopValue(paddingTop, padding, 
object.height);
+               var pr:Number = CSSUtils.getRightValue(paddingRight, padding, 
object.width);
+               var pb:Number = CSSUtils.getBottomValue(paddingBottom, padding, 
object.height);
                
                var marginLeft:Object;
                var marginRight:Object;
@@ -105,35 +88,10 @@ public class BeadMetrics
                var marginBottom:Object;
                var margin:Object;
                margin = ValuesManager.valuesImpl.getValue(object, "margin");
-               
-               if (margin is Array)
-               {
-                       if (margin.length == 1)
-                               marginLeft = marginTop = marginRight = 
marginBottom = margin[0];
-                       else if (margin.length <= 3)
-                       {
-                               marginLeft = marginRight = margin[1];
-                               marginTop = marginBottom = margin[0];
-                       }
-                       else if (margin.length == 4)
-                       {
-                               marginLeft = margin[3];
-                               marginBottom = margin[2];
-                               marginRight = margin[1];
-                               marginTop = margin[0];                          
        
-                       }
-               }
-               else if (margin == null)
-               {
-                       marginLeft = ValuesManager.valuesImpl.getValue(object, 
"margin-left");
-                       marginTop = ValuesManager.valuesImpl.getValue(object, 
"margin-top");
-                       marginRight = ValuesManager.valuesImpl.getValue(object, 
"margin-right");
-                       marginBottom = 
ValuesManager.valuesImpl.getValue(object, "margin-bottom");
-               }
-               else
-               {
-                       marginLeft = marginTop = marginBottom = marginRight = 
margin;
-               }
+               marginLeft = ValuesManager.valuesImpl.getValue(object, 
"margin-left");
+               marginTop = ValuesManager.valuesImpl.getValue(object, 
"margin-top");
+               marginRight = ValuesManager.valuesImpl.getValue(object, 
"margin-right");
+               marginBottom = ValuesManager.valuesImpl.getValue(object, 
"margin-bottom");
                var ml:Number;
                var mr:Number;
                var mt:Number;
@@ -142,26 +100,27 @@ public class BeadMetrics
                if (marginLeft == "auto")
                        ml = 0;
                else
-               {
-                       ml = Number(marginLeft);
-                       if (isNaN(ml))
-                               ml = 0;
-               }
+        {
+            ml = CSSUtils.getLeftValue(marginLeft, margin, object.width);
+            if (isNaN(ml))
+                ml = 0;
+        }
                if (marginRight == "auto")
                        mr = 0;
                else
-               {
-                       mr = Number(marginRight);
-                       if (isNaN(mr))
-                               mr = 0;
-               }
-               mt = Number(marginTop);
+        {
+            mr = CSSUtils.getRightValue(marginRight, margin, object.width);
+            if (isNaN(mr))
+                mr = 0;
+        }
+               mt = CSSUtils.getTopValue(marginTop, margin, object.height);
                if (isNaN(mt))
                        mt = 0;
-               mb = Number(marginBottom);
+        mb = CSSUtils.getBottomValue(marginBottom, margin, object.height);
                if (isNaN(mb))
                        mb = 0;
                
+        borderOffset *= 2; // border on each side
                var result:UIMetrics = new UIMetrics();
                result.top = borderOffset + pt;
                result.left = borderOffset + pl;

Reply via email to