{ "type": "class",
  "qname": "org.apache.royale.utils.DisplayUtils",
  "baseClassname": ""
  ,
    "description": "The SpriteUtils class is a collection of static functions that are useful for geometric operations on visible objects.",
  "tags": [
  {  "tagName": "playerversion",
         "values": ["Flash 10.2", "AIR 2.6"]},
      {  "tagName": "productversion",
         "values": ["Royale 0.7"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "method",
        "qname": "getScreenBoundingRect",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Gets the bounding box of an object relative to the screen ignoring any scrolling.",
        "tags": [
        {  "tagName": "param",
               "values": ["obj The object to test."]},
            {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.0"]},
            {  "tagName": "royaleignorecoercion",
               "values": ["HTMLElement", "ITransformHost"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "org.apache.royale.geom.Rectangle",
          "params": [{ "name": "obj", "type": "org.apache.royale.core.IUIBase"},
        { "name": "boundsBeforeTransform", "type": "org.apache.royale.geom.Rectangle"}]}
      ,
      { "type": "method",
        "qname": "getTransormMatrix",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Gets a composition all transform matrices applied to an IUIBase. Currently only works for SVG on JS side.",
        "tags": [
        {  "tagName": "param",
               "values": ["obj The object to test."]},
            {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.0"]},
            {  "tagName": "royaleignorecoercion",
               "values": ["HTMLElement", "org.apache.royale.core.ITransformHost"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "org.apache.royale.geom.Matrix",
          "params": [{ "name": "obj", "type": "org.apache.royale.core.IUIBase"}]}
      ,
      { "type": "method",
        "qname": "objectsOverlap",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Evaluates the bounding box of two objects to see if thier bounding boxes overlap.",
        "tags": [
        {  "tagName": "param",
               "values": ["obj1 The object to test.", "obj2 The object to test against."]},
            {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.0"]},
            {  "tagName": "royaleignorecoercion",
               "values": ["HTMLElement"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Boolean",
          "params": [{ "name": "obj1", "type": "org.apache.royale.core.IUIBase"},
        { "name": "obj2", "type": "org.apache.royale.core.IUIBase"}]}
      ,
      { "type": "method",
        "qname": "hitTestPoint",
        "namespace": "public",
        "bindable": [],
        "details": ["static"],
        "deprecated": {},
          "description": "Evaluates the object to see if it overlaps or intersects with the point specified by the x and y parameters. The x and y parameters specify a point in the top level coordinate space, not the container that contains the object being tested (unless parent is the top level).",
        "tags": [
        {  "tagName": "param",
               "values": ["x The x coordinate to test against this object.", "y The y coordinate to test against this object.", "obj The object to test."]},
            {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.0"]},
            {  "tagName": "royaleignorecoercion",
               "values": ["HTMLElement"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "Boolean",
          "params": [{ "name": "x", "type": "Number"},
        { "name": "y", "type": "Number"},
        { "name": "obj", "type": "org.apache.royale.core.IUIBase"}]}
      ]
  }
