diff --git a/src/ol/geom/flat/transformflatgeom.js b/src/ol/geom/flat/transformflatgeom.js new file mode 100644 index 0000000000..dc8c77e45e --- /dev/null +++ b/src/ol/geom/flat/transformflatgeom.js @@ -0,0 +1,34 @@ +goog.provide('ol.geom.flat.transform'); + +goog.require('goog.vec.Mat4'); + + +/** + * @param {Array.} flatCoordinates Flat coordinates. + * @param {number} stride Stride. + * @param {goog.vec.Mat4.Number} transform Transform. + * @param {Array.=} opt_dest Destination. + * @return {Array.} Transformed coordinates. + */ +ol.geom.flat.transform.transform2D = + function(flatCoordinates, stride, transform, opt_dest) { + var m00 = goog.vec.Mat4.getElement(transform, 0, 0); + var m10 = goog.vec.Mat4.getElement(transform, 1, 0); + var m01 = goog.vec.Mat4.getElement(transform, 0, 1); + var m11 = goog.vec.Mat4.getElement(transform, 1, 1); + var m03 = goog.vec.Mat4.getElement(transform, 0, 3); + var m13 = goog.vec.Mat4.getElement(transform, 1, 3); + var dest = goog.isDef(opt_dest) ? opt_dest : []; + var i = 0; + var j, jj; + for (j = 0, jj = flatCoordinates.length; j < jj; j += stride) { + var x = flatCoordinates[j]; + var y = flatCoordinates[j + 1]; + dest[i++] = m00 * x + m01 * y + m03; + dest[i++] = m10 * x + m11 * y + m13; + } + if (goog.isDef(opt_dest) && dest.length != i) { + dest.length = i; + } + return dest; +}; diff --git a/src/ol/geom/flatgeom.js b/src/ol/geom/flatgeom.js index 4b08ed1b02..83bf883767 100644 --- a/src/ol/geom/flatgeom.js +++ b/src/ol/geom/flatgeom.js @@ -1,7 +1,5 @@ goog.provide('ol.geom.flat'); -goog.require('goog.array'); -goog.require('goog.vec.Mat4'); goog.require('ol.extent'); @@ -26,34 +24,3 @@ ol.geom.flat.linearRingssGetFlatCenters = } return flatCenters; }; - - -/** - * @param {Array.} flatCoordinates Flat coordinates. - * @param {number} stride Stride. - * @param {goog.vec.Mat4.Number} transform Transform. - * @param {Array.=} opt_dest Destination. - * @return {Array.} Transformed coordinates. - */ -ol.geom.flat.transform2D = - function(flatCoordinates, stride, transform, opt_dest) { - var m00 = goog.vec.Mat4.getElement(transform, 0, 0); - var m10 = goog.vec.Mat4.getElement(transform, 1, 0); - var m01 = goog.vec.Mat4.getElement(transform, 0, 1); - var m11 = goog.vec.Mat4.getElement(transform, 1, 1); - var m03 = goog.vec.Mat4.getElement(transform, 0, 3); - var m13 = goog.vec.Mat4.getElement(transform, 1, 3); - var dest = goog.isDef(opt_dest) ? opt_dest : []; - var i = 0; - var j, jj; - for (j = 0, jj = flatCoordinates.length; j < jj; j += stride) { - var x = flatCoordinates[j]; - var y = flatCoordinates[j + 1]; - dest[i++] = m00 * x + m01 * y + m03; - dest[i++] = m10 * x + m11 * y + m13; - } - if (goog.isDef(opt_dest) && dest.length != i) { - dest.length = i; - } - return dest; -}; diff --git a/src/ol/geom/simplegeometry.js b/src/ol/geom/simplegeometry.js index 879a84f2e9..5ca2a609fc 100644 --- a/src/ol/geom/simplegeometry.js +++ b/src/ol/geom/simplegeometry.js @@ -6,6 +6,7 @@ goog.require('goog.object'); goog.require('ol.extent'); goog.require('ol.geom.Geometry'); goog.require('ol.geom.flat'); +goog.require('ol.geom.flat.transform'); @@ -260,7 +261,7 @@ ol.geom.transformSimpleGeometry2D = return null; } else { var stride = simpleGeometry.getStride(); - return ol.geom.flat.transform2D( + return ol.geom.flat.transform.transform2D( flatCoordinates, stride, transform, opt_dest); } }; diff --git a/src/ol/render/canvas/canvasimmediate.js b/src/ol/render/canvas/canvasimmediate.js index ed1efeb6a7..84cf7ae0b6 100644 --- a/src/ol/render/canvas/canvasimmediate.js +++ b/src/ol/render/canvas/canvasimmediate.js @@ -1,6 +1,6 @@ // FIXME test, especially polygons with holes and multipolygons // FIXME need to handle large thick features (where pixel size matters) -// FIXME add offset and end to ol.geom.flat.transform2D? +// FIXME add offset and end to ol.geom.flat.transform.transform2D? goog.provide('ol.render.canvas.Immediate'); @@ -12,6 +12,7 @@ goog.require('ol.BrowserFeature'); goog.require('ol.color'); goog.require('ol.extent'); goog.require('ol.geom.flat'); +goog.require('ol.geom.flat.transform'); goog.require('ol.render.IVectorContext'); goog.require('ol.render.canvas'); goog.require('ol.vec.Mat4'); @@ -235,7 +236,7 @@ ol.render.canvas.Immediate.prototype.drawImages_ = } goog.asserts.assert(offset === 0); goog.asserts.assert(end == flatCoordinates.length); - var pixelCoordinates = ol.geom.flat.transform2D( + var pixelCoordinates = ol.geom.flat.transform.transform2D( flatCoordinates, 2, this.transform_, this.pixelCoordinates_); var context = this.context_; var localTransform = this.tmpLocalTransform_; @@ -301,7 +302,7 @@ ol.render.canvas.Immediate.prototype.drawText_ = this.setContextTextState_(this.textState_); goog.asserts.assert(offset === 0); goog.asserts.assert(end == flatCoordinates.length); - var pixelCoordinates = ol.geom.flat.transform2D( + var pixelCoordinates = ol.geom.flat.transform.transform2D( flatCoordinates, stride, this.transform_, this.pixelCoordinates_); var context = this.context_; for (; offset < end; offset += stride) { diff --git a/src/ol/render/canvas/canvasreplay.js b/src/ol/render/canvas/canvasreplay.js index 594b7b3c21..2e3320c761 100644 --- a/src/ol/render/canvas/canvasreplay.js +++ b/src/ol/render/canvas/canvasreplay.js @@ -18,6 +18,7 @@ goog.require('ol.extent'); goog.require('ol.extent.Relationship'); goog.require('ol.geom.flat'); goog.require('ol.geom.flat.simplify'); +goog.require('ol.geom.flat.transform'); goog.require('ol.render.IReplayGroup'); goog.require('ol.render.IVectorContext'); goog.require('ol.render.canvas'); @@ -217,7 +218,7 @@ ol.render.canvas.Replay.prototype.replay_ = function( if (ol.vec.Mat4.equals2D(transform, this.renderedTransform_)) { pixelCoordinates = this.pixelCoordinates_; } else { - pixelCoordinates = ol.geom.flat.transform2D( + pixelCoordinates = ol.geom.flat.transform.transform2D( this.coordinates, 2, transform, this.pixelCoordinates_); goog.vec.Mat4.setFromArray(this.renderedTransform_, transform); goog.asserts.assert(pixelCoordinates === this.pixelCoordinates_); @@ -1852,7 +1853,7 @@ ol.render.canvas.ReplayGroup.prototype.replay_ = function( var minY = maxExtent[1]; var maxX = maxExtent[2]; var maxY = maxExtent[3]; - var flatClipCoords = ol.geom.flat.transform2D( + var flatClipCoords = ol.geom.flat.transform.transform2D( [minX, minY, minX, maxY, maxX, maxY, maxX, minY], 2, transform); context.save(); context.beginPath();