Upgrade to ExtJS 3.1.1 - Released 02/08/2010
[extjs.git] / src / adapter / core / ext-base-region.js
1 /*!
2  * Ext JS Library 3.1.1
3  * Copyright(c) 2006-2010 Ext JS, LLC
4  * licensing@extjs.com
5  * http://www.extjs.com/license
6  */
7         Ext.lib.Region = function(t, r, b, l) {\r
8                 var me = this;\r
9         me.top = t;\r
10         me[1] = t;\r
11         me.right = r;\r
12         me.bottom = b;\r
13         me.left = l;\r
14         me[0] = l;\r
15     };\r
16 \r
17     Ext.lib.Region.prototype = {\r
18         contains : function(region) {\r
19                 var me = this;\r
20             return ( region.left >= me.left &&\r
21                      region.right <= me.right &&\r
22                      region.top >= me.top &&\r
23                      region.bottom <= me.bottom );\r
24 \r
25         },\r
26 \r
27         getArea : function() {\r
28                 var me = this;\r
29             return ( (me.bottom - me.top) * (me.right - me.left) );\r
30         },\r
31 \r
32         intersect : function(region) {\r
33             var me = this,\r
34                 t = Math.max(me.top, region.top),\r
35                 r = Math.min(me.right, region.right),\r
36                 b = Math.min(me.bottom, region.bottom),\r
37                 l = Math.max(me.left, region.left);\r
38 \r
39             if (b >= t && r >= l) {\r
40                 return new Ext.lib.Region(t, r, b, l);\r
41             }\r
42         },\r
43         \r
44         union : function(region) {\r
45                 var me = this,\r
46                 t = Math.min(me.top, region.top),\r
47                 r = Math.max(me.right, region.right),\r
48                 b = Math.max(me.bottom, region.bottom),\r
49                 l = Math.min(me.left, region.left);\r
50 \r
51             return new Ext.lib.Region(t, r, b, l);\r
52         },\r
53 \r
54         constrainTo : function(r) {\r
55                 var me = this;\r
56             me.top = me.top.constrain(r.top, r.bottom);\r
57             me.bottom = me.bottom.constrain(r.top, r.bottom);\r
58             me.left = me.left.constrain(r.left, r.right);\r
59             me.right = me.right.constrain(r.left, r.right);\r
60             return me;\r
61         },\r
62 \r
63         adjust : function(t, l, b, r) {\r
64                 var me = this;\r
65             me.top += t;\r
66             me.left += l;\r
67             me.right += r;\r
68             me.bottom += b;\r
69             return me;\r
70         }\r
71     };\r
72 \r
73     Ext.lib.Region.getRegion = function(el) {\r
74         var p = Ext.lib.Dom.getXY(el),\r
75                 t = p[1],\r
76                 r = p[0] + el.offsetWidth,\r
77                 b = p[1] + el.offsetHeight,\r
78                 l = p[0];\r
79 \r
80         return new Ext.lib.Region(t, r, b, l);\r
81     };