Merge pull request #3107 from elemoine/imagestate

Also listen on loading images
This commit is contained in:
Éric Lemoine
2015-01-21 12:50:31 +01:00
8 changed files with 133 additions and 35 deletions

View File

@@ -1,14 +1,11 @@
goog.provide('ol.renderer.webgl.ImageLayer');
goog.require('goog.asserts');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('goog.vec.Mat4');
goog.require('goog.webgl');
goog.require('ol.Coordinate');
goog.require('ol.Extent');
goog.require('ol.ImageBase');
goog.require('ol.ImageState');
goog.require('ol.ViewHint');
goog.require('ol.extent');
goog.require('ol.layer.Image');
@@ -133,12 +130,8 @@ ol.renderer.webgl.ImageLayer.prototype.prepareFrame =
var image_ = imageSource.getImage(renderedExtent, viewResolution,
frameState.pixelRatio, projection);
if (!goog.isNull(image_)) {
var imageState = image_.getState();
if (imageState == ol.ImageState.IDLE) {
goog.events.listenOnce(image_, goog.events.EventType.CHANGE,
this.handleImageChange, false, this);
image_.load();
} else if (imageState == ol.ImageState.LOADED) {
var loaded = this.loadImage(image_);
if (loaded) {
image = image_;
texture = this.createTexture_(image_);
if (!goog.isNull(this.texture)) {

View File

@@ -108,7 +108,7 @@ ol.renderer.webgl.VectorLayer.prototype.forEachFeatureAtPixel =
* @param {goog.events.Event} event Image style change event.
* @private
*/
ol.renderer.webgl.VectorLayer.prototype.handleImageChange_ =
ol.renderer.webgl.VectorLayer.prototype.handleStyleImageChange_ =
function(event) {
this.renderIfReadyAndVisible();
};
@@ -233,7 +233,7 @@ ol.renderer.webgl.VectorLayer.prototype.renderFeature =
loading = ol.renderer.vector.renderFeature(
replayGroup, feature, styles[i],
ol.renderer.vector.getSquaredTolerance(resolution, pixelRatio),
this.handleImageChange_, this) || loading;
this.handleStyleImageChange_, this) || loading;
}
return loading;
};