From 48af6ecd1c31e0b07680e08443fb89da39b477f2 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Wed, 12 Mar 2014 13:22:19 +0100 Subject: [PATCH] Factor out ol.geom.flat.center --- src/ol/geom/flat/centerflatgeom.js | 26 ++++++++++++++++++++++++++ src/ol/geom/flatgeom.js | 25 ------------------------- src/ol/geom/multipolygon.js | 3 ++- 3 files changed, 28 insertions(+), 26 deletions(-) create mode 100644 src/ol/geom/flat/centerflatgeom.js diff --git a/src/ol/geom/flat/centerflatgeom.js b/src/ol/geom/flat/centerflatgeom.js new file mode 100644 index 0000000000..81f24369ff --- /dev/null +++ b/src/ol/geom/flat/centerflatgeom.js @@ -0,0 +1,26 @@ +goog.provide('ol.geom.flat.center'); + +goog.require('ol.extent'); + + +/** + * @param {Array.} flatCoordinates Flat coordinates. + * @param {number} offset Offset. + * @param {Array.>} endss Endss. + * @param {number} stride Stride. + * @return {Array.} Flat centers. + */ +ol.geom.flat.center.linearRingss = + function(flatCoordinates, offset, endss, stride) { + var flatCenters = []; + var i, ii; + var extent = ol.extent.createEmpty(); + for (i = 0, ii = endss.length; i < ii; ++i) { + var ends = endss[i]; + extent = ol.extent.createOrUpdateFromFlatCoordinates( + flatCoordinates, offset, ends[0], stride); + flatCenters.push((extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2); + offset = ends[ends.length - 1]; + } + return flatCenters; +}; diff --git a/src/ol/geom/flatgeom.js b/src/ol/geom/flatgeom.js index 83bf883767..d94568448a 100644 --- a/src/ol/geom/flatgeom.js +++ b/src/ol/geom/flatgeom.js @@ -1,26 +1 @@ goog.provide('ol.geom.flat'); - -goog.require('ol.extent'); - - -/** - * @param {Array.} flatCoordinates Flat coordinates. - * @param {number} offset Offset. - * @param {Array.>} endss Endss. - * @param {number} stride Stride. - * @return {Array.} Flat centers. - */ -ol.geom.flat.linearRingssGetFlatCenters = - function(flatCoordinates, offset, endss, stride) { - var flatCenters = []; - var i, ii; - var extent = ol.extent.createEmpty(); - for (i = 0, ii = endss.length; i < ii; ++i) { - var ends = endss[i]; - extent = ol.extent.createOrUpdateFromFlatCoordinates( - flatCoordinates, offset, ends[0], stride); - flatCenters.push((extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2); - offset = ends[ends.length - 1]; - } - return flatCenters; -}; diff --git a/src/ol/geom/multipolygon.js b/src/ol/geom/multipolygon.js index e2197e32c2..b1dd3bad80 100644 --- a/src/ol/geom/multipolygon.js +++ b/src/ol/geom/multipolygon.js @@ -9,6 +9,7 @@ goog.require('ol.geom.Polygon'); goog.require('ol.geom.SimpleGeometry'); goog.require('ol.geom.flat'); goog.require('ol.geom.flat.area'); +goog.require('ol.geom.flat.center'); goog.require('ol.geom.flat.closest'); goog.require('ol.geom.flat.contains'); goog.require('ol.geom.flat.deflate'); @@ -176,7 +177,7 @@ ol.geom.MultiPolygon.prototype.getEndss = function() { */ ol.geom.MultiPolygon.prototype.getFlatInteriorPoints = function() { if (this.flatInteriorPointsRevision_ != this.getRevision()) { - var flatCenters = ol.geom.flat.linearRingssGetFlatCenters( + var flatCenters = ol.geom.flat.center.linearRingss( this.flatCoordinates, 0, this.endss_, this.stride); this.flatInteriorPoints_ = ol.geom.flat.interiorpoint.linearRingss( this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride,