From 33c197cf16f0ecedc6c33965e2e8c30488a51da0 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Sun, 8 Feb 2015 07:25:10 -0700 Subject: [PATCH] Layer renderers should not require a map renderer --- .../canvas/canvasimagelayerrenderer.js | 6 ++--- src/ol/renderer/canvas/canvaslayerrenderer.js | 5 ++--- src/ol/renderer/canvas/canvasmaprenderer.js | 6 ++--- .../canvas/canvastilelayerrenderer.js | 6 ++--- .../canvas/canvasvectorlayerrenderer.js | 5 ++--- src/ol/renderer/dom/domimagelayerrenderer.js | 5 ++--- src/ol/renderer/dom/domlayerrenderer.js | 5 ++--- src/ol/renderer/dom/dommaprenderer.js | 6 ++--- src/ol/renderer/dom/domtilelayerrenderer.js | 5 ++--- src/ol/renderer/dom/domvectorlayerrenderer.js | 5 ++--- src/ol/renderer/layerrenderer.js | 18 +-------------- .../renderer/webgl/webglimagelayerrenderer.js | 8 +++---- src/ol/renderer/webgl/webgllayerrenderer.js | 22 ++++++++----------- .../renderer/webgl/webgltilelayerrenderer.js | 9 ++++---- .../webgl/webglvectorlayerrenderer.js | 11 ++++------ test/spec/ol/renderer/layerrenderer.test.js | 5 +---- 16 files changed, 45 insertions(+), 82 deletions(-) diff --git a/src/ol/renderer/canvas/canvasimagelayerrenderer.js b/src/ol/renderer/canvas/canvasimagelayerrenderer.js index 712923599e..d5cb82c7a4 100644 --- a/src/ol/renderer/canvas/canvasimagelayerrenderer.js +++ b/src/ol/renderer/canvas/canvasimagelayerrenderer.js @@ -9,7 +9,6 @@ goog.require('ol.dom'); goog.require('ol.extent'); goog.require('ol.layer.Image'); goog.require('ol.proj'); -goog.require('ol.renderer.Map'); goog.require('ol.renderer.canvas.Layer'); goog.require('ol.source.ImageVector'); goog.require('ol.vec.Mat4'); @@ -19,12 +18,11 @@ goog.require('ol.vec.Mat4'); /** * @constructor * @extends {ol.renderer.canvas.Layer} - * @param {ol.renderer.Map} mapRenderer Map renderer. * @param {ol.layer.Image} imageLayer Single image layer. */ -ol.renderer.canvas.ImageLayer = function(mapRenderer, imageLayer) { +ol.renderer.canvas.ImageLayer = function(imageLayer) { - goog.base(this, mapRenderer, imageLayer); + goog.base(this, imageLayer); /** * @private diff --git a/src/ol/renderer/canvas/canvaslayerrenderer.js b/src/ol/renderer/canvas/canvaslayerrenderer.js index 7e8dc1cefc..21d0d23c90 100644 --- a/src/ol/renderer/canvas/canvaslayerrenderer.js +++ b/src/ol/renderer/canvas/canvaslayerrenderer.js @@ -17,12 +17,11 @@ goog.require('ol.vec.Mat4'); /** * @constructor * @extends {ol.renderer.Layer} - * @param {ol.renderer.Map} mapRenderer Map renderer. * @param {ol.layer.Layer} layer Layer. */ -ol.renderer.canvas.Layer = function(mapRenderer, layer) { +ol.renderer.canvas.Layer = function(layer) { - goog.base(this, mapRenderer, layer); + goog.base(this, layer); /** * @private diff --git a/src/ol/renderer/canvas/canvasmaprenderer.js b/src/ol/renderer/canvas/canvasmaprenderer.js index d057cafbb9..2074a898ad 100644 --- a/src/ol/renderer/canvas/canvasmaprenderer.js +++ b/src/ol/renderer/canvas/canvasmaprenderer.js @@ -77,11 +77,11 @@ goog.inherits(ol.renderer.canvas.Map, ol.renderer.Map); */ ol.renderer.canvas.Map.prototype.createLayerRenderer = function(layer) { if (ol.ENABLE_IMAGE && layer instanceof ol.layer.Image) { - return new ol.renderer.canvas.ImageLayer(this, layer); + return new ol.renderer.canvas.ImageLayer(layer); } else if (ol.ENABLE_TILE && layer instanceof ol.layer.Tile) { - return new ol.renderer.canvas.TileLayer(this, layer); + return new ol.renderer.canvas.TileLayer(layer); } else if (ol.ENABLE_VECTOR && layer instanceof ol.layer.Vector) { - return new ol.renderer.canvas.VectorLayer(this, layer); + return new ol.renderer.canvas.VectorLayer(layer); } else { goog.asserts.fail(); return null; diff --git a/src/ol/renderer/canvas/canvastilelayerrenderer.js b/src/ol/renderer/canvas/canvastilelayerrenderer.js index f583b6aa48..246d81e3d4 100644 --- a/src/ol/renderer/canvas/canvastilelayerrenderer.js +++ b/src/ol/renderer/canvas/canvastilelayerrenderer.js @@ -13,7 +13,6 @@ goog.require('ol.TileState'); goog.require('ol.dom'); goog.require('ol.extent'); goog.require('ol.layer.Tile'); -goog.require('ol.renderer.Map'); goog.require('ol.renderer.canvas.Layer'); goog.require('ol.tilecoord'); goog.require('ol.vec.Mat4'); @@ -23,12 +22,11 @@ goog.require('ol.vec.Mat4'); /** * @constructor * @extends {ol.renderer.canvas.Layer} - * @param {ol.renderer.Map} mapRenderer Map renderer. * @param {ol.layer.Tile} tileLayer Tile layer. */ -ol.renderer.canvas.TileLayer = function(mapRenderer, tileLayer) { +ol.renderer.canvas.TileLayer = function(tileLayer) { - goog.base(this, mapRenderer, tileLayer); + goog.base(this, tileLayer); /** * @private diff --git a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js index 219288c185..2ccec425c3 100644 --- a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js +++ b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js @@ -17,12 +17,11 @@ goog.require('ol.renderer.vector'); /** * @constructor * @extends {ol.renderer.canvas.Layer} - * @param {ol.renderer.Map} mapRenderer Map renderer. * @param {ol.layer.Vector} vectorLayer Vector layer. */ -ol.renderer.canvas.VectorLayer = function(mapRenderer, vectorLayer) { +ol.renderer.canvas.VectorLayer = function(vectorLayer) { - goog.base(this, mapRenderer, vectorLayer); + goog.base(this, vectorLayer); /** * @private diff --git a/src/ol/renderer/dom/domimagelayerrenderer.js b/src/ol/renderer/dom/domimagelayerrenderer.js index cce9db4785..6746de6691 100644 --- a/src/ol/renderer/dom/domimagelayerrenderer.js +++ b/src/ol/renderer/dom/domimagelayerrenderer.js @@ -18,14 +18,13 @@ goog.require('ol.vec.Mat4'); /** * @constructor * @extends {ol.renderer.dom.Layer} - * @param {ol.renderer.Map} mapRenderer Map renderer. * @param {ol.layer.Image} imageLayer Image layer. */ -ol.renderer.dom.ImageLayer = function(mapRenderer, imageLayer) { +ol.renderer.dom.ImageLayer = function(imageLayer) { var target = goog.dom.createElement(goog.dom.TagName.DIV); target.style.position = 'absolute'; - goog.base(this, mapRenderer, imageLayer, target); + goog.base(this, imageLayer, target); /** * The last rendered image. diff --git a/src/ol/renderer/dom/domlayerrenderer.js b/src/ol/renderer/dom/domlayerrenderer.js index 6425ba5091..991ceef4e9 100644 --- a/src/ol/renderer/dom/domlayerrenderer.js +++ b/src/ol/renderer/dom/domlayerrenderer.js @@ -8,13 +8,12 @@ goog.require('ol.renderer.Layer'); /** * @constructor * @extends {ol.renderer.Layer} - * @param {ol.renderer.Map} mapRenderer Map renderer. * @param {ol.layer.Layer} layer Layer. * @param {!Element} target Target. */ -ol.renderer.dom.Layer = function(mapRenderer, layer, target) { +ol.renderer.dom.Layer = function(layer, target) { - goog.base(this, mapRenderer, layer); + goog.base(this, layer); /** * @type {!Element} diff --git a/src/ol/renderer/dom/dommaprenderer.js b/src/ol/renderer/dom/dommaprenderer.js index 0eeda851e2..4b966df86a 100644 --- a/src/ol/renderer/dom/dommaprenderer.js +++ b/src/ol/renderer/dom/dommaprenderer.js @@ -112,12 +112,12 @@ ol.renderer.dom.Map.prototype.disposeInternal = function() { ol.renderer.dom.Map.prototype.createLayerRenderer = function(layer) { var layerRenderer; if (ol.ENABLE_IMAGE && layer instanceof ol.layer.Image) { - layerRenderer = new ol.renderer.dom.ImageLayer(this, layer); + layerRenderer = new ol.renderer.dom.ImageLayer(layer); } else if (ol.ENABLE_TILE && layer instanceof ol.layer.Tile) { - layerRenderer = new ol.renderer.dom.TileLayer(this, layer); + layerRenderer = new ol.renderer.dom.TileLayer(layer); } else if (!(ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) && ol.ENABLE_VECTOR && layer instanceof ol.layer.Vector) { - layerRenderer = new ol.renderer.dom.VectorLayer(this, layer); + layerRenderer = new ol.renderer.dom.VectorLayer(layer); } else { goog.asserts.fail(); return null; diff --git a/src/ol/renderer/dom/domtilelayerrenderer.js b/src/ol/renderer/dom/domtilelayerrenderer.js index ca4b91d810..cfcb766990 100644 --- a/src/ol/renderer/dom/domtilelayerrenderer.js +++ b/src/ol/renderer/dom/domtilelayerrenderer.js @@ -30,10 +30,9 @@ goog.require('ol.vec.Mat4'); /** * @constructor * @extends {ol.renderer.dom.Layer} - * @param {ol.renderer.Map} mapRenderer Map renderer. * @param {ol.layer.Tile} tileLayer Tile layer. */ -ol.renderer.dom.TileLayer = function(mapRenderer, tileLayer) { +ol.renderer.dom.TileLayer = function(tileLayer) { var target = goog.dom.createElement(goog.dom.TagName.DIV); target.style.position = 'absolute'; @@ -44,7 +43,7 @@ ol.renderer.dom.TileLayer = function(mapRenderer, tileLayer) { target.style.height = '100%'; } - goog.base(this, mapRenderer, tileLayer, target); + goog.base(this, tileLayer, target); /** * @private diff --git a/src/ol/renderer/dom/domvectorlayerrenderer.js b/src/ol/renderer/dom/domvectorlayerrenderer.js index bcb5ec63f8..08aa7af139 100644 --- a/src/ol/renderer/dom/domvectorlayerrenderer.js +++ b/src/ol/renderer/dom/domvectorlayerrenderer.js @@ -21,10 +21,9 @@ goog.require('ol.vec.Mat4'); /** * @constructor * @extends {ol.renderer.dom.Layer} - * @param {ol.renderer.Map} mapRenderer Map renderer. * @param {ol.layer.Vector} vectorLayer Vector layer. */ -ol.renderer.dom.VectorLayer = function(mapRenderer, vectorLayer) { +ol.renderer.dom.VectorLayer = function(vectorLayer) { /** * @private @@ -39,7 +38,7 @@ ol.renderer.dom.VectorLayer = function(mapRenderer, vectorLayer) { target.style.maxWidth = 'none'; target.style.position = 'absolute'; - goog.base(this, mapRenderer, vectorLayer, target); + goog.base(this, vectorLayer, target); /** * @private diff --git a/src/ol/renderer/layerrenderer.js b/src/ol/renderer/layerrenderer.js index dd73a418c9..0682ccb159 100644 --- a/src/ol/renderer/layerrenderer.js +++ b/src/ol/renderer/layerrenderer.js @@ -21,21 +21,14 @@ goog.require('ol.vec.Mat4'); /** * @constructor * @extends {ol.Observable} - * @param {ol.renderer.Map} mapRenderer Map renderer. * @param {ol.layer.Layer} layer Layer. * @suppress {checkStructDictInheritance} * @struct */ -ol.renderer.Layer = function(mapRenderer, layer) { +ol.renderer.Layer = function(layer) { goog.base(this); - /** - * @private - * @type {ol.renderer.Map} - */ - this.mapRenderer_ = mapRenderer; - /** * @private * @type {ol.layer.Layer} @@ -101,15 +94,6 @@ ol.renderer.Layer.prototype.getLayer = function() { }; -/** - * @protected - * @return {ol.renderer.Map} Map renderer. - */ -ol.renderer.Layer.prototype.getMapRenderer = function() { - return this.mapRenderer_; -}; - - /** * Handle changes in image state. * @param {goog.events.Event} event Image change event. diff --git a/src/ol/renderer/webgl/webglimagelayerrenderer.js b/src/ol/renderer/webgl/webglimagelayerrenderer.js index d505ca2065..51f8394b23 100644 --- a/src/ol/renderer/webgl/webglimagelayerrenderer.js +++ b/src/ol/renderer/webgl/webglimagelayerrenderer.js @@ -22,7 +22,7 @@ goog.require('ol.webgl.Context'); /** * @constructor * @extends {ol.renderer.webgl.Layer} - * @param {ol.renderer.Map} mapRenderer Map renderer. + * @param {ol.renderer.webgl.Map} mapRenderer Map renderer. * @param {ol.layer.Image} imageLayer Tile layer. */ ol.renderer.webgl.ImageLayer = function(mapRenderer, imageLayer) { @@ -64,7 +64,7 @@ ol.renderer.webgl.ImageLayer.prototype.createTexture_ = function(image) { // http://learningwebgl.com/blog/?p=2101 var imageElement = image.getImage(); - var gl = this.getWebGLMapRenderer().getGL(); + var gl = this.mapRenderer.getGL(); return ol.webgl.Context.createTexture( gl, imageElement, goog.webgl.CLAMP_TO_EDGE, goog.webgl.CLAMP_TO_EDGE); @@ -100,7 +100,7 @@ ol.renderer.webgl.ImageLayer.prototype.forEachFeatureAtCoordinate = ol.renderer.webgl.ImageLayer.prototype.prepareFrame = function(frameState, layerState, context) { - var gl = this.getWebGLMapRenderer().getGL(); + var gl = this.mapRenderer.getGL(); var viewState = frameState.viewState; var viewCenter = viewState.center; @@ -155,7 +155,7 @@ ol.renderer.webgl.ImageLayer.prototype.prepareFrame = if (!goog.isNull(image)) { goog.asserts.assert(!goog.isNull(texture)); - var canvas = this.getWebGLMapRenderer().getContext().getCanvas(); + var canvas = this.mapRenderer.getContext().getCanvas(); this.updateProjectionMatrix_(canvas.width, canvas.height, viewCenter, viewResolution, viewRotation, image.getExtent()); diff --git a/src/ol/renderer/webgl/webgllayerrenderer.js b/src/ol/renderer/webgl/webgllayerrenderer.js index 26b9ea5770..45b66f2512 100644 --- a/src/ol/renderer/webgl/webgllayerrenderer.js +++ b/src/ol/renderer/webgl/webgllayerrenderer.js @@ -18,12 +18,18 @@ goog.require('ol.webgl.Context'); /** * @constructor * @extends {ol.renderer.Layer} - * @param {ol.renderer.Map} mapRenderer Map renderer. + * @param {ol.renderer.webgl.Map} mapRenderer Map renderer. * @param {ol.layer.Layer} layer Layer. */ ol.renderer.webgl.Layer = function(mapRenderer, layer) { - goog.base(this, mapRenderer, layer); + goog.base(this, layer); + + /** + * @protected + * @type {ol.renderer.webgl.Map} + */ + this.mapRenderer = mapRenderer; /** * @private @@ -96,8 +102,7 @@ goog.inherits(ol.renderer.webgl.Layer, ol.renderer.Layer); ol.renderer.webgl.Layer.prototype.bindFramebuffer = function(frameState, framebufferDimension) { - var mapRenderer = this.getWebGLMapRenderer(); - var gl = mapRenderer.getGL(); + var gl = this.mapRenderer.getGL(); if (!goog.isDef(this.framebufferDimension) || this.framebufferDimension != framebufferDimension) { @@ -248,15 +253,6 @@ ol.renderer.webgl.Layer.prototype.dispatchComposeEvent_ = }; -/** - * @protected - * @return {ol.renderer.webgl.Map} MapRenderer. - */ -ol.renderer.webgl.Layer.prototype.getWebGLMapRenderer = function() { - return /** @type {ol.renderer.webgl.Map} */ (this.getMapRenderer()); -}; - - /** * @return {!goog.vec.Mat4.Number} Matrix. */ diff --git a/src/ol/renderer/webgl/webgltilelayerrenderer.js b/src/ol/renderer/webgl/webgltilelayerrenderer.js index 9311118816..a73ea4f1fd 100644 --- a/src/ol/renderer/webgl/webgltilelayerrenderer.js +++ b/src/ol/renderer/webgl/webgltilelayerrenderer.js @@ -25,7 +25,7 @@ goog.require('ol.webgl.Buffer'); /** * @constructor * @extends {ol.renderer.webgl.Layer} - * @param {ol.renderer.Map} mapRenderer Map renderer. + * @param {ol.renderer.webgl.Map} mapRenderer Map renderer. * @param {ol.layer.Tile} tileLayer Tile layer. */ ol.renderer.webgl.TileLayer = function(mapRenderer, tileLayer) { @@ -88,8 +88,7 @@ goog.inherits(ol.renderer.webgl.TileLayer, ol.renderer.webgl.Layer); * @inheritDoc */ ol.renderer.webgl.TileLayer.prototype.disposeInternal = function() { - var mapRenderer = this.getWebGLMapRenderer(); - var context = mapRenderer.getContext(); + var context = this.mapRenderer.getContext(); context.deleteBuffer(this.renderArrayBuffer_); goog.base(this, 'disposeInternal'); }; @@ -110,7 +109,7 @@ ol.renderer.webgl.TileLayer.prototype.handleWebGLContextLost = function() { ol.renderer.webgl.TileLayer.prototype.prepareFrame = function(frameState, layerState, context) { - var mapRenderer = this.getWebGLMapRenderer(); + var mapRenderer = this.mapRenderer; var gl = context.getGL(); var viewState = frameState.viewState; @@ -349,7 +348,7 @@ ol.renderer.webgl.TileLayer.prototype.forEachLayerAtPixel = pixelOnFrameBufferScaled[0] * this.framebufferDimension, pixelOnFrameBufferScaled[1] * this.framebufferDimension]; - var gl = this.getWebGLMapRenderer().getContext().getGL(); + var gl = this.mapRenderer.getContext().getGL(); gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer); var imageData = new Uint8Array(4); gl.readPixels(pixelOnFrameBuffer[0], pixelOnFrameBuffer[1], 1, 1, diff --git a/src/ol/renderer/webgl/webglvectorlayerrenderer.js b/src/ol/renderer/webgl/webglvectorlayerrenderer.js index 65621e6f20..4a39054f34 100644 --- a/src/ol/renderer/webgl/webglvectorlayerrenderer.js +++ b/src/ol/renderer/webgl/webglvectorlayerrenderer.js @@ -16,7 +16,7 @@ goog.require('ol.vec.Mat4'); /** * @constructor * @extends {ol.renderer.webgl.Layer} - * @param {ol.renderer.Map} mapRenderer Map renderer. + * @param {ol.renderer.webgl.Map} mapRenderer Map renderer. * @param {ol.layer.Vector} vectorLayer Vector layer. */ ol.renderer.webgl.VectorLayer = function(mapRenderer, vectorLayer) { @@ -95,8 +95,7 @@ ol.renderer.webgl.VectorLayer.prototype.composeFrame = ol.renderer.webgl.VectorLayer.prototype.disposeInternal = function() { var replayGroup = this.replayGroup_; if (!goog.isNull(replayGroup)) { - var mapRenderer = this.getWebGLMapRenderer(); - var context = mapRenderer.getContext(); + var context = this.mapRenderer.getContext(); replayGroup.getDeleteResourcesFunction(context)(); this.replayGroup_ = null; } @@ -112,8 +111,7 @@ ol.renderer.webgl.VectorLayer.prototype.forEachFeatureAtCoordinate = if (goog.isNull(this.replayGroup_) || goog.isNull(this.layerState_)) { return undefined; } else { - var mapRenderer = this.getWebGLMapRenderer(); - var context = mapRenderer.getContext(); + var context = this.mapRenderer.getContext(); var viewState = frameState.viewState; var layer = this.getLayer(); var layerState = this.layerState_; @@ -148,8 +146,7 @@ ol.renderer.webgl.VectorLayer.prototype.hasFeatureAtCoordinate = if (goog.isNull(this.replayGroup_) || goog.isNull(this.layerState_)) { return false; } else { - var mapRenderer = this.getWebGLMapRenderer(); - var context = mapRenderer.getContext(); + var context = this.mapRenderer.getContext(); var viewState = frameState.viewState; var layerState = this.layerState_; return this.replayGroup_.hasFeatureAtCoordinate(coordinate, diff --git a/test/spec/ol/renderer/layerrenderer.test.js b/test/spec/ol/renderer/layerrenderer.test.js index d16f242ecb..d1c43db8b4 100644 --- a/test/spec/ol/renderer/layerrenderer.test.js +++ b/test/spec/ol/renderer/layerrenderer.test.js @@ -5,10 +5,8 @@ describe('ol.renderer.Layer', function() { var eventType = goog.events.EventType.CHANGE; beforeEach(function() { - var map = new ol.Map({}); - var mapRenderer = map.getRenderer(); var layer = new ol.layer.Layer({}); - renderer = new ol.renderer.Layer(mapRenderer, layer); + renderer = new ol.renderer.Layer(layer); }); describe('#loadImage', function() { @@ -84,6 +82,5 @@ describe('ol.renderer.Layer', function() { goog.require('goog.events.EventType'); goog.require('ol.Image'); goog.require('ol.ImageState'); -goog.require('ol.Map'); goog.require('ol.layer.Layer'); goog.require('ol.renderer.Layer');