You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.5 KiB
96 lines
2.5 KiB
/**
|
|
* @module ol/geom/flat/inflate
|
|
*/
|
|
|
|
/**
|
|
* @param {Array<number>} flatCoordinates Flat coordinates.
|
|
* @param {number} offset Offset.
|
|
* @param {number} end End.
|
|
* @param {number} stride Stride.
|
|
* @param {Array<import("../../coordinate.js").Coordinate>} [coordinates] Coordinates.
|
|
* @return {Array<import("../../coordinate.js").Coordinate>} Coordinates.
|
|
*/
|
|
export function inflateCoordinates(
|
|
flatCoordinates,
|
|
offset,
|
|
end,
|
|
stride,
|
|
coordinates
|
|
) {
|
|
coordinates = coordinates !== undefined ? coordinates : [];
|
|
let i = 0;
|
|
for (let j = offset; j < end; j += stride) {
|
|
coordinates[i++] = flatCoordinates.slice(j, j + stride);
|
|
}
|
|
coordinates.length = i;
|
|
return coordinates;
|
|
}
|
|
|
|
/**
|
|
* @param {Array<number>} flatCoordinates Flat coordinates.
|
|
* @param {number} offset Offset.
|
|
* @param {Array<number>} ends Ends.
|
|
* @param {number} stride Stride.
|
|
* @param {Array<Array<import("../../coordinate.js").Coordinate>>} [coordinatess] Coordinatess.
|
|
* @return {Array<Array<import("../../coordinate.js").Coordinate>>} Coordinatess.
|
|
*/
|
|
export function inflateCoordinatesArray(
|
|
flatCoordinates,
|
|
offset,
|
|
ends,
|
|
stride,
|
|
coordinatess
|
|
) {
|
|
coordinatess = coordinatess !== undefined ? coordinatess : [];
|
|
let i = 0;
|
|
for (let j = 0, jj = ends.length; j < jj; ++j) {
|
|
const end = ends[j];
|
|
coordinatess[i++] = inflateCoordinates(
|
|
flatCoordinates,
|
|
offset,
|
|
end,
|
|
stride,
|
|
coordinatess[i]
|
|
);
|
|
offset = end;
|
|
}
|
|
coordinatess.length = i;
|
|
return coordinatess;
|
|
}
|
|
|
|
/**
|
|
* @param {Array<number>} flatCoordinates Flat coordinates.
|
|
* @param {number} offset Offset.
|
|
* @param {Array<Array<number>>} endss Endss.
|
|
* @param {number} stride Stride.
|
|
* @param {Array<Array<Array<import("../../coordinate.js").Coordinate>>>} [coordinatesss]
|
|
* Coordinatesss.
|
|
* @return {Array<Array<Array<import("../../coordinate.js").Coordinate>>>} Coordinatesss.
|
|
*/
|
|
export function inflateMultiCoordinatesArray(
|
|
flatCoordinates,
|
|
offset,
|
|
endss,
|
|
stride,
|
|
coordinatesss
|
|
) {
|
|
coordinatesss = coordinatesss !== undefined ? coordinatesss : [];
|
|
let i = 0;
|
|
for (let j = 0, jj = endss.length; j < jj; ++j) {
|
|
const ends = endss[j];
|
|
coordinatesss[i++] =
|
|
ends.length === 1 && ends[0] === offset
|
|
? []
|
|
: inflateCoordinatesArray(
|
|
flatCoordinates,
|
|
offset,
|
|
ends,
|
|
stride,
|
|
coordinatesss[i]
|
|
);
|
|
offset = ends[ends.length - 1];
|
|
}
|
|
coordinatesss.length = i;
|
|
return coordinatesss;
|
|
}
|