From df48e2de5cd1e687c8174ffa9951631f23d562ce Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Sat, 9 Nov 2013 18:55:52 +0100 Subject: [PATCH] Refactor ol.geom.MultiPolygon --- src/ol/geom/multipolygon.js | 66 +++++++++------------------- src/ol/replay/canvas/canvasreplay.js | 2 +- 2 files changed, 22 insertions(+), 46 deletions(-) diff --git a/src/ol/geom/multipolygon.js b/src/ol/geom/multipolygon.js index 24205a9b0c..83c7a54d60 100644 --- a/src/ol/geom/multipolygon.js +++ b/src/ol/geom/multipolygon.js @@ -1,7 +1,5 @@ goog.provide('ol.geom.MultiPolygon'); -goog.require('goog.asserts'); -goog.require('ol.extent'); goog.require('ol.geom.Geometry'); @@ -9,44 +7,39 @@ goog.require('ol.geom.Geometry'); /** * @constructor * @extends {ol.geom.Geometry} - * @param {ol.geom.RawMultiPolygon} ringss Ringss. + * @param {ol.geom.RawMultiPolygon} coordinates Coordinates. + * @param {ol.geom.Layout=} opt_layout Layout. */ -ol.geom.MultiPolygon = function(ringss) { +ol.geom.MultiPolygon = function(coordinates, opt_layout) { goog.base(this); /** + * @type {Array.>} * @private - * @type {ol.geom.RawMultiPolygon} */ - this.ringss_ = ringss; + this.endss_ = []; + + this.setCoordinates(coordinates, opt_layout); }; goog.inherits(ol.geom.MultiPolygon, ol.geom.Geometry); /** - * @inheritDoc + * @return {ol.geom.RawMultiPolygon} Coordinates. */ -ol.geom.MultiPolygon.prototype.getExtent = function(opt_extent) { - if (this.extentRevision != this.revision) { - this.extent = ol.extent.createOrUpdateEmpty(this.extent); - var ringss = this.ringss_; - var i, ii; - for (i = 0, ii = ringss.length; i < ii; ++i) { - ol.extent.extendRings(this.extent, ringss[i]); - } - } - goog.asserts.assert(goog.isDef(this.extent)); - return ol.extent.returnOrUpdate(this.extent, opt_extent); +ol.geom.MultiPolygon.prototype.getCoordinates = function() { + return ol.geom.inflateCoordinatesss( + this.flatCoordinates, 0, this.endss_, this.stride); }; /** - * @return {ol.geom.RawMultiPolygon} Ringss. + * @return {Array.>} Endss. */ -ol.geom.MultiPolygon.prototype.getRingss = function() { - return this.ringss_; +ol.geom.MultiPolygon.prototype.getEndss = function() { + return this.endss_; }; @@ -59,30 +52,13 @@ ol.geom.MultiPolygon.prototype.getType = function() { /** - * @param {ol.geom.RawMultiPolygon} ringss Ringss. + * @param {ol.geom.RawMultiPolygon} coordinates Coordinates. + * @param {ol.geom.Layout=} opt_layout Layout. */ -ol.geom.MultiPolygon.prototype.setRingss = function(ringss) { - this.ringss_ = ringss; +ol.geom.MultiPolygon.prototype.setCoordinates = + function(coordinates, opt_layout) { + this.setLayout(opt_layout, coordinates, 3); + ol.geom.deflateCoordinatesss( + this.flatCoordinates, 0, coordinates, this.stride, this.endss_); this.dispatchChangeEvent(); }; - - -/** - * @inheritDoc - */ -ol.geom.MultiPolygon.prototype.transform = function(transformFn) { - var ringss = this.ringss_; - var i, ii; - for (i = 0, ii = ringss.length; i < ii; ++i) { - var rings = ringss[i]; - var j, jj; - for (j = 0, jj = rings.length; j < jj; ++j) { - var coordinates = rings[j]; - var k, kk; - for (k = 0, kk = coordinates.length; k < kk; ++k) { - var coordinate = coordinates[k]; - transformFn(coordinate, coordinate, 2); - } - } - } -}; diff --git a/src/ol/replay/canvas/canvasreplay.js b/src/ol/replay/canvas/canvasreplay.js index f97b22c8c1..328354368e 100644 --- a/src/ol/replay/canvas/canvasreplay.js +++ b/src/ol/replay/canvas/canvasreplay.js @@ -418,7 +418,7 @@ ol.replay.canvas.PolygonBatch.prototype.drawMultiPolygonGeometry = function(multiPolygonGeometry) { goog.asserts.assert(!goog.isNull(this.state_)); this.setFillStrokeStyles_(); - var ringss = multiPolygonGeometry.getRingss(); + var ringss = multiPolygonGeometry.getCoordinates(); var i, ii; for (i = 0, ii = ringss.length; i < ii; ++i) { this.drawRings_(ringss[i]);