Update backgrounds when function returns a different color

This commit is contained in:
Andreas Hocevar
2022-04-09 10:47:53 +02:00
parent c03f58fe5d
commit cbb18ab805
2 changed files with 27 additions and 4 deletions
+9 -4
View File
@@ -155,7 +155,8 @@ class CanvasLayerRenderer extends LayerRenderer {
target.style.opacity === '' && target.style.opacity === '' &&
opacity === 1 && opacity === 1 &&
(!opt_backgroundColor || (!opt_backgroundColor ||
(target.style.backgroundColor && (target &&
target.style.backgroundColor &&
equals( equals(
asArray(target.style.backgroundColor), asArray(target.style.backgroundColor),
asArray(opt_backgroundColor) asArray(opt_backgroundColor)
@@ -184,9 +185,6 @@ class CanvasLayerRenderer extends LayerRenderer {
style.position = 'absolute'; style.position = 'absolute';
style.width = '100%'; style.width = '100%';
style.height = '100%'; style.height = '100%';
if (opt_backgroundColor) {
style.backgroundColor = opt_backgroundColor;
}
context = createCanvasContext2D(); context = createCanvasContext2D();
const canvas = context.canvas; const canvas = context.canvas;
container.appendChild(canvas); container.appendChild(canvas);
@@ -197,6 +195,13 @@ class CanvasLayerRenderer extends LayerRenderer {
this.container = container; this.container = container;
this.context = context; this.context = context;
} }
if (
!this.containerReused &&
opt_backgroundColor &&
!this.container.style.backgroundColor
) {
this.container.style.backgroundColor = opt_backgroundColor;
}
} }
/** /**
@@ -318,6 +318,24 @@ describe('ol/renderer/canvas/VectorTileLayer', function () {
done(); done();
}); });
}); });
it('changes background when function returns a different color', function (done) {
let first = true;
layer.setBackground(function (resolution) {
expect(resolution).to.be(map.getView().getResolution());
const background = first === true ? undefined : 'rgba(255, 0, 0, 0.5)';
first = false;
return background;
});
map.once('rendercomplete', function () {
expect(layer.getRenderer().container.style.backgroundColor).to.be('');
map.renderSync();
expect(layer.getRenderer().container.style.backgroundColor).to.be(
'rgba(255, 0, 0, 0.5)'
);
done();
});
});
}); });
describe('#prepareFrame', function () { describe('#prepareFrame', function () {