Add ol.render.canvas.Immediate#drawAsync
This commit is contained in:
@@ -4,7 +4,9 @@
|
||||
|
||||
goog.provide('ol.render.canvas.Immediate');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.object');
|
||||
goog.require('goog.vec.Mat4');
|
||||
goog.require('ol.color');
|
||||
goog.require('ol.extent');
|
||||
@@ -26,6 +28,13 @@ goog.require('ol.vec.Mat4');
|
||||
*/
|
||||
ol.render.canvas.Immediate = function(context, pixelRatio, extent, transform) {
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {Object.<string,
|
||||
* Array.<function(ol.render.canvas.Immediate)>>}
|
||||
*/
|
||||
this.callbacksByZIndex_ = {};
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {CanvasRenderingContext2D}
|
||||
@@ -240,6 +249,20 @@ ol.render.canvas.Immediate.prototype.drawRings_ =
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.render.canvas.Immediate.prototype.drawAsync = function(zIndex, callback) {
|
||||
var zIndexKey = zIndex.toString();
|
||||
var callbacks = this.callbacksByZIndex_[zIndexKey];
|
||||
if (goog.isDef(callbacks)) {
|
||||
callbacks.push(callback);
|
||||
} else {
|
||||
this.callbacksByZIndex_[zIndexKey] = [callback];
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
@@ -402,6 +425,23 @@ ol.render.canvas.Immediate.prototype.drawMultiPolygonGeometry =
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* FIXME: empty description for jsdoc
|
||||
*/
|
||||
ol.render.canvas.Immediate.prototype.flush = function() {
|
||||
/** @type {Array.<number>} */
|
||||
var zs = goog.array.map(goog.object.getKeys(this.callbacksByZIndex_), Number);
|
||||
goog.array.sort(zs);
|
||||
var i, ii, callbacks, j, jj;
|
||||
for (i = 0, ii = zs.length; i < ii; ++i) {
|
||||
callbacks = this.callbacksByZIndex_[zs[i].toString()];
|
||||
for (j = 0, jj = callbacks.length; j < jj; ++j) {
|
||||
callbacks[j](this);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user