diff --git a/src/ol/reproj/image.js b/src/ol/reproj/image.js index b1ce6e9c71..88c699a62a 100644 --- a/src/ol/reproj/image.js +++ b/src/ol/reproj/image.js @@ -72,19 +72,21 @@ ol.reproj.Image = function(sourceProj, targetProj, */ this.targetExtent_ = targetExtent; - var srcExtent = this.triangulation_.calculateSourceExtent(); + var sourceExtent = this.triangulation_.calculateSourceExtent(); /** * @private * @type {ol.ImageBase} */ - this.srcImage_ = getImageFunction(srcExtent, sourceResolution, pixelRatio); + this.sourceImage_ = + getImageFunction(sourceExtent, sourceResolution, pixelRatio); /** * @private * @type {number} */ - this.srcPixelRatio_ = this.srcImage_ ? this.srcImage_.getPixelRatio() : 1; + this.sourcePixelRatio_ = + this.sourceImage_ ? this.sourceImage_.getPixelRatio() : 1; /** * @private @@ -102,12 +104,12 @@ ol.reproj.Image = function(sourceProj, targetProj, var state = ol.ImageState.LOADED; var attributions = []; - if (this.srcImage_) { + if (this.sourceImage_) { state = ol.ImageState.IDLE; - attributions = this.srcImage_.getAttributions(); + attributions = this.sourceImage_.getAttributions(); } - goog.base(this, targetExtent, targetResolution, this.srcPixelRatio_, + goog.base(this, targetExtent, targetResolution, this.sourcePixelRatio_, state, attributions); }; goog.inherits(ol.reproj.Image, ol.ImageBase); @@ -144,20 +146,20 @@ ol.reproj.Image.prototype.getProjection = function() { * @private */ ol.reproj.Image.prototype.reproject_ = function() { - var srcState = this.srcImage_.getState(); - if (srcState == ol.ImageState.LOADED) { + var sourceState = this.sourceImage_.getState(); + if (sourceState == ol.ImageState.LOADED) { var width = ol.extent.getWidth(this.targetExtent_) / this.targetResolution_; var height = ol.extent.getHeight(this.targetExtent_) / this.targetResolution_; - this.canvas_ = ol.reproj.render(width, height, this.srcPixelRatio_, - this.srcImage_.getResolution(), this.maxSourceExtent_, + this.canvas_ = ol.reproj.render(width, height, this.sourcePixelRatio_, + this.sourceImage_.getResolution(), this.maxSourceExtent_, this.targetResolution_, this.targetExtent_, this.triangulation_, [{ - extent: this.srcImage_.getExtent(), - image: this.srcImage_.getImage() + extent: this.sourceImage_.getExtent(), + image: this.sourceImage_.getImage() }]); } - this.state = srcState; + this.state = sourceState; this.changed(); }; @@ -170,21 +172,21 @@ ol.reproj.Image.prototype.load = function() { this.state = ol.ImageState.LOADING; this.changed(); - var srcState = this.srcImage_.getState(); - if (srcState == ol.ImageState.LOADED || - srcState == ol.ImageState.ERROR) { + var sourceState = this.sourceImage_.getState(); + if (sourceState == ol.ImageState.LOADED || + sourceState == ol.ImageState.ERROR) { this.reproject_(); } else { - this.sourceListenerKey_ = this.srcImage_.listen( + this.sourceListenerKey_ = this.sourceImage_.listen( goog.events.EventType.CHANGE, function(e) { - var srcState = this.srcImage_.getState(); - if (srcState == ol.ImageState.LOADED || - srcState == ol.ImageState.ERROR) { + var sourceState = this.sourceImage_.getState(); + if (sourceState == ol.ImageState.LOADED || + sourceState == ol.ImageState.ERROR) { this.unlistenSource_(); this.reproject_(); } }, false, this); - this.srcImage_.load(); + this.sourceImage_.load(); } } }; diff --git a/src/ol/reproj/reproj.js b/src/ol/reproj/reproj.js index 4de2495b0d..95856191f1 100644 --- a/src/ol/reproj/reproj.js +++ b/src/ol/reproj/reproj.js @@ -44,13 +44,13 @@ ol.reproj.calculateSourceResolution = function(sourceProj, targetProj, var sourceResolution = targetProj.getPointResolution(targetResolution, targetCenter); - var targetMPU = targetProj.getMetersPerUnit(); - if (targetMPU !== undefined) { - sourceResolution *= targetMPU; + var targetMetersPerUnit = targetProj.getMetersPerUnit(); + if (targetMetersPerUnit !== undefined) { + sourceResolution *= targetMetersPerUnit; } - var sourceMPU = sourceProj.getMetersPerUnit(); - if (sourceMPU !== undefined) { - sourceResolution /= sourceMPU; + var sourceMetersPerUnit = sourceProj.getMetersPerUnit(); + if (sourceMetersPerUnit !== undefined) { + sourceResolution /= sourceMetersPerUnit; } // Based on the projection properties, the point resolution at the specified @@ -134,46 +134,45 @@ ol.reproj.render = function(width, height, pixelRatio, } } - var srcDataExtent = ol.extent.createEmpty(); + var sourceDataExtent = ol.extent.createEmpty(); sources.forEach(function(src, i, arr) { if (wrapXType == ol.reproj.WrapXRendering_.STITCH_SHIFT) { var srcW = src.extent[2] - src.extent[0]; var srcX = goog.math.modulo(src.extent[0], wrapXShiftDistance); - ol.extent.extend(srcDataExtent, [srcX, src.extent[1], - srcX + srcW, src.extent[3]]); + ol.extent.extend(sourceDataExtent, [srcX, src.extent[1], + srcX + srcW, src.extent[3]]); } else { - ol.extent.extend(srcDataExtent, src.extent); + ol.extent.extend(sourceDataExtent, src.extent); } }); if (sourceExtent) { if (wrapXType == ol.reproj.WrapXRendering_.NONE) { - srcDataExtent[0] = ol.math.clamp( - srcDataExtent[0], sourceExtent[0], sourceExtent[2]); - srcDataExtent[2] = ol.math.clamp( - srcDataExtent[2], sourceExtent[0], sourceExtent[2]); + sourceDataExtent[0] = ol.math.clamp( + sourceDataExtent[0], sourceExtent[0], sourceExtent[2]); + sourceDataExtent[2] = ol.math.clamp( + sourceDataExtent[2], sourceExtent[0], sourceExtent[2]); } - srcDataExtent[1] = ol.math.clamp( - srcDataExtent[1], sourceExtent[1], sourceExtent[3]); - srcDataExtent[3] = ol.math.clamp( - srcDataExtent[3], sourceExtent[1], sourceExtent[3]); + sourceDataExtent[1] = ol.math.clamp( + sourceDataExtent[1], sourceExtent[1], sourceExtent[3]); + sourceDataExtent[3] = ol.math.clamp( + sourceDataExtent[3], sourceExtent[1], sourceExtent[3]); } - var srcDataWidth = ol.extent.getWidth(srcDataExtent); - var srcDataHeight = ol.extent.getHeight(srcDataExtent); var canvasWidthInUnits; if (wrapXType == ol.reproj.WrapXRendering_.STITCH_EXTENDED) { canvasWidthInUnits = 2 * wrapXShiftDistance; } else { - canvasWidthInUnits = srcDataWidth; + canvasWidthInUnits = ol.extent.getWidth(sourceDataExtent); } + var canvasHeightInUnits = ol.extent.getHeight(sourceDataExtent); var stitchContext = ol.dom.createCanvasContext2D( Math.round(pixelRatio * canvasWidthInUnits / sourceResolution), - Math.round(pixelRatio * srcDataHeight / sourceResolution)); + Math.round(pixelRatio * canvasHeightInUnits / sourceResolution)); stitchContext.scale(pixelRatio / sourceResolution, pixelRatio / sourceResolution); - stitchContext.translate(-srcDataExtent[0], srcDataExtent[3]); + stitchContext.translate(-sourceDataExtent[0], sourceDataExtent[3]); sources.forEach(function(src, i, arr) { var xPos = src.extent[0]; @@ -192,9 +191,9 @@ ol.reproj.render = function(width, height, pixelRatio, } }); - var targetTL = ol.extent.getTopLeft(targetExtent); + var targetTopLeft = ol.extent.getTopLeft(targetExtent); - triangulation.getTriangles().forEach(function(tri, i, arr) { + triangulation.getTriangles().forEach(function(triangle, i, arr) { context.save(); /* Calculate affine transform (src -> dst) @@ -217,16 +216,16 @@ ol.reproj.render = function(width, height, pixelRatio, * | 0 0 0 x1 y1 1 | |a11| |v1| * | 0 0 0 x2 y2 1 | |a12| |v2| */ - var src = tri.source, tgt = tri.target; - var x0 = src[0][0], y0 = src[0][1], - x1 = src[1][0], y1 = src[1][1], - x2 = src[2][0], y2 = src[2][1]; - var u0 = (tgt[0][0] - targetTL[0]) / targetResolution, - v0 = -(tgt[0][1] - targetTL[1]) / targetResolution; - var u1 = (tgt[1][0] - targetTL[0]) / targetResolution, - v1 = -(tgt[1][1] - targetTL[1]) / targetResolution; - var u2 = (tgt[2][0] - targetTL[0]) / targetResolution, - v2 = -(tgt[2][1] - targetTL[1]) / targetResolution; + var source = triangle.source, target = triangle.target; + var x0 = source[0][0], y0 = source[0][1], + x1 = source[1][0], y1 = source[1][1], + x2 = source[2][0], y2 = source[2][1]; + var u0 = (target[0][0] - targetTopLeft[0]) / targetResolution, + v0 = -(target[0][1] - targetTopLeft[1]) / targetResolution; + var u1 = (target[1][0] - targetTopLeft[0]) / targetResolution, + v1 = -(target[1][1] - targetTopLeft[1]) / targetResolution; + var u2 = (target[2][0] - targetTopLeft[0]) / targetResolution, + v2 = -(target[2][1] - targetTopLeft[1]) / targetResolution; var performWrapXShift = wrapXType == ol.reproj.WrapXRendering_.STITCH_SHIFT; if (wrapXType == ol.reproj.WrapXRendering_.STITCH_EXTENDED) { @@ -246,13 +245,13 @@ ol.reproj.render = function(width, height, pixelRatio, // Shift all the source points to improve numerical stability // of all the subsequent calculations. The [x0, y0] is used here. // This is also used to simplify the linear system. - var srcNumericalShiftX = x0, srcNumericalShiftY = y0; + var sourceNumericalShiftX = x0, sourceNumericalShiftY = y0; x0 = 0; y0 = 0; - x1 -= srcNumericalShiftX; - y1 -= srcNumericalShiftY; - x2 -= srcNumericalShiftX; - y2 -= srcNumericalShiftY; + x1 -= sourceNumericalShiftX; + y1 -= sourceNumericalShiftY; + x2 -= sourceNumericalShiftX; + y2 -= sourceNumericalShiftY; var augmentedMatrix = [ [x1, y1, 0, 0, u1 - u0], @@ -260,8 +259,8 @@ ol.reproj.render = function(width, height, pixelRatio, [0, 0, x1, y1, v1 - v0], [0, 0, x2, y2, v2 - v0] ]; - var coefs = ol.math.solveLinearSystem(augmentedMatrix); - if (!coefs) { + var affineCoefs = ol.math.solveLinearSystem(augmentedMatrix); + if (!affineCoefs) { return; } @@ -283,10 +282,11 @@ ol.reproj.render = function(width, height, pixelRatio, context.closePath(); context.clip(); - context.transform(coefs[0], coefs[2], coefs[1], coefs[3], u0, v0); + context.transform( + affineCoefs[0], affineCoefs[2], affineCoefs[1], affineCoefs[3], u0, v0); - context.translate(srcDataExtent[0] - srcNumericalShiftX, - srcDataExtent[3] - srcNumericalShiftY); + context.translate(sourceDataExtent[0] - sourceNumericalShiftX, + sourceDataExtent[3] - sourceNumericalShiftY); context.scale(sourceResolution / pixelRatio, -sourceResolution / pixelRatio); @@ -301,14 +301,14 @@ ol.reproj.render = function(width, height, pixelRatio, context.strokeStyle = 'black'; context.lineWidth = 1; - triangulation.getTriangles().forEach(function(tri, i, arr) { - var tgt = tri.target; - var u0 = (tgt[0][0] - targetTL[0]) / targetResolution, - v0 = -(tgt[0][1] - targetTL[1]) / targetResolution; - var u1 = (tgt[1][0] - targetTL[0]) / targetResolution, - v1 = -(tgt[1][1] - targetTL[1]) / targetResolution; - var u2 = (tgt[2][0] - targetTL[0]) / targetResolution, - v2 = -(tgt[2][1] - targetTL[1]) / targetResolution; + triangulation.getTriangles().forEach(function(triangle, i, arr) { + var target = triangle.target; + var u0 = (target[0][0] - targetTopLeft[0]) / targetResolution, + v0 = -(target[0][1] - targetTopLeft[1]) / targetResolution; + var u1 = (target[1][0] - targetTopLeft[0]) / targetResolution, + v1 = -(target[1][1] - targetTopLeft[1]) / targetResolution; + var u2 = (target[2][0] - targetTopLeft[0]) / targetResolution, + v2 = -(target[2][1] - targetTopLeft[1]) / targetResolution; context.beginPath(); context.moveTo(u0, v0); diff --git a/src/ol/reproj/tile.js b/src/ol/reproj/tile.js index 5e1c1ebf6b..cc20abc8db 100644 --- a/src/ol/reproj/tile.js +++ b/src/ol/reproj/tile.js @@ -80,7 +80,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid, * @private * @type {!Array.