From c17e23f2ae768f463d75534aeae2ae89a9a1b473 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Thu, 28 Apr 2016 10:22:20 +0200 Subject: [PATCH] Skip unnecessary render functions --- .../canvas/canvasvectortilelayerrenderer.js | 12 +++++++----- .../canvasvectortilelayerrenderer.test.js | 17 ++++++++++++++++- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/ol/renderer/canvas/canvasvectortilelayerrenderer.js b/src/ol/renderer/canvas/canvasvectortilelayerrenderer.js index 0a512ed8dd..6fd97a5533 100644 --- a/src/ol/renderer/canvas/canvasvectortilelayerrenderer.js +++ b/src/ol/renderer/canvas/canvasvectortilelayerrenderer.js @@ -76,8 +76,13 @@ ol.renderer.canvas.VectorTileLayer.prototype.composeFrame = function( frameState, layerState, context) { var transform = this.getTransform(frameState, 0); this.dispatchPreComposeEvent(context, frameState, transform); - this.renderTileImages(context, frameState, layerState); - this.renderTileReplays_(context, frameState, layerState); + var renderMode = this.getLayer().getRenderMode(); + if (renderMode !== ol.layer.VectorTileRenderType.VECTOR) { + this.renderTileImages(context, frameState, layerState); + } + if (renderMode !== ol.layer.VectorTileRenderType.IMAGE) { + this.renderTileReplays_(context, frameState, layerState); + } this.dispatchPostComposeEvent(context, frameState, transform); }; @@ -93,9 +98,6 @@ ol.renderer.canvas.VectorTileLayer.prototype.renderTileReplays_ = function( var layer = this.getLayer(); var replays = ol.renderer.canvas.VECTOR_REPLAYS[layer.getRenderMode()]; - if (!replays) { - return; - } var pixelRatio = frameState.pixelRatio; var skippedFeatureUids = layerState.managed ? frameState.skippedFeatureUids : {}; diff --git a/test/spec/ol/renderer/canvas/canvasvectortilelayerrenderer.test.js b/test/spec/ol/renderer/canvas/canvasvectortilelayerrenderer.test.js index 0b1f13ccfa..dd94c4d359 100644 --- a/test/spec/ol/renderer/canvas/canvasvectortilelayerrenderer.test.js +++ b/test/spec/ol/renderer/canvas/canvasvectortilelayerrenderer.test.js @@ -66,10 +66,25 @@ describe('ol.renderer.canvas.VectorTileLayer', function() { it('uses lower resolution for pure vector rendering', function() { layer.renderMode_ = 'vector'; var renderer = new ol.renderer.canvas.VectorTileLayer(layer); - expect(renderer).to.be.a(ol.renderer.canvas.VectorTileLayer); expect(renderer.zDirection).to.be(1); }); + it('does not render images for pure vector rendering', function() { + layer.renderMode_ = 'vector'; + var renderer = new ol.renderer.canvas.VectorTileLayer(layer); + var spy = sinon.spy(renderer, 'renderTileImages'); + map.renderSync(); + expect(spy.callCount).to.be(0); + }); + + it('does not render replays for pure image rendering', function() { + layer.renderMode_ = 'image'; + var renderer = new ol.renderer.canvas.VectorTileLayer(layer); + var spy = sinon.spy(renderer, 'renderTileReplays_'); + map.renderSync(); + expect(spy.callCount).to.be(0); + }); + it('gives precedence to feature styles over layer styles', function() { var spy = sinon.spy(map.getRenderer().getLayerRenderer(layer), 'renderFeature');