Rename batch to replay

This commit is contained in:
Tom Payne
2013-11-10 22:54:16 +01:00
parent df70731e0c
commit a0aad87adf
4 changed files with 140 additions and 136 deletions

View File

@@ -1,7 +1,7 @@
// FIXME decide default snapToPixel behaviour // FIXME decide default snapToPixel behaviour
// FIXME add option to apply snapToPixel to all coordinates? // FIXME add option to apply snapToPixel to all coordinates?
goog.provide('ol.render.canvas.BatchGroup'); goog.provide('ol.render.canvas.ReplayGroup');
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.asserts'); goog.require('goog.asserts');
@@ -9,7 +9,7 @@ goog.require('goog.object');
goog.require('ol.extent'); goog.require('ol.extent');
goog.require('ol.render'); goog.require('ol.render');
goog.require('ol.render.IRender'); goog.require('ol.render.IRender');
goog.require('ol.render.IReplayBatchGroup'); goog.require('ol.render.IReplayReplayGroup');
goog.require('ol.style.fill'); goog.require('ol.style.fill');
goog.require('ol.style.stroke'); goog.require('ol.style.stroke');
@@ -35,7 +35,7 @@ ol.render.canvas.Instruction = {
* @implements {ol.render.IRender} * @implements {ol.render.IRender}
* @protected * @protected
*/ */
ol.render.canvas.Batch = function() { ol.render.canvas.Replay = function() {
/** /**
* @protected * @protected
@@ -73,7 +73,7 @@ ol.render.canvas.Batch = function() {
* @protected * @protected
* @return {number} My end. * @return {number} My end.
*/ */
ol.render.canvas.Batch.prototype.appendFlatCoordinates = ol.render.canvas.Replay.prototype.appendFlatCoordinates =
function(flatCoordinates, offset, end, stride, close) { function(flatCoordinates, offset, end, stride, close) {
var myEnd = this.coordinates.length; var myEnd = this.coordinates.length;
var i; var i;
@@ -93,7 +93,7 @@ ol.render.canvas.Batch.prototype.appendFlatCoordinates =
* @param {CanvasRenderingContext2D} context Context. * @param {CanvasRenderingContext2D} context Context.
* @param {goog.vec.Mat4.AnyType} transform Transform. * @param {goog.vec.Mat4.AnyType} transform Transform.
*/ */
ol.render.canvas.Batch.prototype.draw = function(context, transform) { ol.render.canvas.Replay.prototype.draw = function(context, transform) {
var pixelCoordinates = ol.render.transformFlatCoordinates( var pixelCoordinates = ol.render.transformFlatCoordinates(
this.coordinates, 2, transform, this.pixelCoordinates_); this.coordinates, 2, transform, this.pixelCoordinates_);
this.pixelCoordinates_ = pixelCoordinates; // FIXME ? this.pixelCoordinates_ = pixelCoordinates; // FIXME ?
@@ -148,56 +148,57 @@ ol.render.canvas.Batch.prototype.draw = function(context, transform) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.Batch.prototype.drawFeature = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawFeature = goog.abstractMethod;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.Batch.prototype.drawLineStringGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawLineStringGeometry = goog.abstractMethod;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.Batch.prototype.drawMultiLineStringGeometry = ol.render.canvas.Replay.prototype.drawMultiLineStringGeometry =
goog.abstractMethod; goog.abstractMethod;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.Batch.prototype.drawPointGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawPointGeometry = goog.abstractMethod;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.Batch.prototype.drawMultiPointGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawMultiPointGeometry = goog.abstractMethod;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.Batch.prototype.drawPolygonGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawPolygonGeometry = goog.abstractMethod;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.Batch.prototype.drawMultiPolygonGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawMultiPolygonGeometry =
goog.abstractMethod;
/** /**
* FIXME empty description for jsdoc * FIXME empty description for jsdoc
*/ */
ol.render.canvas.Batch.prototype.finish = goog.nullFunction; ol.render.canvas.Replay.prototype.finish = goog.nullFunction;
/** /**
* @return {ol.Extent} Extent. * @return {ol.Extent} Extent.
*/ */
ol.render.canvas.Batch.prototype.getExtent = function() { ol.render.canvas.Replay.prototype.getExtent = function() {
return this.extent_; return this.extent_;
}; };
@@ -205,22 +206,22 @@ ol.render.canvas.Batch.prototype.getExtent = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.Batch.prototype.setFillStrokeStyle = goog.abstractMethod; ol.render.canvas.Replay.prototype.setFillStrokeStyle = goog.abstractMethod;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.Batch.prototype.setImageStyle = goog.abstractMethod; ol.render.canvas.Replay.prototype.setImageStyle = goog.abstractMethod;
/** /**
* @constructor * @constructor
* @extends {ol.render.canvas.Batch} * @extends {ol.render.canvas.Replay}
* @protected * @protected
*/ */
ol.render.canvas.ImageBatch = function() { ol.render.canvas.ImageReplay = function() {
goog.base(this); goog.base(this);
@@ -231,7 +232,7 @@ ol.render.canvas.ImageBatch = function() {
this.imageStyle_ = null; this.imageStyle_ = null;
}; };
goog.inherits(ol.render.canvas.ImageBatch, ol.render.canvas.Batch); goog.inherits(ol.render.canvas.ImageReplay, ol.render.canvas.Replay);
/** /**
@@ -242,7 +243,7 @@ goog.inherits(ol.render.canvas.ImageBatch, ol.render.canvas.Batch);
* @private * @private
* @return {number} My end. * @return {number} My end.
*/ */
ol.render.canvas.ImageBatch.prototype.drawCoordinates_ = ol.render.canvas.ImageReplay.prototype.drawCoordinates_ =
function(flatCoordinates, offset, end, stride) { function(flatCoordinates, offset, end, stride) {
return this.appendFlatCoordinates( return this.appendFlatCoordinates(
flatCoordinates, offset, end, stride, false); flatCoordinates, offset, end, stride, false);
@@ -252,7 +253,7 @@ ol.render.canvas.ImageBatch.prototype.drawCoordinates_ =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.ImageBatch.prototype.drawPointGeometry = ol.render.canvas.ImageReplay.prototype.drawPointGeometry =
function(pointGeometry) { function(pointGeometry) {
goog.asserts.assert(!goog.isNull(this.imageStyle_)); goog.asserts.assert(!goog.isNull(this.imageStyle_));
ol.extent.extend(this.extent_, pointGeometry.getExtent()); ol.extent.extend(this.extent_, pointGeometry.getExtent());
@@ -268,7 +269,7 @@ ol.render.canvas.ImageBatch.prototype.drawPointGeometry =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.ImageBatch.prototype.drawMultiPointGeometry = ol.render.canvas.ImageReplay.prototype.drawMultiPointGeometry =
function(multiPointGeometry) { function(multiPointGeometry) {
goog.asserts.assert(!goog.isNull(this.imageStyle_)); goog.asserts.assert(!goog.isNull(this.imageStyle_));
ol.extent.extend(this.extent_, multiPointGeometry.getExtent()); ol.extent.extend(this.extent_, multiPointGeometry.getExtent());
@@ -284,7 +285,7 @@ ol.render.canvas.ImageBatch.prototype.drawMultiPointGeometry =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.ImageBatch.prototype.finish = function() { ol.render.canvas.ImageReplay.prototype.finish = function() {
// FIXME this doesn't really protect us against further calls to draw*Geometry // FIXME this doesn't really protect us against further calls to draw*Geometry
this.imageStyle_ = null; this.imageStyle_ = null;
}; };
@@ -293,7 +294,7 @@ ol.render.canvas.ImageBatch.prototype.finish = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.ImageBatch.prototype.setImageStyle = function(imageStyle) { ol.render.canvas.ImageReplay.prototype.setImageStyle = function(imageStyle) {
this.imageStyle_ = imageStyle; this.imageStyle_ = imageStyle;
}; };
@@ -301,10 +302,10 @@ ol.render.canvas.ImageBatch.prototype.setImageStyle = function(imageStyle) {
/** /**
* @constructor * @constructor
* @extends {ol.render.canvas.Batch} * @extends {ol.render.canvas.Replay}
* @protected * @protected
*/ */
ol.render.canvas.LineStringBatch = function() { ol.render.canvas.LineStringReplay = function() {
goog.base(this); goog.base(this);
@@ -321,7 +322,7 @@ ol.render.canvas.LineStringBatch = function() {
}; };
}; };
goog.inherits(ol.render.canvas.LineStringBatch, ol.render.canvas.Batch); goog.inherits(ol.render.canvas.LineStringReplay, ol.render.canvas.Replay);
/** /**
@@ -332,7 +333,7 @@ goog.inherits(ol.render.canvas.LineStringBatch, ol.render.canvas.Batch);
* @private * @private
* @return {number} end. * @return {number} end.
*/ */
ol.render.canvas.LineStringBatch.prototype.drawFlatCoordinates_ = ol.render.canvas.LineStringReplay.prototype.drawFlatCoordinates_ =
function(flatCoordinates, offset, end, stride) { function(flatCoordinates, offset, end, stride) {
var state = this.state_; var state = this.state_;
if (!ol.style.stroke.equals(state.currentStrokeStyle, state.strokeStyle)) { if (!ol.style.stroke.equals(state.currentStrokeStyle, state.strokeStyle)) {
@@ -354,7 +355,7 @@ ol.render.canvas.LineStringBatch.prototype.drawFlatCoordinates_ =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.LineStringBatch.prototype.drawLineStringGeometry = ol.render.canvas.LineStringReplay.prototype.drawLineStringGeometry =
function(lineStringGeometry) { function(lineStringGeometry) {
goog.asserts.assert(!goog.isNull(this.state_)); goog.asserts.assert(!goog.isNull(this.state_));
ol.extent.extend(this.extent_, lineStringGeometry.getExtent()); ol.extent.extend(this.extent_, lineStringGeometry.getExtent());
@@ -368,7 +369,7 @@ ol.render.canvas.LineStringBatch.prototype.drawLineStringGeometry =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.LineStringBatch.prototype.drawMultiLineStringGeometry = ol.render.canvas.LineStringReplay.prototype.drawMultiLineStringGeometry =
function(multiLineStringGeometry) { function(multiLineStringGeometry) {
goog.asserts.assert(!goog.isNull(this.state_)); goog.asserts.assert(!goog.isNull(this.state_));
ol.extent.extend(this.extent_, multiLineStringGeometry.getExtent()); ol.extent.extend(this.extent_, multiLineStringGeometry.getExtent());
@@ -387,7 +388,7 @@ ol.render.canvas.LineStringBatch.prototype.drawMultiLineStringGeometry =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.LineStringBatch.prototype.finish = function() { ol.render.canvas.LineStringReplay.prototype.finish = function() {
var state = this.state_; var state = this.state_;
goog.asserts.assert(!goog.isNull(state)); goog.asserts.assert(!goog.isNull(state));
if (state.lastDraw != this.coordinates.length) { if (state.lastDraw != this.coordinates.length) {
@@ -400,7 +401,7 @@ ol.render.canvas.LineStringBatch.prototype.finish = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.LineStringBatch.prototype.setFillStrokeStyle = ol.render.canvas.LineStringReplay.prototype.setFillStrokeStyle =
function(fillStyle, strokeStyle) { function(fillStyle, strokeStyle) {
goog.asserts.assert(!goog.isNull(this.state_)); goog.asserts.assert(!goog.isNull(this.state_));
goog.asserts.assert(goog.isNull(fillStyle)); goog.asserts.assert(goog.isNull(fillStyle));
@@ -412,10 +413,10 @@ ol.render.canvas.LineStringBatch.prototype.setFillStrokeStyle =
/** /**
* @constructor * @constructor
* @extends {ol.render.canvas.Batch} * @extends {ol.render.canvas.Replay}
* @protected * @protected
*/ */
ol.render.canvas.PolygonBatch = function() { ol.render.canvas.PolygonReplay = function() {
goog.base(this); goog.base(this);
@@ -434,7 +435,7 @@ ol.render.canvas.PolygonBatch = function() {
}; };
}; };
goog.inherits(ol.render.canvas.PolygonBatch, ol.render.canvas.Batch); goog.inherits(ol.render.canvas.PolygonReplay, ol.render.canvas.Replay);
/** /**
@@ -445,7 +446,7 @@ goog.inherits(ol.render.canvas.PolygonBatch, ol.render.canvas.Batch);
* @private * @private
* @return {number} End. * @return {number} End.
*/ */
ol.render.canvas.PolygonBatch.prototype.drawFlatCoordinatess_ = ol.render.canvas.PolygonReplay.prototype.drawFlatCoordinatess_ =
function(flatCoordinates, offset, ends, stride) { function(flatCoordinates, offset, ends, stride) {
var state = this.state_; var state = this.state_;
this.instructions.push([ol.render.canvas.Instruction.BEGIN_PATH]); this.instructions.push([ol.render.canvas.Instruction.BEGIN_PATH]);
@@ -474,7 +475,7 @@ ol.render.canvas.PolygonBatch.prototype.drawFlatCoordinatess_ =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.PolygonBatch.prototype.drawPolygonGeometry = ol.render.canvas.PolygonReplay.prototype.drawPolygonGeometry =
function(polygonGeometry) { function(polygonGeometry) {
goog.asserts.assert(!goog.isNull(this.state_)); goog.asserts.assert(!goog.isNull(this.state_));
ol.extent.extend(this.extent_, polygonGeometry.getExtent()); ol.extent.extend(this.extent_, polygonGeometry.getExtent());
@@ -489,7 +490,7 @@ ol.render.canvas.PolygonBatch.prototype.drawPolygonGeometry =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.PolygonBatch.prototype.drawMultiPolygonGeometry = ol.render.canvas.PolygonReplay.prototype.drawMultiPolygonGeometry =
function(multiPolygonGeometry) { function(multiPolygonGeometry) {
goog.asserts.assert(!goog.isNull(this.state_)); goog.asserts.assert(!goog.isNull(this.state_));
ol.extent.extend(this.extent_, multiPolygonGeometry.getExtent()); ol.extent.extend(this.extent_, multiPolygonGeometry.getExtent());
@@ -509,7 +510,7 @@ ol.render.canvas.PolygonBatch.prototype.drawMultiPolygonGeometry =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.PolygonBatch.prototype.finish = function() { ol.render.canvas.PolygonReplay.prototype.finish = function() {
goog.asserts.assert(!goog.isNull(this.state_)); goog.asserts.assert(!goog.isNull(this.state_));
this.state_ = null; this.state_ = null;
}; };
@@ -518,7 +519,7 @@ ol.render.canvas.PolygonBatch.prototype.finish = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.PolygonBatch.prototype.setFillStrokeStyle = ol.render.canvas.PolygonReplay.prototype.setFillStrokeStyle =
function(fillStyle, strokeStyle) { function(fillStyle, strokeStyle) {
goog.asserts.assert(!goog.isNull(this.state_)); goog.asserts.assert(!goog.isNull(this.state_));
goog.asserts.assert(!goog.isNull(fillStyle) || !goog.isNull(strokeStyle)); goog.asserts.assert(!goog.isNull(fillStyle) || !goog.isNull(strokeStyle));
@@ -530,7 +531,7 @@ ol.render.canvas.PolygonBatch.prototype.setFillStrokeStyle =
/** /**
* @private * @private
*/ */
ol.render.canvas.PolygonBatch.prototype.setFillStrokeStyles_ = function() { ol.render.canvas.PolygonReplay.prototype.setFillStrokeStyles_ = function() {
var state = this.state_; var state = this.state_;
if (!goog.isNull(state.fillStyle) && if (!goog.isNull(state.fillStyle) &&
!ol.style.fill.equals(state.currentFillStyle, state.fillStyle)) { !ol.style.fill.equals(state.currentFillStyle, state.fillStyle)) {
@@ -550,16 +551,16 @@ ol.render.canvas.PolygonBatch.prototype.setFillStrokeStyles_ = function() {
/** /**
* @constructor * @constructor
* @implements {ol.render.IReplayBatchGroup} * @implements {ol.render.IReplayReplayGroup}
*/ */
ol.render.canvas.BatchGroup = function() { ol.render.canvas.ReplayGroup = function() {
/** /**
* @private * @private
* @type {Object.<string, * @type {Object.<string,
* Object.<ol.render.BatchType, ol.render.canvas.Batch>>} * Object.<ol.render.ReplayType, ol.render.canvas.Replay>>}
*/ */
this.batchesByZIndex_ = {}; this.replayesByZIndex_ = {};
}; };
@@ -569,19 +570,19 @@ ol.render.canvas.BatchGroup = function() {
* @param {ol.Extent} extent Extent. * @param {ol.Extent} extent Extent.
* @param {goog.vec.Mat4.AnyType} transform Transform. * @param {goog.vec.Mat4.AnyType} transform Transform.
*/ */
ol.render.canvas.BatchGroup.prototype.draw = ol.render.canvas.ReplayGroup.prototype.draw =
function(context, extent, transform) { function(context, extent, transform) {
/** @type {Array.<number>} */ /** @type {Array.<number>} */
var zs = goog.array.map(goog.object.getKeys(this.batchesByZIndex_), Number); var zs = goog.array.map(goog.object.getKeys(this.replayesByZIndex_), Number);
goog.array.sort(zs); goog.array.sort(zs);
var i, ii; var i, ii;
for (i = 0, ii = zs.length; i < ii; ++i) { for (i = 0, ii = zs.length; i < ii; ++i) {
var batches = this.batchesByZIndex_[zs[i].toString()]; var replayes = this.replayesByZIndex_[zs[i].toString()];
var batchType; var replayType;
for (batchType in batches) { for (replayType in replayes) {
var batch = batches[batchType]; var replay = replayes[replayType];
if (ol.extent.intersects(extent, batch.getExtent())) { if (ol.extent.intersects(extent, replay.getExtent())) {
batch.draw(context, transform); replay.draw(context, transform);
} }
} }
} }
@@ -591,13 +592,13 @@ ol.render.canvas.BatchGroup.prototype.draw =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.BatchGroup.prototype.finish = function() { ol.render.canvas.ReplayGroup.prototype.finish = function() {
var zKey; var zKey;
for (zKey in this.batchesByZIndex_) { for (zKey in this.replayesByZIndex_) {
var batches = this.batchesByZIndex_[zKey]; var replayes = this.replayesByZIndex_[zKey];
var batchKey; var replayKey;
for (batchKey in batches) { for (replayKey in replayes) {
batches[batchKey].finish(); replayes[replayKey].finish();
} }
} }
}; };
@@ -606,39 +607,40 @@ ol.render.canvas.BatchGroup.prototype.finish = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.BatchGroup.prototype.getBatch = function(zIndex, batchType) { ol.render.canvas.ReplayGroup.prototype.getReplay =
function(zIndex, replayType) {
var zIndexKey = goog.isDef(zIndex) ? zIndex.toString() : '0'; var zIndexKey = goog.isDef(zIndex) ? zIndex.toString() : '0';
var batches = this.batchesByZIndex_[zIndexKey]; var replayes = this.replayesByZIndex_[zIndexKey];
if (!goog.isDef(batches)) { if (!goog.isDef(replayes)) {
batches = {}; replayes = {};
this.batchesByZIndex_[zIndexKey] = batches; this.replayesByZIndex_[zIndexKey] = replayes;
} }
var batch = batches[batchType]; var replay = replayes[replayType];
if (!goog.isDef(batch)) { if (!goog.isDef(replay)) {
var constructor = ol.render.canvas.BATCH_CONSTRUCTORS_[batchType]; var constructor = ol.render.canvas.BATCH_CONSTRUCTORS_[replayType];
goog.asserts.assert(goog.isDef(constructor)); goog.asserts.assert(goog.isDef(constructor));
batch = new constructor(); replay = new constructor();
batches[batchType] = batch; replayes[replayType] = replay;
} }
return batch; return replay;
}; };
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.render.canvas.BatchGroup.prototype.isEmpty = function() { ol.render.canvas.ReplayGroup.prototype.isEmpty = function() {
return goog.object.isEmpty(this.batchesByZIndex_); return goog.object.isEmpty(this.replayesByZIndex_);
}; };
/** /**
* @const * @const
* @private * @private
* @type {Object.<ol.render.BatchType, function(new: ol.render.canvas.Batch)>} * @type {Object.<ol.render.ReplayType, function(new: ol.render.canvas.Replay)>}
*/ */
ol.render.canvas.BATCH_CONSTRUCTORS_ = { ol.render.canvas.BATCH_CONSTRUCTORS_ = {
'Image': ol.render.canvas.ImageBatch, 'Image': ol.render.canvas.ImageReplay,
'LineString': ol.render.canvas.LineStringBatch, 'LineString': ol.render.canvas.LineStringReplay,
'Polygon': ol.render.canvas.PolygonBatch 'Polygon': ol.render.canvas.PolygonReplay
}; };

View File

@@ -1,4 +1,4 @@
goog.provide('ol.render.IReplayBatchGroup'); goog.provide('ol.render.IReplayReplayGroup');
goog.require('goog.functions'); goog.require('goog.functions');
goog.require('ol.render.IRender'); goog.require('ol.render.IRender');
@@ -7,7 +7,7 @@ goog.require('ol.render.IRender');
/** /**
* @enum {string} * @enum {string}
*/ */
ol.render.BatchType = { ol.render.ReplayType = {
IMAGE: 'Image', IMAGE: 'Image',
LINE_STRING: 'LineString', LINE_STRING: 'LineString',
POLYGON: 'Polygon' POLYGON: 'Polygon'
@@ -18,28 +18,29 @@ ol.render.BatchType = {
/** /**
* @interface * @interface
*/ */
ol.render.IReplayBatchGroup = function() { ol.render.IReplayReplayGroup = function() {
}; };
/** /**
* FIXME empty description for jsdoc * FIXME empty description for jsdoc
*/ */
ol.render.IReplayBatchGroup.prototype.finish = function() { ol.render.IReplayReplayGroup.prototype.finish = function() {
}; };
/** /**
* @param {number|undefined} zIndex Z index. * @param {number|undefined} zIndex Z index.
* @param {ol.render.BatchType} batchType Batch type. * @param {ol.render.ReplayType} replayType Replay type.
* @return {ol.render.IRender} Batch. * @return {ol.render.IRender} Replay.
*/ */
ol.render.IReplayBatchGroup.prototype.getBatch = function(zIndex, batchType) { ol.render.IReplayReplayGroup.prototype.getReplay =
function(zIndex, replayType) {
}; };
/** /**
* @return {boolean} Is empty. * @return {boolean} Is empty.
*/ */
ol.render.IReplayBatchGroup.prototype.isEmpty = function() { ol.render.IReplayReplayGroup.prototype.isEmpty = function() {
}; };

View File

@@ -7,140 +7,141 @@ goog.require('ol.geom.MultiPoint');
goog.require('ol.geom.MultiPolygon'); goog.require('ol.geom.MultiPolygon');
goog.require('ol.geom.Point'); goog.require('ol.geom.Point');
goog.require('ol.geom.Polygon'); goog.require('ol.geom.Polygon');
goog.require('ol.render.IReplayBatchGroup'); goog.require('ol.render.IReplayReplayGroup');
goog.require('ol.style.Style'); goog.require('ol.style.Style');
/** /**
* @param {ol.render.IReplayBatchGroup} batchGroup Batch group. * @param {ol.render.IReplayReplayGroup} replayGroup Replay group.
* @param {ol.Feature} feature Feature. * @param {ol.Feature} feature Feature.
* @param {ol.style.Style} style Style. * @param {ol.style.Style} style Style.
*/ */
ol.renderer.vector.renderFeature = function(batchGroup, feature, style) { ol.renderer.vector.renderFeature = function(replayGroup, feature, style) {
var geometry = feature.getGeometry(); var geometry = feature.getGeometry();
var geometryRenderer = var geometryRenderer =
ol.renderer.vector.GEOMETRY_RENDERERS_[geometry.getType()]; ol.renderer.vector.GEOMETRY_RENDERERS_[geometry.getType()];
goog.asserts.assert(goog.isDef(geometryRenderer)); goog.asserts.assert(goog.isDef(geometryRenderer));
geometryRenderer(batchGroup, geometry, style); geometryRenderer(replayGroup, geometry, style);
}; };
/** /**
* @param {ol.render.IReplayBatchGroup} batchGroup Batch group. * @param {ol.render.IReplayReplayGroup} replayGroup Replay group.
* @param {ol.geom.Geometry} geometry Geometry. * @param {ol.geom.Geometry} geometry Geometry.
* @param {ol.style.Style} style Style. * @param {ol.style.Style} style Style.
* @private * @private
*/ */
ol.renderer.vector.renderLineStringGeometry_ = ol.renderer.vector.renderLineStringGeometry_ =
function(batchGroup, geometry, style) { function(replayGroup, geometry, style) {
if (goog.isNull(style.stroke)) { if (goog.isNull(style.stroke)) {
return; return;
} }
goog.asserts.assert(geometry instanceof ol.geom.LineString); goog.asserts.assert(geometry instanceof ol.geom.LineString);
var lineStringGeometry = /** @type {ol.geom.LineString} */ (geometry); var lineStringGeometry = /** @type {ol.geom.LineString} */ (geometry);
var batch = batchGroup.getBatch( var replay = replayGroup.getReplay(
style.zIndex, ol.render.BatchType.LINE_STRING); style.zIndex, ol.render.ReplayType.LINE_STRING);
batch.setFillStrokeStyle(null, style.stroke); replay.setFillStrokeStyle(null, style.stroke);
batch.drawLineStringGeometry(lineStringGeometry); replay.drawLineStringGeometry(lineStringGeometry);
}; };
/** /**
* @param {ol.render.IReplayBatchGroup} batchGroup Batch group. * @param {ol.render.IReplayReplayGroup} replayGroup Replay group.
* @param {ol.geom.Geometry} geometry Geometry. * @param {ol.geom.Geometry} geometry Geometry.
* @param {ol.style.Style} style Style. * @param {ol.style.Style} style Style.
* @private * @private
*/ */
ol.renderer.vector.renderMultiLineStringGeometry_ = ol.renderer.vector.renderMultiLineStringGeometry_ =
function(batchGroup, geometry, style) { function(replayGroup, geometry, style) {
if (goog.isNull(style.stroke)) { if (goog.isNull(style.stroke)) {
return; return;
} }
goog.asserts.assert(geometry instanceof ol.geom.MultiLineString); goog.asserts.assert(geometry instanceof ol.geom.MultiLineString);
var multiLineStringGeometry = /** @type {ol.geom.MultiLineString} */ var multiLineStringGeometry = /** @type {ol.geom.MultiLineString} */
(geometry); (geometry);
var batch = batchGroup.getBatch( var replay = replayGroup.getReplay(
style.zIndex, ol.render.BatchType.LINE_STRING); style.zIndex, ol.render.ReplayType.LINE_STRING);
batch.setFillStrokeStyle(null, style.stroke); replay.setFillStrokeStyle(null, style.stroke);
batch.drawMultiLineStringGeometry(multiLineStringGeometry); replay.drawMultiLineStringGeometry(multiLineStringGeometry);
}; };
/** /**
* @param {ol.render.IReplayBatchGroup} batchGroup Batch group. * @param {ol.render.IReplayReplayGroup} replayGroup Replay group.
* @param {ol.geom.Geometry} geometry Geometry. * @param {ol.geom.Geometry} geometry Geometry.
* @param {ol.style.Style} style Style. * @param {ol.style.Style} style Style.
* @private * @private
*/ */
ol.renderer.vector.renderMultiPolygonGeometry_ = ol.renderer.vector.renderMultiPolygonGeometry_ =
function(batchGroup, geometry, style) { function(replayGroup, geometry, style) {
if (goog.isNull(style.stroke) && goog.isNull(style.fill)) { if (goog.isNull(style.stroke) && goog.isNull(style.fill)) {
return; return;
} }
goog.asserts.assert(geometry instanceof ol.geom.MultiPolygon); goog.asserts.assert(geometry instanceof ol.geom.MultiPolygon);
var multiPolygonGeometry = /** @type {ol.geom.MultiPolygon} */ var multiPolygonGeometry = /** @type {ol.geom.MultiPolygon} */
(geometry); (geometry);
var batch = batchGroup.getBatch( var replay = replayGroup.getReplay(
style.zIndex, ol.render.BatchType.POLYGON); style.zIndex, ol.render.ReplayType.POLYGON);
batch.setFillStrokeStyle(style.fill, style.stroke); replay.setFillStrokeStyle(style.fill, style.stroke);
batch.drawMultiPolygonGeometry(multiPolygonGeometry); replay.drawMultiPolygonGeometry(multiPolygonGeometry);
}; };
/** /**
* @param {ol.render.IReplayBatchGroup} batchGroup Batch group. * @param {ol.render.IReplayReplayGroup} replayGroup Replay group.
* @param {ol.geom.Geometry} geometry Geometry. * @param {ol.geom.Geometry} geometry Geometry.
* @param {ol.style.Style} style Style. * @param {ol.style.Style} style Style.
* @private * @private
*/ */
ol.renderer.vector.renderPointGeometry_ = ol.renderer.vector.renderPointGeometry_ =
function(batchGroup, geometry, style) { function(replayGroup, geometry, style) {
if (goog.isNull(style.image)) { if (goog.isNull(style.image)) {
return; return;
} }
goog.asserts.assert(geometry instanceof ol.geom.Point); goog.asserts.assert(geometry instanceof ol.geom.Point);
var pointGeometry = /** @type {ol.geom.Point} */ (geometry); var pointGeometry = /** @type {ol.geom.Point} */ (geometry);
var batch = batchGroup.getBatch(style.zIndex, ol.render.BatchType.IMAGE); var replay = replayGroup.getReplay(style.zIndex, ol.render.ReplayType.IMAGE);
batch.setImageStyle(style.image); replay.setImageStyle(style.image);
batch.drawPointGeometry(pointGeometry); replay.drawPointGeometry(pointGeometry);
}; };
/** /**
* @param {ol.render.IReplayBatchGroup} batchGroup Batch group. * @param {ol.render.IReplayReplayGroup} replayGroup Replay group.
* @param {ol.geom.Geometry} geometry Geometry. * @param {ol.geom.Geometry} geometry Geometry.
* @param {ol.style.Style} style Style. * @param {ol.style.Style} style Style.
* @private * @private
*/ */
ol.renderer.vector.renderMultiPointGeometry_ = ol.renderer.vector.renderMultiPointGeometry_ =
function(batchGroup, geometry, style) { function(replayGroup, geometry, style) {
if (goog.isNull(style.image)) { if (goog.isNull(style.image)) {
return; return;
} }
goog.asserts.assert(geometry instanceof ol.geom.MultiPoint); goog.asserts.assert(geometry instanceof ol.geom.MultiPoint);
var multiPointGeometry = /** @type {ol.geom.MultiPoint} */ (geometry); var multiPointGeometry = /** @type {ol.geom.MultiPoint} */ (geometry);
var batch = batchGroup.getBatch(style.zIndex, ol.render.BatchType.IMAGE); var replay = replayGroup.getReplay(style.zIndex, ol.render.ReplayType.IMAGE);
batch.setImageStyle(style.image); replay.setImageStyle(style.image);
batch.drawMultiPointGeometry(multiPointGeometry); replay.drawMultiPointGeometry(multiPointGeometry);
}; };
/** /**
* @param {ol.render.IReplayBatchGroup} batchGroup Batch group. * @param {ol.render.IReplayReplayGroup} replayGroup Replay group.
* @param {ol.geom.Geometry} geometry Geometry. * @param {ol.geom.Geometry} geometry Geometry.
* @param {ol.style.Style} style Style. * @param {ol.style.Style} style Style.
* @private * @private
*/ */
ol.renderer.vector.renderPolygonGeometry_ = ol.renderer.vector.renderPolygonGeometry_ =
function(batchGroup, geometry, style) { function(replayGroup, geometry, style) {
if (goog.isNull(style.fill) && goog.isNull(style.stroke)) { if (goog.isNull(style.fill) && goog.isNull(style.stroke)) {
return; return;
} }
goog.asserts.assert(geometry instanceof ol.geom.Polygon); goog.asserts.assert(geometry instanceof ol.geom.Polygon);
var polygonGeometry = /** @type {ol.geom.Polygon} */ (geometry); var polygonGeometry = /** @type {ol.geom.Polygon} */ (geometry);
var batch = batchGroup.getBatch(style.zIndex, ol.render.BatchType.POLYGON); var replay = replayGroup.getReplay(
batch.setFillStrokeStyle(style.fill, style.stroke); style.zIndex, ol.render.ReplayType.POLYGON);
batch.drawPolygonGeometry(polygonGeometry); replay.setFillStrokeStyle(style.fill, style.stroke);
replay.drawPolygonGeometry(polygonGeometry);
}; };
@@ -148,7 +149,7 @@ ol.renderer.vector.renderPolygonGeometry_ =
* @const * @const
* @private * @private
* @type {Object.<ol.geom.GeometryType, * @type {Object.<ol.geom.GeometryType,
* function(ol.render.IReplayBatchGroup, ol.geom.Geometry, * function(ol.render.IReplayReplayGroup, ol.geom.Geometry,
* ol.style.Style)>} * ol.style.Style)>}
*/ */
ol.renderer.vector.GEOMETRY_RENDERERS_ = { ol.renderer.vector.GEOMETRY_RENDERERS_ = {

View File

@@ -5,8 +5,8 @@ goog.require('ol.ViewHint');
goog.require('ol.extent'); goog.require('ol.extent');
goog.require('ol.layer.VectorEvent'); goog.require('ol.layer.VectorEvent');
goog.require('ol.layer.VectorEventType'); goog.require('ol.layer.VectorEventType');
goog.require('ol.render.canvas.BatchGroup');
goog.require('ol.render.canvas.Render'); goog.require('ol.render.canvas.Render');
goog.require('ol.render.canvas.ReplayGroup');
goog.require('ol.renderer.canvas.Layer'); goog.require('ol.renderer.canvas.Layer');
goog.require('ol.renderer.vector'); goog.require('ol.renderer.vector');
goog.require('ol.style.DefaultStyleFunction'); goog.require('ol.style.DefaultStyleFunction');
@@ -49,9 +49,9 @@ ol.renderer.canvas.VectorLayer = function(mapRenderer, vectorLayer) {
/** /**
* @private * @private
* @type {ol.render.canvas.BatchGroup} * @type {ol.render.canvas.ReplayGroup}
*/ */
this.batchGroup_ = null; this.replayGroup_ = null;
}; };
goog.inherits(ol.renderer.canvas.VectorLayer, ol.renderer.canvas.Layer); goog.inherits(ol.renderer.canvas.VectorLayer, ol.renderer.canvas.Layer);
@@ -63,8 +63,8 @@ goog.inherits(ol.renderer.canvas.VectorLayer, ol.renderer.canvas.Layer);
ol.renderer.canvas.VectorLayer.prototype.composeFrame = ol.renderer.canvas.VectorLayer.prototype.composeFrame =
function(frameState, layerState, context) { function(frameState, layerState, context) {
var batchGroup = this.batchGroup_; var replayGroup = this.replayGroup_;
if (goog.isNull(batchGroup)) { if (goog.isNull(replayGroup)) {
return; return;
} }
@@ -90,7 +90,7 @@ ol.renderer.canvas.VectorLayer.prototype.composeFrame =
0); 0);
context.globalAlpha = layerState.opacity; context.globalAlpha = layerState.opacity;
batchGroup.draw(context, frameState.extent, transform); replayGroup.draw(context, frameState.extent, transform);
var vectorLayer = this.getVectorLayer(); var vectorLayer = this.getVectorLayer();
if (vectorLayer.hasListener(ol.layer.VectorEventType.POSTRENDER)) { if (vectorLayer.hasListener(ol.layer.VectorEventType.POSTRENDER)) {
@@ -141,25 +141,25 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
extent[2] = frameStateExtent[2] + xBuffer; extent[2] = frameStateExtent[2] + xBuffer;
extent[3] = frameStateExtent[3] + yBuffer; extent[3] = frameStateExtent[3] + yBuffer;
// FIXME dispose of old batchGroup in post render // FIXME dispose of old replayGroup in post render
goog.dispose(this.batchGroup_); goog.dispose(this.replayGroup_);
this.batchGroup = null; this.replayGroup = null;
var styleFunction = vectorLayer.getStyleFunction(); var styleFunction = vectorLayer.getStyleFunction();
if (!goog.isDef(styleFunction)) { if (!goog.isDef(styleFunction)) {
styleFunction = ol.style.DefaultStyleFunction; styleFunction = ol.style.DefaultStyleFunction;
} }
var batchGroup = new ol.render.canvas.BatchGroup(); var replayGroup = new ol.render.canvas.ReplayGroup();
vectorSource.forEachFeatureInExtent(extent, function(feature) { vectorSource.forEachFeatureInExtent(extent, function(feature) {
var style = styleFunction(feature); var style = styleFunction(feature);
ol.renderer.vector.renderFeature(batchGroup, feature, style); ol.renderer.vector.renderFeature(replayGroup, feature, style);
}, this); }, this);
batchGroup.finish(); replayGroup.finish();
this.renderedResolution_ = frameState.view2DState.resolution; this.renderedResolution_ = frameState.view2DState.resolution;
this.renderedRevision_ = vectorSource.getRevision(); this.renderedRevision_ = vectorSource.getRevision();
if (!batchGroup.isEmpty()) { if (!replayGroup.isEmpty()) {
this.batchGroup_ = batchGroup; this.replayGroup_ = replayGroup;
} }
}; };