heli-agri
Version:
HeliAgri is a high-performance, feature-packed library for creating interactive maps on the web. It can display map tiles, vector data and markers loaded from any source on any web page. OpenLayers has been developed to further the use of geographic infor
73 lines (67 loc) • 1.71 kB
JavaScript
/**
* @module ol/size
*/
/**
* An array of numbers representing a size: `[width, height]`.
* @typedef {Array<number>} Size
* @api
*/
/**
* Returns a buffered size.
* @param {Size} size Size.
* @param {number} num The amount by which to buffer.
* @param {Size} [dest] Optional reusable size array.
* @return {Size} The buffered size.
*/
export function buffer(size, num, dest) {
if (dest === undefined) {
dest = [0, 0];
}
dest[0] = size[0] + 2 * num;
dest[1] = size[1] + 2 * num;
return dest;
}
/**
* Determines if a size has a positive area.
* @param {Size} size The size to test.
* @return {boolean} The size has a positive area.
*/
export function hasArea(size) {
return size[0] > 0 && size[1] > 0;
}
/**
* Returns a size scaled by a ratio. The result will be an array of integers.
* @param {Size} size Size.
* @param {number} ratio Ratio.
* @param {Size} [dest] Optional reusable size array.
* @return {Size} The scaled size.
*/
export function scale(size, ratio, dest) {
if (dest === undefined) {
dest = [0, 0];
}
dest[0] = (size[0] * ratio + 0.5) | 0;
dest[1] = (size[1] * ratio + 0.5) | 0;
return dest;
}
/**
* Returns an `Size` array for the passed in number (meaning: square) or
* `Size` array.
* (meaning: non-square),
* @param {number|Size} size Width and height.
* @param {Size} [dest] Optional reusable size array.
* @return {Size} Size.
* @api
*/
export function toSize(size, dest) {
if (Array.isArray(size)) {
return size;
}
if (dest === undefined) {
dest = [size, size];
} else {
dest[0] = size;
dest[1] = size;
}
return dest;
}