Skip unnecessary render functions

This commit is contained in:
Andreas Hocevar
2016-04-28 10:22:20 +02:00
parent 88d20a69ad
commit c17e23f2ae
2 changed files with 23 additions and 6 deletions

View File

@@ -76,8 +76,13 @@ ol.renderer.canvas.VectorTileLayer.prototype.composeFrame = function(
frameState, layerState, context) { frameState, layerState, context) {
var transform = this.getTransform(frameState, 0); var transform = this.getTransform(frameState, 0);
this.dispatchPreComposeEvent(context, frameState, transform); this.dispatchPreComposeEvent(context, frameState, transform);
this.renderTileImages(context, frameState, layerState); var renderMode = this.getLayer().getRenderMode();
this.renderTileReplays_(context, frameState, layerState); 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); this.dispatchPostComposeEvent(context, frameState, transform);
}; };
@@ -93,9 +98,6 @@ ol.renderer.canvas.VectorTileLayer.prototype.renderTileReplays_ = function(
var layer = this.getLayer(); var layer = this.getLayer();
var replays = ol.renderer.canvas.VECTOR_REPLAYS[layer.getRenderMode()]; var replays = ol.renderer.canvas.VECTOR_REPLAYS[layer.getRenderMode()];
if (!replays) {
return;
}
var pixelRatio = frameState.pixelRatio; var pixelRatio = frameState.pixelRatio;
var skippedFeatureUids = layerState.managed ? var skippedFeatureUids = layerState.managed ?
frameState.skippedFeatureUids : {}; frameState.skippedFeatureUids : {};

View File

@@ -66,10 +66,25 @@ describe('ol.renderer.canvas.VectorTileLayer', function() {
it('uses lower resolution for pure vector rendering', function() { it('uses lower resolution for pure vector rendering', function() {
layer.renderMode_ = 'vector'; layer.renderMode_ = 'vector';
var renderer = new ol.renderer.canvas.VectorTileLayer(layer); var renderer = new ol.renderer.canvas.VectorTileLayer(layer);
expect(renderer).to.be.a(ol.renderer.canvas.VectorTileLayer);
expect(renderer.zDirection).to.be(1); 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() { it('gives precedence to feature styles over layer styles', function() {
var spy = sinon.spy(map.getRenderer().getLayerRenderer(layer), var spy = sinon.spy(map.getRenderer().getLayerRenderer(layer),
'renderFeature'); 'renderFeature');