openlayers
Version:
Build tools and sources for developing OpenLayers based mapping applications
69 lines (60 loc) • 1.69 kB
JavaScript
goog.provide('ol.size');
/**
* Returns a buffered size.
* @param {ol.Size} size Size.
* @param {number} buffer Buffer.
* @param {ol.Size=} opt_size Optional reusable size array.
* @return {ol.Size} The buffered size.
*/
ol.size.buffer = function(size, buffer, opt_size) {
if (opt_size === undefined) {
opt_size = [0, 0];
}
opt_size[0] = size[0] + 2 * buffer;
opt_size[1] = size[1] + 2 * buffer;
return opt_size;
};
/**
* Determines if a size has a positive area.
* @param {ol.Size} size The size to test.
* @return {boolean} The size has a positive area.
*/
ol.size.hasArea = function(size) {
return size[0] > 0 && size[1] > 0;
};
/**
* Returns a size scaled by a ratio. The result will be an array of integers.
* @param {ol.Size} size Size.
* @param {number} ratio Ratio.
* @param {ol.Size=} opt_size Optional reusable size array.
* @return {ol.Size} The scaled size.
*/
ol.size.scale = function(size, ratio, opt_size) {
if (opt_size === undefined) {
opt_size = [0, 0];
}
opt_size[0] = (size[0] * ratio + 0.5) | 0;
opt_size[1] = (size[1] * ratio + 0.5) | 0;
return opt_size;
};
/**
* Returns an `ol.Size` array for the passed in number (meaning: square) or
* `ol.Size` array.
* (meaning: non-square),
* @param {number|ol.Size} size Width and height.
* @param {ol.Size=} opt_size Optional reusable size array.
* @return {ol.Size} Size.
* @api stable
*/
ol.size.toSize = function(size, opt_size) {
if (Array.isArray(size)) {
return size;
} else {
if (opt_size === undefined) {
opt_size = [size, size];
} else {
opt_size[0] = opt_size[1] = /** @type {number} */ (size);
}
return opt_size;
}
};