diff --git a/src/ol/geom/MultiPolygon.js b/src/ol/geom/MultiPolygon.js index 60bc7fe335..d2e47f058b 100644 --- a/src/ol/geom/MultiPolygon.js +++ b/src/ol/geom/MultiPolygon.js @@ -12,7 +12,7 @@ import SimpleGeometry from '../geom/SimpleGeometry.js'; import {linearRingss as linearRingssArea} from '../geom/flat/area.js'; import _ol_geom_flat_center_ from '../geom/flat/center.js'; import _ol_geom_flat_closest_ from '../geom/flat/closest.js'; -import _ol_geom_flat_contains_ from '../geom/flat/contains.js'; +import {linearRingssContainsXY} from '../geom/flat/contains.js'; import _ol_geom_flat_deflate_ from '../geom/flat/deflate.js'; import _ol_geom_flat_inflate_ from '../geom/flat/inflate.js'; import _ol_geom_flat_interiorpoint_ from '../geom/flat/interiorpoint.js'; @@ -151,8 +151,7 @@ MultiPolygon.prototype.closestPointXY = function(x, y, closestPoint, minSquaredD * @inheritDoc */ MultiPolygon.prototype.containsXY = function(x, y) { - return _ol_geom_flat_contains_.linearRingssContainsXY( - this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, x, y); + return linearRingssContainsXY(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, x, y); }; diff --git a/src/ol/geom/Polygon.js b/src/ol/geom/Polygon.js index b85d4637c4..388b5ec39b 100644 --- a/src/ol/geom/Polygon.js +++ b/src/ol/geom/Polygon.js @@ -12,7 +12,7 @@ import SimpleGeometry from '../geom/SimpleGeometry.js'; import {offset as sphereOffset} from '../sphere.js'; import {linearRings as linearRingsArea} from '../geom/flat/area.js'; import _ol_geom_flat_closest_ from '../geom/flat/closest.js'; -import _ol_geom_flat_contains_ from '../geom/flat/contains.js'; +import {linearRingsContainsXY} from '../geom/flat/contains.js'; import _ol_geom_flat_deflate_ from '../geom/flat/deflate.js'; import _ol_geom_flat_inflate_ from '../geom/flat/inflate.js'; import _ol_geom_flat_interiorpoint_ from '../geom/flat/interiorpoint.js'; @@ -141,8 +141,7 @@ Polygon.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDistan * @inheritDoc */ Polygon.prototype.containsXY = function(x, y) { - return _ol_geom_flat_contains_.linearRingsContainsXY( - this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y); + return linearRingsContainsXY(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y); }; diff --git a/src/ol/geom/flat/contains.js b/src/ol/geom/flat/contains.js index cd4c54bf8b..acc843e992 100644 --- a/src/ol/geom/flat/contains.js +++ b/src/ol/geom/flat/contains.js @@ -2,7 +2,6 @@ * @module ol/geom/flat/contains */ import {forEachCorner} from '../../extent.js'; -const _ol_geom_flat_contains_ = {}; /** @@ -13,18 +12,17 @@ const _ol_geom_flat_contains_ = {}; * @param {ol.Extent} extent Extent. * @return {boolean} Contains extent. */ -_ol_geom_flat_contains_.linearRingContainsExtent = function(flatCoordinates, offset, end, stride, extent) { +export function linearRingContainsExtent(flatCoordinates, offset, end, stride, extent) { const outside = forEachCorner(extent, /** - * @param {ol.Coordinate} coordinate Coordinate. - * @return {boolean} Contains (x, y). - */ + * @param {ol.Coordinate} coordinate Coordinate. + * @return {boolean} Contains (x, y). + */ function(coordinate) { - return !_ol_geom_flat_contains_.linearRingContainsXY(flatCoordinates, - offset, end, stride, coordinate[0], coordinate[1]); + return !linearRingContainsXY(flatCoordinates, offset, end, stride, coordinate[0], coordinate[1]); }); return !outside; -}; +} /** @@ -36,7 +34,7 @@ _ol_geom_flat_contains_.linearRingContainsExtent = function(flatCoordinates, off * @param {number} y Y. * @return {boolean} Contains (x, y). */ -_ol_geom_flat_contains_.linearRingContainsXY = function(flatCoordinates, offset, end, stride, x, y) { +export function linearRingContainsXY(flatCoordinates, offset, end, stride, x, y) { // http://geomalgorithms.com/a03-_inclusion.html // Copyright 2000 softSurfer, 2012 Dan Sunday // This code may be freely used and modified for any purpose @@ -61,7 +59,7 @@ _ol_geom_flat_contains_.linearRingContainsXY = function(flatCoordinates, offset, y1 = y2; } return wn !== 0; -}; +} /** @@ -73,22 +71,20 @@ _ol_geom_flat_contains_.linearRingContainsXY = function(flatCoordinates, offset, * @param {number} y Y. * @return {boolean} Contains (x, y). */ -_ol_geom_flat_contains_.linearRingsContainsXY = function(flatCoordinates, offset, ends, stride, x, y) { +export function linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y) { if (ends.length === 0) { return false; } - if (!_ol_geom_flat_contains_.linearRingContainsXY( - flatCoordinates, offset, ends[0], stride, x, y)) { + if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) { return false; } for (let i = 1, ii = ends.length; i < ii; ++i) { - if (_ol_geom_flat_contains_.linearRingContainsXY( - flatCoordinates, ends[i - 1], ends[i], stride, x, y)) { + if (linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) { return false; } } return true; -}; +} /** @@ -100,18 +96,16 @@ _ol_geom_flat_contains_.linearRingsContainsXY = function(flatCoordinates, offset * @param {number} y Y. * @return {boolean} Contains (x, y). */ -_ol_geom_flat_contains_.linearRingssContainsXY = function(flatCoordinates, offset, endss, stride, x, y) { +export 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 (_ol_geom_flat_contains_.linearRingsContainsXY( - flatCoordinates, offset, ends, stride, x, y)) { + if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) { return true; } offset = ends[ends.length - 1]; } return false; -}; -export default _ol_geom_flat_contains_; +} diff --git a/src/ol/geom/flat/interiorpoint.js b/src/ol/geom/flat/interiorpoint.js index 1c189648f9..8045d4980a 100644 --- a/src/ol/geom/flat/interiorpoint.js +++ b/src/ol/geom/flat/interiorpoint.js @@ -2,7 +2,7 @@ * @module ol/geom/flat/interiorpoint */ import {numberSafeCompareFunction} from '../../array.js'; -import _ol_geom_flat_contains_ from '../flat/contains.js'; +import {linearRingsContainsXY} from '../flat/contains.js'; const _ol_geom_flat_interiorpoint_ = {}; @@ -52,8 +52,7 @@ _ol_geom_flat_interiorpoint_.linearRings = function(flatCoordinates, offset, const segmentLength = Math.abs(x2 - x1); if (segmentLength > maxSegmentLength) { x = (x1 + x2) / 2; - if (_ol_geom_flat_contains_.linearRingsContainsXY( - flatCoordinates, offset, ends, stride, x, y)) { + if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) { pointX = x; maxSegmentLength = segmentLength; } diff --git a/src/ol/geom/flat/intersectsextent.js b/src/ol/geom/flat/intersectsextent.js index 911743f282..c12cc82eb7 100644 --- a/src/ol/geom/flat/intersectsextent.js +++ b/src/ol/geom/flat/intersectsextent.js @@ -2,7 +2,7 @@ * @module ol/geom/flat/intersectsextent */ import {containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment} from '../../extent.js'; -import _ol_geom_flat_contains_ from '../flat/contains.js'; +import {linearRingContainsXY, linearRingContainsExtent} from '../flat/contains.js'; import _ol_geom_flat_segments_ from '../flat/segments.js'; const _ol_geom_flat_intersectsextent_ = {}; @@ -78,20 +78,16 @@ _ol_geom_flat_intersectsextent_.linearRing = function(flatCoordinates, offset, e flatCoordinates, offset, end, stride, extent)) { return true; } - if (_ol_geom_flat_contains_.linearRingContainsXY( - flatCoordinates, offset, end, stride, extent[0], extent[1])) { + if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[1])) { return true; } - if (_ol_geom_flat_contains_.linearRingContainsXY( - flatCoordinates, offset, end, stride, extent[0], extent[3])) { + if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[3])) { return true; } - if (_ol_geom_flat_contains_.linearRingContainsXY( - flatCoordinates, offset, end, stride, extent[2], extent[1])) { + if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[1])) { return true; } - if (_ol_geom_flat_contains_.linearRingContainsXY( - flatCoordinates, offset, end, stride, extent[2], extent[3])) { + if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[3])) { return true; } return false; @@ -115,8 +111,7 @@ _ol_geom_flat_intersectsextent_.linearRings = function(flatCoordinates, offset, return true; } for (let i = 1, ii = ends.length; i < ii; ++i) { - if (_ol_geom_flat_contains_.linearRingContainsExtent( - flatCoordinates, ends[i - 1], ends[i], stride, extent)) { + if (linearRingContainsExtent(flatCoordinates, ends[i - 1], ends[i], stride, extent)) { return false; } } diff --git a/src/ol/render/webgl/PolygonReplay.js b/src/ol/render/webgl/PolygonReplay.js index dabce0cb48..433ae5634c 100644 --- a/src/ol/render/webgl/PolygonReplay.js +++ b/src/ol/render/webgl/PolygonReplay.js @@ -6,7 +6,7 @@ import {equals} from '../../array.js'; import {asArray} from '../../color.js'; import {intersects} from '../../extent.js'; import {isEmpty} from '../../obj.js'; -import _ol_geom_flat_contains_ from '../../geom/flat/contains.js'; +import {linearRingContainsXY} from '../../geom/flat/contains.js'; import _ol_geom_flat_orient_ from '../../geom/flat/orient.js'; import _ol_geom_flat_transform_ from '../../geom/flat/transform.js'; import _ol_render_webgl_polygonreplay_defaultshader_ from '../webgl/polygonreplay/defaultshader.js'; @@ -663,8 +663,7 @@ WebGLPolygonReplay.prototype.getPointsInTriangle_ = function(p0, p1, p2, rtree, if (typeof p === 'object' && (!opt_reflex || p.reflex)) { if ((p.x !== p0.x || p.y !== p0.y) && (p.x !== p1.x || p.y !== p1.y) && (p.x !== p2.x || p.y !== p2.y) && result.indexOf(p) === -1 && - _ol_geom_flat_contains_.linearRingContainsXY([p0.x, p0.y, p1.x, p1.y, - p2.x, p2.y], 0, 6, 2, p.x, p.y)) { + linearRingContainsXY([p0.x, p0.y, p1.x, p1.y, p2.x, p2.y], 0, 6, 2, p.x, p.y)) { result.push(p); } } diff --git a/test/spec/ol/geom/flat/contains.test.js b/test/spec/ol/geom/flat/contains.test.js index 3853f230b5..ae7411834e 100644 --- a/test/spec/ol/geom/flat/contains.test.js +++ b/test/spec/ol/geom/flat/contains.test.js @@ -1,4 +1,4 @@ -import _ol_geom_flat_contains_ from '../../../../../src/ol/geom/flat/contains.js'; +import {linearRingContainsXY} from '../../../../../src/ol/geom/flat/contains.js'; describe('ol.geom.flat.contains', function() { @@ -11,27 +11,27 @@ describe('ol.geom.flat.contains', function() { describe('ol.geom.flat.contains.linearRingContainsXY', function() { it('returns true for point inside a simple polygon', function() { - expect(_ol_geom_flat_contains_.linearRingContainsXY( + expect(linearRingContainsXY( flatCoordinatesSimple, 0, flatCoordinatesSimple.length, 2, 0.5, 0.5)).to.be(true); }); it('returns false for point outside a simple polygon', function() { - expect(_ol_geom_flat_contains_.linearRingContainsXY( + expect(linearRingContainsXY( flatCoordinatesSimple, 0, flatCoordinatesSimple.length, 2, 1.5, 1.5)).to.be(false); }); it('returns true for point inside a non-simple polygon', function() { - expect(_ol_geom_flat_contains_.linearRingContainsXY( + expect(linearRingContainsXY( flatCoordinatesNonSimple, 0, flatCoordinatesNonSimple.length, 2, 1, 1)).to.be(true); }); it('returns true for point inside an overlap of a non-simple polygon', function() { - expect(_ol_geom_flat_contains_.linearRingContainsXY( + expect(linearRingContainsXY( flatCoordinatesNonSimple, 0, flatCoordinatesNonSimple.length, 2, 1.5, 2.5)).to.be(true); }); it('returns false for a point inside a hole of a non-simple polygon', function() { - expect(_ol_geom_flat_contains_.linearRingContainsXY( + expect(linearRingContainsXY( flatCoordinatesNonSimple, 0, flatCoordinatesNonSimple.length, 2, 2.5, 1.5)).to.be(false); });