Reset image when empty

This commit is contained in:
Andreas Hocevar
2022-03-10 16:27:24 +01:00
parent 7d9cf83efe
commit 46ddbd7e0e
2 changed files with 22 additions and 2 deletions

View File

@@ -2,6 +2,7 @@
* @module ol/renderer/canvas/ImageLayer * @module ol/renderer/canvas/ImageLayer
*/ */
import CanvasLayerRenderer from './Layer.js'; import CanvasLayerRenderer from './Layer.js';
import ImageState from '../../ImageState.js';
import ViewHint from '../../ViewHint.js'; import ViewHint from '../../ViewHint.js';
import {ENABLE_RASTER_REPROJECTION} from '../../reproj/common.js'; import {ENABLE_RASTER_REPROJECTION} from '../../reproj/common.js';
import {IMAGE_SMOOTHING_DISABLED, IMAGE_SMOOTHING_ENABLED} from './common.js'; import {IMAGE_SMOOTHING_DISABLED, IMAGE_SMOOTHING_ENABLED} from './common.js';
@@ -91,8 +92,12 @@ class CanvasImageLayerRenderer extends CanvasLayerRenderer {
pixelRatio, pixelRatio,
projection projection
); );
if (image && this.loadImage(image)) { if (image) {
this.image_ = image; if (this.loadImage(image)) {
this.image_ = image;
} else if (image.getState() === ImageState.EMPTY) {
this.image_ = null;
}
} }
} else { } else {
this.image_ = null; this.image_ = null;

View File

@@ -1,6 +1,8 @@
import CanvasImageLayerRenderer from '../../../../../../src/ol/renderer/canvas/ImageLayer.js'; import CanvasImageLayerRenderer from '../../../../../../src/ol/renderer/canvas/ImageLayer.js';
import Feature from '../../../../../../src/ol/Feature.js'; import Feature from '../../../../../../src/ol/Feature.js';
import ImageLayer from '../../../../../../src/ol/layer/Image.js'; import ImageLayer from '../../../../../../src/ol/layer/Image.js';
import ImageState from '../../../../../../src/ol/ImageState.js';
import ImageWrapper from '../../../../../../src/ol/Image.js';
import Map from '../../../../../../src/ol/Map.js'; import Map from '../../../../../../src/ol/Map.js';
import Point from '../../../../../../src/ol/geom/Point.js'; import Point from '../../../../../../src/ol/geom/Point.js';
import Projection from '../../../../../../src/ol/proj/Projection.js'; import Projection from '../../../../../../src/ol/proj/Projection.js';
@@ -446,5 +448,18 @@ describe('ol/renderer/canvas/ImageLayer', function () {
} }
}); });
}); });
it('resets image when empty', function (done) {
const frameState = createLayerFrameState([0, 0, 100, 100]);
layer.getSource().on('imageloadend', function () {
if (renderer.prepareFrame(frameState)) {
renderer.renderFrame(frameState, null);
}
expect(renderer.image_).to.be.a(ImageWrapper);
renderer.image_.state = ImageState.EMPTY;
expect(renderer.prepareFrame(frameState)).to.be(false);
expect(renderer.image_).to.be(null);
done();
});
});
}); });
}); });