In some situation you would like to reassure that given Rectangle object have “top-down, left-right” order you can do it using following two snippets
this creates “normalized” copy of the given rectangle
/**
* Takes rectangle as a parameter and returns new with sorted edges, i.e. (x=50, y=50, w=-100, h=-100) becomes (x=-50, y=-50, w=100, h=100). In other words it makes sure that rectangles top and left are smaller than bottom and right respectively.
*
* @param p_oRect
* @return
*/
protected function normalizeRect(p_oRect:Rectangle):Rectangle
{
var nr:Rectangle = new Rectangle();
nr.top = Math.min(p_oRect.top, p_oRect.bottom);
nr.bottom = Math.max(p_oRect.top, p_oRect.bottom);
nr.left = Math.min(p_oRect.left, p_oRect.right);
nr.right = Math.max(p_oRect.left, p_oRect.right);
return nr;
}
this modifies given rectangle directly
/**
* Modifies the rectangle given in parameter and makes sure that edges are sorted, i.e. (x=50, y=50, w=-100, h=-100) becomes (x=-50, y=-50, w=100, h=100). In other words it makes sure that rectangles top and left are smaller than bottom and right respectively.
* This method works directly on the object without making a copy.
* @param p_oRectRef
*/
protected function normalizeRectV2(p_oRectRef:Rectangle):void
{
var _nSwap:Number;
_nSwap = p_oRectRef.top;
p_oRectRef.top = Math.min(_nSwap, p_oRectRef.bottom);
p_oRectRef.bottom = Math.max(_nSwap, p_oRectRef.top);
_nSwap = p_oRectRef.left;
p_oRectRef.left = Math.min(_nSwap, p_oRectRef.right);
p_oRectRef.right = Math.max(_nSwap, p_oRectRef.left);
}