/** * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`. * @typedef {Array} Extent * @api */ /** * Extent corner. * @typedef {'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'} Corner */ /** * Build an extent that includes all given coordinates. * * @param {Array} coordinates Coordinates. * @return {Extent} Bounding extent. * @api */ export function boundingExtent(coordinates: Array): Extent; /** * Return extent increased by the provided value. * @param {Extent} extent Extent. * @param {number} value The amount by which the extent should be buffered. * @param {Extent} [dest] Extent. * @return {Extent} Extent. * @api */ export function buffer(extent: Extent, value: number, dest?: Extent): Extent; /** * Creates a clone of an extent. * * @param {Extent} extent Extent to clone. * @param {Extent} [dest] Extent. * @return {Extent} The clone. */ export function clone(extent: Extent, dest?: Extent): Extent; /** * @param {Extent} extent Extent. * @param {number} x X. * @param {number} y Y. * @return {number} Closest squared distance. */ export function closestSquaredDistanceXY(extent: Extent, x: number, y: number): number; /** * Check if the passed coordinate is contained or on the edge of the extent. * * @param {Extent} extent Extent. * @param {import("./coordinate.js").Coordinate} coordinate Coordinate. * @return {boolean} The coordinate is contained in the extent. * @api */ export function containsCoordinate(extent: Extent, coordinate: import("./coordinate.js").Coordinate): boolean; /** * Check if one extent contains another. * * An extent is deemed contained if it lies completely within the other extent, * including if they share one or more edges. * * @param {Extent} extent1 Extent 1. * @param {Extent} extent2 Extent 2. * @return {boolean} The second extent is contained by or on the edge of the * first. * @api */ export function containsExtent(extent1: Extent, extent2: Extent): boolean; /** * Check if the passed coordinate is contained or on the edge of the extent. * * @param {Extent} extent Extent. * @param {number} x X coordinate. * @param {number} y Y coordinate. * @return {boolean} The x, y values are contained in the extent. * @api */ export function containsXY(extent: Extent, x: number, y: number): boolean; /** * Get the relationship between a coordinate and extent. * @param {Extent} extent The extent. * @param {import("./coordinate.js").Coordinate} coordinate The coordinate. * @return {import("./extent/Relationship.js").default} The relationship (bitwise compare with * import("./extent/Relationship.js").Relationship). */ export function coordinateRelationship(extent: Extent, coordinate: import("./coordinate.js").Coordinate): any; /** * Create an empty extent. * @return {Extent} Empty extent. * @api */ export function createEmpty(): Extent; /** * Create a new extent or update the provided extent. * @param {number} minX Minimum X. * @param {number} minY Minimum Y. * @param {number} maxX Maximum X. * @param {number} maxY Maximum Y. * @param {Extent} [dest] Destination extent. * @return {Extent} Extent. */ export function createOrUpdate(minX: number, minY: number, maxX: number, maxY: number, dest?: Extent): Extent; /** * Create a new empty extent or make the provided one empty. * @param {Extent} [dest] Extent. * @return {Extent} Extent. */ export function createOrUpdateEmpty(dest?: Extent): Extent; /** * @param {import("./coordinate.js").Coordinate} coordinate Coordinate. * @param {Extent} [dest] Extent. * @return {Extent} Extent. */ export function createOrUpdateFromCoordinate(coordinate: import("./coordinate.js").Coordinate, dest?: Extent): Extent; /** * @param {Array} coordinates Coordinates. * @param {Extent} [dest] Extent. * @return {Extent} Extent. */ export function createOrUpdateFromCoordinates(coordinates: Array, dest?: Extent): Extent; /** * @param {Array} flatCoordinates Flat coordinates. * @param {number} offset Offset. * @param {number} end End. * @param {number} stride Stride. * @param {Extent} [dest] Extent. * @return {Extent} Extent. */ export function createOrUpdateFromFlatCoordinates(flatCoordinates: Array, offset: number, end: number, stride: number, dest?: Extent): Extent; /** * @param {Array>} rings Rings. * @param {Extent} [dest] Extent. * @return {Extent} Extent. */ export function createOrUpdateFromRings(rings: Array>, dest?: Extent): Extent; /** * Determine if two extents are equivalent. * @param {Extent} extent1 Extent 1. * @param {Extent} extent2 Extent 2. * @return {boolean} The two extents are equivalent. * @api */ export function equals(extent1: Extent, extent2: Extent): boolean; /** * Determine if two extents are approximately equivalent. * @param {Extent} extent1 Extent 1. * @param {Extent} extent2 Extent 2. * @param {number} tolerance Tolerance in extent coordinate units. * @return {boolean} The two extents differ by less than the tolerance. */ export function approximatelyEquals(extent1: Extent, extent2: Extent, tolerance: number): boolean; /** * Modify an extent to include another extent. * @param {Extent} extent1 The extent to be modified. * @param {Extent} extent2 The extent that will be included in the first. * @return {Extent} A reference to the first (extended) extent. * @api */ export function extend(extent1: Extent, extent2: Extent): Extent; /** * @param {Extent} extent Extent. * @param {import("./coordinate.js").Coordinate} coordinate Coordinate. */ export function extendCoordinate(extent: Extent, coordinate: import("./coordinate.js").Coordinate): void; /** * @param {Extent} extent Extent. * @param {Array} coordinates Coordinates. * @return {Extent} Extent. */ export function extendCoordinates(extent: Extent, coordinates: Array): Extent; /** * @param {Extent} extent Extent. * @param {Array} flatCoordinates Flat coordinates. * @param {number} offset Offset. * @param {number} end End. * @param {number} stride Stride. * @return {Extent} Extent. */ export function extendFlatCoordinates(extent: Extent, flatCoordinates: Array, offset: number, end: number, stride: number): Extent; /** * @param {Extent} extent Extent. * @param {Array>} rings Rings. * @return {Extent} Extent. */ export function extendRings(extent: Extent, rings: Array>): Extent; /** * @param {Extent} extent Extent. * @param {number} x X. * @param {number} y Y. */ export function extendXY(extent: Extent, x: number, y: number): void; /** * This function calls `callback` for each corner of the extent. If the * callback returns a truthy value the function returns that value * immediately. Otherwise the function returns `false`. * @param {Extent} extent Extent. * @param {function(import("./coordinate.js").Coordinate): S} callback Callback. * @return {S|boolean} Value. * @template S */ export function forEachCorner(extent: Extent, callback: (arg0: import("./coordinate.js").Coordinate) => S): S | boolean; /** * Get the size of an extent. * @param {Extent} extent Extent. * @return {number} Area. * @api */ export function getArea(extent: Extent): number; /** * Get the bottom left coordinate of an extent. * @param {Extent} extent Extent. * @return {import("./coordinate.js").Coordinate} Bottom left coordinate. * @api */ export function getBottomLeft(extent: Extent): import("./coordinate.js").Coordinate; /** * Get the bottom right coordinate of an extent. * @param {Extent} extent Extent. * @return {import("./coordinate.js").Coordinate} Bottom right coordinate. * @api */ export function getBottomRight(extent: Extent): import("./coordinate.js").Coordinate; /** * Get the center coordinate of an extent. * @param {Extent} extent Extent. * @return {import("./coordinate.js").Coordinate} Center. * @api */ export function getCenter(extent: Extent): import("./coordinate.js").Coordinate; /** * Get a corner coordinate of an extent. * @param {Extent} extent Extent. * @param {Corner} corner Corner. * @return {import("./coordinate.js").Coordinate} Corner coordinate. */ export function getCorner(extent: Extent, corner: Corner): import("./coordinate.js").Coordinate; /** * @param {Extent} extent1 Extent 1. * @param {Extent} extent2 Extent 2. * @return {number} Enlarged area. */ export function getEnlargedArea(extent1: Extent, extent2: Extent): number; /** * @param {import("./coordinate.js").Coordinate} center Center. * @param {number} resolution Resolution. * @param {number} rotation Rotation. * @param {import("./size.js").Size} size Size. * @param {Extent} [dest] Destination extent. * @return {Extent} Extent. */ export function getForViewAndSize(center: import("./coordinate.js").Coordinate, resolution: number, rotation: number, size: import("./size.js").Size, dest?: Extent): Extent; /** * @param {import("./coordinate.js").Coordinate} center Center. * @param {number} resolution Resolution. * @param {number} rotation Rotation. * @param {import("./size.js").Size} size Size. * @return {Array} Linear ring representing the viewport. */ export function getRotatedViewport(center: import("./coordinate.js").Coordinate, resolution: number, rotation: number, size: import("./size.js").Size): Array; /** * Get the height of an extent. * @param {Extent} extent Extent. * @return {number} Height. * @api */ export function getHeight(extent: Extent): number; /** * @param {Extent} extent1 Extent 1. * @param {Extent} extent2 Extent 2. * @return {number} Intersection area. */ export function getIntersectionArea(extent1: Extent, extent2: Extent): number; /** * Get the intersection of two extents. * @param {Extent} extent1 Extent 1. * @param {Extent} extent2 Extent 2. * @param {Extent} [dest] Optional extent to populate with intersection. * @return {Extent} Intersecting extent. * @api */ export function getIntersection(extent1: Extent, extent2: Extent, dest?: Extent): Extent; /** * Get the difference between two extents, i.e. the area(s) of `extent1` that * are not covered by `extent2`. Returns an array of between 0 and 4 extents. * * When the extents do not intersect the returned array contains `extent1` as * its only element. When `extent2` completely contains `extent1` the returned * array is empty. Otherwise up to four non-overlapping extents are returned * that together cover exactly the parts of `extent1` outside `extent2`. * * The decomposition used is: * * ``` * ┌────┬─────────┬────┐ ← y2 * │ │ top │ │ * │ ├─────────┤ │ ← iy2 * │left│ (gone) │right│ * │ ├─────────┤ │ ← iy1 * │ │ bottom │ │ * └────┴─────────┴────┘ ← y1 * x1 ix1 ix2 x2 * ``` * * The left and right strips span the full height of `extent1` while the top * and bottom strips are clamped horizontally to the intersection, so the four * rectangles tile perfectly without overlap or gaps. * * @param {Extent} extent1 Extent to subtract from. * @param {Extent} extent2 Extent to subtract. * @return {Array} Remaining extents (0–4 elements). * @api */ export function getDifference(extent1: Extent, extent2: Extent): Array; /** * @param {Extent} extent Extent. * @return {number} Margin. */ export function getMargin(extent: Extent): number; /** * Get the size (width, height) of an extent. * @param {Extent} extent The extent. * @return {import("./size.js").Size} The extent size. * @api */ export function getSize(extent: Extent): import("./size.js").Size; /** * Get the top left coordinate of an extent. * @param {Extent} extent Extent. * @return {import("./coordinate.js").Coordinate} Top left coordinate. * @api */ export function getTopLeft(extent: Extent): import("./coordinate.js").Coordinate; /** * Get the top right coordinate of an extent. * @param {Extent} extent Extent. * @return {import("./coordinate.js").Coordinate} Top right coordinate. * @api */ export function getTopRight(extent: Extent): import("./coordinate.js").Coordinate; /** * Get the width of an extent. * @param {Extent} extent Extent. * @return {number} Width. * @api */ export function getWidth(extent: Extent): number; /** * Determine if one extent intersects another. * @param {Extent} extent1 Extent 1. * @param {Extent} extent2 Extent. * @return {boolean} The two extents intersect. * @api */ export function intersects(extent1: Extent, extent2: Extent): boolean; /** * Determine if an extent is empty. * @param {Extent} extent Extent. * @return {boolean} Is empty. * @api */ export function isEmpty(extent: Extent): boolean; /** * @param {Extent} extent Extent. * @param {Extent} [dest] Extent. * @return {Extent} Extent. */ export function returnOrUpdate(extent: Extent, dest?: Extent): Extent; /** * @param {Extent} extent Extent. * @param {number} value Value. */ export function scaleFromCenter(extent: Extent, value: number): void; /** * Determine if the segment between two coordinates intersects (crosses, * touches, or is contained by) the provided extent. * @param {Extent} extent The extent. * @param {import("./coordinate.js").Coordinate} start Segment start coordinate. * @param {import("./coordinate.js").Coordinate} end Segment end coordinate. * @return {boolean} The segment intersects the extent. */ export function intersectsSegment(extent: Extent, start: import("./coordinate.js").Coordinate, end: import("./coordinate.js").Coordinate): boolean; /** * Apply a transform function to the extent. * @param {Extent} extent Extent. * @param {import("./proj.js").TransformFunction} transformFn Transform function. * Called with `[minX, minY, maxX, maxY]` extent coordinates. * @param {Extent} [dest] Destination extent. * @param {number} [stops] Number of stops per side used for the transform. * By default only the corners are used. * @return {Extent} Extent. * @api */ export function applyTransform(extent: Extent, transformFn: import("./proj.js").TransformFunction, dest?: Extent, stops?: number): Extent; /** * Modifies the provided extent in-place to be within the real world * extent. * * @param {Extent} extent Extent. * @param {import("./proj/Projection.js").default} projection Projection * @return {Extent} The extent within the real world extent. */ export function wrapX(extent: Extent, projection: import("./proj/Projection.js").default): Extent; /** * Fits the extent to the real world * * If the extent does not cross the anti meridian, this will return the extent in an array * If the extent crosses the anti meridian, the extent will be sliced, so each part fits within the * real world * * * @param {Extent} extent Extent. * @param {import("./proj/Projection.js").default} projection Projection * @param {boolean} [multiWorld] Return all worlds * @return {Array} The extent within the real world extent. */ export function wrapAndSliceX(extent: Extent, projection: import("./proj/Projection.js").default, multiWorld?: boolean): Array; /** * Subtract several rectangles from a base rectangle. Returns a set of disjoint * rectangles that together cover the base rectangle minus the union of the * subtracted rectangles, by repeatedly applying {@link module:ol/extent.getDifference}. * @param {Extent} base Base rectangle. * @param {Array} subtract Rectangles to subtract. * @return {Array} Remainder rectangles. */ export function subtractExtents(base: Extent, subtract: Array): Array; /** * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`. */ export type Extent = Array; /** * Extent corner. */ export type Corner = "bottom-left" | "bottom-right" | "top-left" | "top-right"; //# sourceMappingURL=extent.d.ts.map