Take rotations into account, but Chrome and FF still seem to have a problem 
with getBoundingClientRect() for SVGs...


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

Branch: refs/heads/feature/fontawesome
Commit: a006bbe894878ceda80df4939be43c0e9c510643
Parents: 010e4c5
Author: yishayw <yishayj...@hotmail.com>
Authored: Sun Jan 8 14:15:05 2017 +0200
Committer: yishayw <yishayj...@hotmail.com>
Committed: Sun Jan 8 14:15:05 2017 +0200

----------------------------------------------------------------------
 .../main/flex/org/apache/flex/utils/DisplayUtils.as  | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a006bbe8/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as
index ac66a19..4e08ffd 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/utils/DisplayUtils.as
@@ -23,6 +23,7 @@ package org.apache.flex.utils
 
        COMPILE::JS 
        {
+               import org.apache.flex.geom.Point;
                import org.apache.flex.geom.Matrix;
                import org.apache.flex.geom.Point;
                import org.apache.flex.core.ITransformHost;
@@ -70,11 +71,17 @@ package org.apache.flex.utils
                                        var sm:SVGMatrix = 
svgElement.getScreenCTM();
                                        var m:Matrix = new 
Matrix(sm.a,sm.b,sm.c,sm.d,sm.e,sm.f);
                                        var tl:Point = 
m.transformPoint(bounds.topLeft);
+                                       var tr:Point = m.transformPoint(new 
Point(bounds.right, bounds.top));
+                                       var bl:Point = m.transformPoint(new 
Point(bounds.left, bounds.bottom));
                                        var br:Point = 
m.transformPoint(bounds.bottomRight);
-                                       bounds.top = tl.y;
-                                       bounds.left = tl.x;
-                                       bounds.bottom = br.y;
-                                       bounds.right = br.x;
+                                       var leftX:Number = Math.min(tl.x, tr.x, 
bl.x, br.x);
+                                       var topY:Number = Math.min(tl.y, tr.y, 
bl.y, br.y);
+                                       var rightX:Number = Math.max(tl.x, 
tr.x, bl.x, br.x);
+                                       var bottomY:Number = Math.max(tl.y, 
tr.y, bl.y, br.y);
+                                       bounds.top = topY;
+                                       bounds.left = leftX;
+                                       bounds.bottom = bottomY;
+                                       bounds.right = rightX;
                                }
                                return bounds;
                        }

Reply via email to