Immediate rendering for all vector contexts

This commit is contained in:
Tim Schaub
2016-03-18 17:31:14 -06:00
parent f0814628b7
commit 0eb7e8220d
5 changed files with 3 additions and 70 deletions

View File

@@ -20,9 +20,6 @@ goog.require('ol.vec.Mat4');
* new ol.geom.Polygon([[[0, 0], [100, 100], [100, 0], [0, 0]]]));
* ```
*
* Note that {@link ol.render.canvas.Immediate#drawAsync} and
* {@link ol.render.canvas.Immediate#drawFeature} cannot be used.
*
* @param {CanvasRenderingContext2D} context Canvas context.
* @param {olx.render.ToContextOptions=} opt_options Options.
* @return {ol.render.canvas.Immediate} Canvas Immediate.

View File

@@ -12,13 +12,6 @@ ol.render.VectorContext = function() {
};
/**
* @param {number} zIndex Z index.
* @param {function(ol.render.VectorContext)} callback Callback.
*/
ol.render.VectorContext.prototype.drawAsync = goog.abstractMethod;
/**
* Render a geometry.
*

View File

@@ -1,6 +1,5 @@
goog.provide('ol.render.webgl.Immediate');
goog.require('goog.asserts');
goog.require('ol.array');
goog.require('ol.extent');
goog.require('ol.geom.GeometryType');
goog.require('ol.render.VectorContext');
@@ -64,52 +63,10 @@ ol.render.webgl.Immediate = function(context, center, resolution, rotation, size
*/
this.imageStyle_ = null;
/**
* @private
* @type {!Object.<string,
* Array.<function(ol.render.webgl.Immediate)>>}
*/
this.callbacksByZIndex_ = {};
};
goog.inherits(ol.render.webgl.Immediate, ol.render.VectorContext);
/**
* FIXME: empty description for jsdoc
*/
ol.render.webgl.Immediate.prototype.flush = function() {
/** @type {Array.<number>} */
var zs = Object.keys(this.callbacksByZIndex_).map(Number);
zs.sort(ol.array.numberSafeCompareFunction);
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);
}
}
};
/**
* Register a function to be called for rendering at a given zIndex. The
* function will be called asynchronously. The callback will receive a
* reference to {@link ol.render.canvas.Immediate} context for drawing.
* @param {number} zIndex Z index.
* @param {function(ol.render.webgl.Immediate)} callback Callback.
* @api
*/
ol.render.webgl.Immediate.prototype.drawAsync = function(zIndex, callback) {
var zIndexKey = zIndex.toString();
var callbacks = this.callbacksByZIndex_[zIndexKey];
if (callbacks !== undefined) {
callbacks.push(callback);
} else {
this.callbacksByZIndex_[zIndexKey] = [callback];
}
};
/**
* Set the rendering style. Note that since this is an immediate rendering API,
* any `zIndex` on the provided style will be ignored.
@@ -157,15 +114,9 @@ ol.render.webgl.Immediate.prototype.drawFeature = function(feature, style) {
!ol.extent.intersects(this.extent_, geometry.getExtent())) {
return;
}
var zIndex = style.getZIndex();
if (zIndex === undefined) {
zIndex = 0;
}
this.drawAsync(zIndex, function(render) {
render.setStyle(style);
goog.asserts.assert(geometry, 'geometry must be truthy');
render.drawGeometry(geometry);
});
this.setStyle(style);
goog.asserts.assert(geometry, 'geometry must be truthy');
this.drawGeometry(geometry);
};

View File

@@ -245,12 +245,6 @@ ol.render.webgl.ImageReplay.prototype.getDeleteResourcesFunction = function(cont
};
/**
* @inheritDoc
*/
ol.render.webgl.ImageReplay.prototype.drawAsync = goog.abstractMethod;
/**
* @param {Array.<number>} flatCoordinates Flat coordinates.
* @param {number} offset Offset.

View File

@@ -288,8 +288,6 @@ ol.renderer.webgl.Map.prototype.dispatchComposeEvent_ = function(type, frameStat
var composeEvent = new ol.render.Event(type, map, vectorContext,
frameState, null, context);
map.dispatchEvent(composeEvent);
vectorContext.flush();
}
};