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

/**
* @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;
}