48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
/*
|
|
* L.Bounds represents a rectangular area on the screen in pixel coordinates.
|
|
*/
|
|
|
|
L.Bounds = L.Class.extend({
|
|
initialize: function(min, max) { //(Point, Point) or Point[]
|
|
if (!min) return;
|
|
var points = (min instanceof Array ? min : [min, max]);
|
|
for (var i = 0, len = points.length; i < len; i++) {
|
|
this.extend(points[i]);
|
|
}
|
|
},
|
|
|
|
// extend the bounds to contain the given point
|
|
extend: function(/*Point*/ point) {
|
|
if (!this.min && !this.max) {
|
|
this.min = new L.Point(point.x, point.y);
|
|
this.max = new L.Point(point.x, point.y);
|
|
} else {
|
|
this.min.x = Math.min(point.x, this.min.x);
|
|
this.max.x = Math.max(point.x, this.max.x);
|
|
this.min.y = Math.min(point.y, this.min.y);
|
|
this.max.y = Math.max(point.y, this.max.y);
|
|
}
|
|
},
|
|
|
|
getCenter: function(round)/*->Point*/ {
|
|
return new L.Point(
|
|
(this.min.x + this.max.x) / 2,
|
|
(this.min.y + this.max.y) / 2, round);
|
|
},
|
|
|
|
contains: function(/*Bounds or Point*/ obj)/*->Boolean*/ {
|
|
var min, max;
|
|
|
|
if (obj instanceof L.Bounds) {
|
|
min = obj.min;
|
|
max = obj.max;
|
|
} else {
|
|
max = max = obj;
|
|
}
|
|
|
|
return (min.x >= this.min.x) &&
|
|
(max.x <= this.max.x) &&
|
|
(min.y >= this.min.y) &&
|
|
(max.y <= this.max.y);
|
|
}
|
|
}); |