From d21a88edce3bc7befc64d3b665cd53ffc9463e83 Mon Sep 17 00:00:00 2001 From: Florent gravin Date: Tue, 13 Nov 2018 12:20:21 +0100 Subject: [PATCH 1/2] Remove map renderer dependency in layer renderer --- src/ol/layer/Image.js | 3 +-- src/ol/layer/Layer.js | 8 +++----- src/ol/layer/Tile.js | 3 +-- src/ol/layer/Vector.js | 3 +-- src/ol/layer/VectorImage.js | 3 +-- src/ol/layer/VectorTile.js | 3 +-- 6 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/ol/layer/Image.js b/src/ol/layer/Image.js index ad6b8025c8..2a83a18cc9 100644 --- a/src/ol/layer/Image.js +++ b/src/ol/layer/Image.js @@ -32,11 +32,10 @@ class ImageLayer extends BaseImageLayer { /** * Create a renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} A layer renderer. * @protected */ - createRenderer(mapRenderer) { + createRenderer() { return new CanvasImageLayerRenderer(this); } diff --git a/src/ol/layer/Layer.js b/src/ol/layer/Layer.js index 678860e0d8..9a0d413b01 100644 --- a/src/ol/layer/Layer.js +++ b/src/ol/layer/Layer.js @@ -224,23 +224,21 @@ class Layer extends BaseLayer { /** * Get the renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} The layer renderer. */ - getRenderer(mapRenderer) { + getRenderer() { if (!this.renderer_) { - this.renderer_ = this.createRenderer(mapRenderer); + this.renderer_ = this.createRenderer(); } return this.renderer_; } /** * Create a renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} A layer renderer. * @protected */ - createRenderer(mapRenderer) { + createRenderer() { return null; } diff --git a/src/ol/layer/Tile.js b/src/ol/layer/Tile.js index fbd6606a15..6e25f2af6b 100644 --- a/src/ol/layer/Tile.js +++ b/src/ol/layer/Tile.js @@ -31,11 +31,10 @@ class TileLayer extends BaseTileLayer { /** * Create a renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} A layer renderer. * @protected */ - createRenderer(mapRenderer) { + createRenderer() { return new CanvasTileLayerRenderer(this); } diff --git a/src/ol/layer/Vector.js b/src/ol/layer/Vector.js index 1458890db2..0456b04ea0 100644 --- a/src/ol/layer/Vector.js +++ b/src/ol/layer/Vector.js @@ -29,11 +29,10 @@ class VectorLayer extends BaseVectorLayer { /** * Create a renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} A layer renderer. * @protected */ - createRenderer(mapRenderer) { + createRenderer() { return new CanvasVectorLayerRenderer(this); } } diff --git a/src/ol/layer/VectorImage.js b/src/ol/layer/VectorImage.js index 3c92e77398..42678c778d 100644 --- a/src/ol/layer/VectorImage.js +++ b/src/ol/layer/VectorImage.js @@ -28,11 +28,10 @@ class VectorImageLayer extends BaseVectorLayer { /** * Create a renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} A layer renderer. * @protected */ - createRenderer(mapRenderer) { + createRenderer() { return new CanvasVectorImageLayerRenderer(this); } } diff --git a/src/ol/layer/VectorTile.js b/src/ol/layer/VectorTile.js index 58d65e5495..758e6f516e 100644 --- a/src/ol/layer/VectorTile.js +++ b/src/ol/layer/VectorTile.js @@ -116,11 +116,10 @@ class VectorTileLayer extends BaseVectorLayer { /** * Create a renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} A layer renderer. * @protected */ - createRenderer(mapRenderer) { + createRenderer() { return new CanvasVectorTileLayerRenderer(this); } From c2c599a51717e4106ccfb684d5511513a3925547 Mon Sep 17 00:00:00 2001 From: Florent gravin Date: Tue, 13 Nov 2018 12:23:53 +0100 Subject: [PATCH 2/2] Layer is now responsible of its rendering --- src/ol/layer/Layer.js | 14 ++++++++++++++ src/ol/renderer/Composite.js | 6 +----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/ol/layer/Layer.js b/src/ol/layer/Layer.js index 9a0d413b01..723c7b5be1 100644 --- a/src/ol/layer/Layer.js +++ b/src/ol/layer/Layer.js @@ -172,6 +172,20 @@ class Layer extends BaseLayer { this.changed(); } + /** + * In charge to manage the rendering of the layer. One layer type is + * bounded with one layer renderer. + * @param {?import("../PluggableMap.js").FrameState} frameState Frame state. + * @return {HTMLElement} The rendered element. + */ + render(frameState) { + const layerRenderer = this.getRenderer(); + const layerState = this.getLayerState(); + if (layerRenderer.prepareFrame(frameState, layerState)) { + return layerRenderer.renderFrame(frameState, layerState); + } + } + /** * Sets the layer to be rendered on top of other layers on a map. The map will * not manage this layer in its layers collection, and the callback in diff --git a/src/ol/renderer/Composite.js b/src/ol/renderer/Composite.js index dfd7aa4596..f0c02fc2cc 100644 --- a/src/ol/renderer/Composite.js +++ b/src/ol/renderer/Composite.js @@ -96,11 +96,7 @@ class CompositeMapRenderer extends MapRenderer { } const layer = layerState.layer; - const layerRenderer = this.getLayerRenderer(layer); - if (layerRenderer.prepareFrame(frameState, layerState)) { - const element = layerRenderer.renderFrame(frameState, layerState); - this.children_.push(element); - } + this.children_.push(layer.render(frameState)); } replaceChildren(this.element_, this.children_);