import { createEmpty, extendFlatCoordinates, forEachCorner, intersects, intersectsSegment } from "./chunk-CKDBVGKM.js"; // node_modules/ol/geom/flat/segments.js function forEach(flatCoordinates, offset, end, stride, callback) { let ret; offset += stride; for (; offset < end; offset += stride) { ret = callback( flatCoordinates.slice(offset - stride, offset), flatCoordinates.slice(offset, offset + stride) ); if (ret) { return ret; } } return false; } // node_modules/ol/geom/flat/contains.js function linearRingContainsExtent(flatCoordinates, offset, end, stride, extent) { const outside = forEachCorner( extent, /** * @param {import("../../coordinate.js").Coordinate} coordinate Coordinate. * @return {boolean} Contains (x, y). */ function(coordinate) { return !linearRingContainsXY( flatCoordinates, offset, end, stride, coordinate[0], coordinate[1] ); } ); return !outside; } function linearRingContainsXY(flatCoordinates, offset, end, stride, x, y) { let wn = 0; let x1 = flatCoordinates[end - stride]; let y1 = flatCoordinates[end - stride + 1]; for (; offset < end; offset += stride) { const x2 = flatCoordinates[offset]; const y2 = flatCoordinates[offset + 1]; if (y1 <= y) { if (y2 > y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) > 0) { wn++; } } else if (y2 <= y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) < 0) { wn--; } x1 = x2; y1 = y2; } return wn !== 0; } function linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y) { if (ends.length === 0) { return false; } if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) { return false; } for (let i = 1, ii = ends.length; i < ii; ++i) { if (linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) { return false; } } return true; } function linearRingssContainsXY(flatCoordinates, offset, endss, stride, x, y) { if (endss.length === 0) { return false; } for (let i = 0, ii = endss.length; i < ii; ++i) { const ends = endss[i]; if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) { return true; } offset = ends[ends.length - 1]; } return false; } // node_modules/ol/geom/flat/intersectsextent.js function intersectsLineString(flatCoordinates, offset, end, stride, extent, coordinatesExtent) { coordinatesExtent = coordinatesExtent ?? extendFlatCoordinates(createEmpty(), flatCoordinates, offset, end, stride); if (!intersects(extent, coordinatesExtent)) { return false; } if (coordinatesExtent[0] >= extent[0] && coordinatesExtent[2] <= extent[2] || coordinatesExtent[1] >= extent[1] && coordinatesExtent[3] <= extent[3]) { return true; } return forEach( flatCoordinates, offset, end, stride, /** * @param {import("../../coordinate.js").Coordinate} point1 Start point. * @param {import("../../coordinate.js").Coordinate} point2 End point. * @return {boolean} `true` if the segment and the extent intersect, * `false` otherwise. */ function(point1, point2) { return intersectsSegment(extent, point1, point2); } ); } function intersectsLineStringArray(flatCoordinates, offset, ends, stride, extent) { for (let i = 0, ii = ends.length; i < ii; ++i) { if (intersectsLineString(flatCoordinates, offset, ends[i], stride, extent)) { return true; } offset = ends[i]; } return false; } function intersectsLinearRing(flatCoordinates, offset, end, stride, extent) { if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) { return true; } if (linearRingContainsXY( flatCoordinates, offset, end, stride, extent[0], extent[1] )) { return true; } if (linearRingContainsXY( flatCoordinates, offset, end, stride, extent[0], extent[3] )) { return true; } if (linearRingContainsXY( flatCoordinates, offset, end, stride, extent[2], extent[1] )) { return true; } if (linearRingContainsXY( flatCoordinates, offset, end, stride, extent[2], extent[3] )) { return true; } return false; } function intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent) { if (!intersectsLinearRing(flatCoordinates, offset, ends[0], stride, extent)) { return false; } if (ends.length === 1) { return true; } for (let i = 1, ii = ends.length; i < ii; ++i) { if (linearRingContainsExtent( flatCoordinates, ends[i - 1], ends[i], stride, extent )) { if (!intersectsLineString( flatCoordinates, ends[i - 1], ends[i], stride, extent )) { return false; } } } return true; } function intersectsLinearRingMultiArray(flatCoordinates, offset, endss, stride, extent) { for (let i = 0, ii = endss.length; i < ii; ++i) { const ends = endss[i]; if (intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)) { return true; } offset = ends[ends.length - 1]; } return false; } export { linearRingsContainsXY, linearRingssContainsXY, forEach, intersectsLineString, intersectsLineStringArray, intersectsLinearRing, intersectsLinearRingArray, intersectsLinearRingMultiArray }; //# sourceMappingURL=chunk-YUSNUQO6.js.map