Make render listeners work with image render mode

This commit is contained in:
ahocevar
2018-07-09 19:21:19 +02:00
parent d0a8043edc
commit 5d6721192d
2 changed files with 22 additions and 4 deletions

View File

@@ -210,10 +210,10 @@ CanvasVectorLayerRenderer.prototype.compose = function(context, frameState, laye
rotateAtOffset(replayContext, rotation, rotateAtOffset(replayContext, rotation,
width / 2, height / 2); width / 2, height / 2);
if (replayContext != context) {
if (hasRenderListeners) { if (hasRenderListeners) {
this.dispatchRenderEvent(replayContext, frameState, transform); this.dispatchRenderEvent(replayContext, frameState, transform);
} }
if (replayContext != context) {
if (transparentLayer) { if (transparentLayer) {
const mainContextAlpha = context.globalAlpha; const mainContextAlpha = context.globalAlpha;
context.globalAlpha = layerState.opacity; context.globalAlpha = layerState.opacity;

View File

@@ -218,7 +218,7 @@ describe('ol.renderer.canvas.VectorLayer', function() {
}); });
}); });
describe('#prepareFrame', function() { describe('#prepareFrame and #compose', function() {
let frameState, projExtent, renderer, worldWidth, buffer; let frameState, projExtent, renderer, worldWidth, buffer;
beforeEach(function() { beforeEach(function() {
@@ -296,6 +296,24 @@ describe('ol.renderer.canvas.VectorLayer', function() {
expect(renderer.replayGroupChanged).to.be(false); expect(renderer.replayGroupChanged).to.be(false);
}); });
it.only('dispatches a render event when rendering to own context', function(done) {
const layer = renderer.getLayer();
layer.getSource().addFeature(new Feature(new Point([0, 0])));
layer.once('render', function() {
expect(true);
done();
});
frameState.extent = [-10000, -10000, 10000, 10000];
frameState.size = [100, 100];
frameState.viewState.center = [0, 0];
let composed = false;
if (renderer.prepareFrame(frameState, {})) {
composed = true;
renderer.compose(renderer.context, frameState, layer.getLayerState);
}
expect(composed).to.be(true);
});
}); });
}); });