Repository: flex-asjs
Updated Branches:
  refs/heads/develop d277641ed -> 85c080468


Fix getScreenBoundingRect() for svg elements.


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

Branch: refs/heads/develop
Commit: 85c080468af4d1b1bd8602b9e284f5b6c211a845
Parents: d277641
Author: yishayw <yishayj...@hotmail.com>
Authored: Mon Dec 26 11:18:03 2016 +0200
Committer: yishayw <yishayj...@hotmail.com>
Committed: Mon Dec 26 11:18:03 2016 +0200

----------------------------------------------------------------------
 .../flex/org/apache/flex/utils/DisplayUtils.as  | 24 ++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/85c08046/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 483ab41..ac66a19 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
@@ -19,7 +19,14 @@
 package org.apache.flex.utils
 {
        import org.apache.flex.core.IUIBase;
-       import org.apache.flex.geom.Rectangle
+       import org.apache.flex.geom.Rectangle;
+
+       COMPILE::JS 
+       {
+               import org.apache.flex.geom.Matrix;
+               import org.apache.flex.geom.Point;
+               import org.apache.flex.core.ITransformHost;
+       }
        /**
         *  The SpriteUtils class is a collection of static functions that are 
useful
         *  for geometric operations on visible objects.
@@ -42,6 +49,7 @@ package org.apache.flex.utils
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
          *  @flexjsignorecoercion HTMLElement
+         *  @flexjsignorecoercion ITransformHost
                 */
                public static function 
getScreenBoundingRect(obj:IUIBase):Rectangle
                {
@@ -53,9 +61,21 @@ package org.apache.flex.utils
                        COMPILE::JS
                        {
                                var r:Object = (obj.element as 
HTMLElement).getBoundingClientRect();
-                               var bounds:Rectangle = new Rectangle(r.x, r.y, 
r.width, r.height);
+                               var bounds:Rectangle = new Rectangle(r.left, 
r.top, r.right - r.left, r.bottom - r.top);
                                bounds.x -= window.pageXOffset;
                                bounds.y -= window.pageYOffset;
+                               if (obj.element instanceof SVGElement)
+                               {
+                                       var svgElement:Object = (obj as 
ITransformHost).transformElement as Object;
+                                       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 br:Point = 
m.transformPoint(bounds.bottomRight);
+                                       bounds.top = tl.y;
+                                       bounds.left = tl.x;
+                                       bounds.bottom = br.y;
+                                       bounds.right = br.x;
+                               }
                                return bounds;
                        }
                }

Reply via email to