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 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.asserts');
@@ -9,7 +9,7 @@ goog.require('goog.object');
goog.require('ol.extent');
goog.require('ol.render');
goog.require('ol.render.IRender');
goog.require('ol.render.IReplayBatchGroup');
goog.require('ol.render.IReplayReplayGroup');
goog.require('ol.style.fill');
goog.require('ol.style.stroke');
@@ -35,7 +35,7 @@ ol.render.canvas.Instruction = {
* @implements {ol.render.IRender}
* @protected
*/
ol.render.canvas.Batch = function() {
ol.render.canvas.Replay = function() {
/**
* @protected
@@ -73,7 +73,7 @@ ol.render.canvas.Batch = function() {
* @protected
* @return {number} My end.
*/
ol.render.canvas.Batch.prototype.appendFlatCoordinates =
ol.render.canvas.Replay.prototype.appendFlatCoordinates =
function(flatCoordinates, offset, end, stride, close) {
var myEnd = this.coordinates.length;
var i;
@@ -93,7 +93,7 @@ ol.render.canvas.Batch.prototype.appendFlatCoordinates =
* @param {CanvasRenderingContext2D} context Context.
* @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(
this.coordinates, 2, transform, this.pixelCoordinates_);
this.pixelCoordinates_ = pixelCoordinates; // FIXME ?
@@ -148,56 +148,57 @@ ol.render.canvas.Batch.prototype.draw = function(context, transform) {
/**
* @inheritDoc
*/
ol.render.canvas.Batch.prototype.drawFeature = goog.abstractMethod;
ol.render.canvas.Replay.prototype.drawFeature = goog.abstractMethod;
/**
* @inheritDoc
*/
ol.render.canvas.Batch.prototype.drawLineStringGeometry = goog.abstractMethod;
ol.render.canvas.Replay.prototype.drawLineStringGeometry = goog.abstractMethod;
/**
* @inheritDoc
*/
ol.render.canvas.Batch.prototype.drawMultiLineStringGeometry =
ol.render.canvas.Replay.prototype.drawMultiLineStringGeometry =
goog.abstractMethod;
/**
* @inheritDoc
*/
ol.render.canvas.Batch.prototype.drawPointGeometry = goog.abstractMethod;
ol.render.canvas.Replay.prototype.drawPointGeometry = goog.abstractMethod;
/**
* @inheritDoc
*/
ol.render.canvas.Batch.prototype.drawMultiPointGeometry = goog.abstractMethod;
ol.render.canvas.Replay.prototype.drawMultiPointGeometry = goog.abstractMethod;
/**
* @inheritDoc
*/
ol.render.canvas.Batch.prototype.drawPolygonGeometry = goog.abstractMethod;
ol.render.canvas.Replay.prototype.drawPolygonGeometry = goog.abstractMethod;
/**
* @inheritDoc
*/
ol.render.canvas.Batch.prototype.drawMultiPolygonGeometry = goog.abstractMethod;
ol.render.canvas.Replay.prototype.drawMultiPolygonGeometry =
goog.abstractMethod;
/**
* 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.
*/
ol.render.canvas.Batch.prototype.getExtent = function() {
ol.render.canvas.Replay.prototype.getExtent = function() {
return this.extent_;
};
@@ -205,22 +206,22 @@ ol.render.canvas.Batch.prototype.getExtent = function() {
/**
* @inheritDoc
*/
ol.render.canvas.Batch.prototype.setFillStrokeStyle = goog.abstractMethod;
ol.render.canvas.Replay.prototype.setFillStrokeStyle = goog.abstractMethod;
/**
* @inheritDoc
*/
ol.render.canvas.Batch.prototype.setImageStyle = goog.abstractMethod;
ol.render.canvas.Replay.prototype.setImageStyle = goog.abstractMethod;
/**
* @constructor
* @extends {ol.render.canvas.Batch}
* @extends {ol.render.canvas.Replay}
* @protected
*/
ol.render.canvas.ImageBatch = function() {
ol.render.canvas.ImageReplay = function() {
goog.base(this);
@@ -231,7 +232,7 @@ ol.render.canvas.ImageBatch = function() {
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
* @return {number} My end.
*/
ol.render.canvas.ImageBatch.prototype.drawCoordinates_ =
ol.render.canvas.ImageReplay.prototype.drawCoordinates_ =
function(flatCoordinates, offset, end, stride) {
return this.appendFlatCoordinates(
flatCoordinates, offset, end, stride, false);
@@ -252,7 +253,7 @@ ol.render.canvas.ImageBatch.prototype.drawCoordinates_ =
/**
* @inheritDoc
*/
ol.render.canvas.ImageBatch.prototype.drawPointGeometry =
ol.render.canvas.ImageReplay.prototype.drawPointGeometry =
function(pointGeometry) {
goog.asserts.assert(!goog.isNull(this.imageStyle_));
ol.extent.extend(this.extent_, pointGeometry.getExtent());
@@ -268,7 +269,7 @@ ol.render.canvas.ImageBatch.prototype.drawPointGeometry =
/**
* @inheritDoc
*/
ol.render.canvas.ImageBatch.prototype.drawMultiPointGeometry =
ol.render.canvas.ImageReplay.prototype.drawMultiPointGeometry =
function(multiPointGeometry) {
goog.asserts.assert(!goog.isNull(this.imageStyle_));
ol.extent.extend(this.extent_, multiPointGeometry.getExtent());
@@ -284,7 +285,7 @@ ol.render.canvas.ImageBatch.prototype.drawMultiPointGeometry =
/**
* @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
this.imageStyle_ = null;
};
@@ -293,7 +294,7 @@ ol.render.canvas.ImageBatch.prototype.finish = function() {
/**
* @inheritDoc
*/
ol.render.canvas.ImageBatch.prototype.setImageStyle = function(imageStyle) {
ol.render.canvas.ImageReplay.prototype.setImageStyle = function(imageStyle) {
this.imageStyle_ = imageStyle;
};
@@ -301,10 +302,10 @@ ol.render.canvas.ImageBatch.prototype.setImageStyle = function(imageStyle) {
/**
* @constructor
* @extends {ol.render.canvas.Batch}
* @extends {ol.render.canvas.Replay}
* @protected
*/
ol.render.canvas.LineStringBatch = function() {
ol.render.canvas.LineStringReplay = function() {
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
* @return {number} end.
*/
ol.render.canvas.LineStringBatch.prototype.drawFlatCoordinates_ =
ol.render.canvas.LineStringReplay.prototype.drawFlatCoordinates_ =
function(flatCoordinates, offset, end, stride) {
var state = this.state_;
if (!ol.style.stroke.equals(state.currentStrokeStyle, state.strokeStyle)) {
@@ -354,7 +355,7 @@ ol.render.canvas.LineStringBatch.prototype.drawFlatCoordinates_ =
/**
* @inheritDoc
*/
ol.render.canvas.LineStringBatch.prototype.drawLineStringGeometry =
ol.render.canvas.LineStringReplay.prototype.drawLineStringGeometry =
function(lineStringGeometry) {
goog.asserts.assert(!goog.isNull(this.state_));
ol.extent.extend(this.extent_, lineStringGeometry.getExtent());
@@ -368,7 +369,7 @@ ol.render.canvas.LineStringBatch.prototype.drawLineStringGeometry =
/**
* @inheritDoc
*/
ol.render.canvas.LineStringBatch.prototype.drawMultiLineStringGeometry =
ol.render.canvas.LineStringReplay.prototype.drawMultiLineStringGeometry =
function(multiLineStringGeometry) {
goog.asserts.assert(!goog.isNull(this.state_));
ol.extent.extend(this.extent_, multiLineStringGeometry.getExtent());
@@ -387,7 +388,7 @@ ol.render.canvas.LineStringBatch.prototype.drawMultiLineStringGeometry =
/**
* @inheritDoc
*/
ol.render.canvas.LineStringBatch.prototype.finish = function() {
ol.render.canvas.LineStringReplay.prototype.finish = function() {
var state = this.state_;
goog.asserts.assert(!goog.isNull(state));
if (state.lastDraw != this.coordinates.length) {
@@ -400,7 +401,7 @@ ol.render.canvas.LineStringBatch.prototype.finish = function() {
/**
* @inheritDoc
*/
ol.render.canvas.LineStringBatch.prototype.setFillStrokeStyle =
ol.render.canvas.LineStringReplay.prototype.setFillStrokeStyle =
function(fillStyle, strokeStyle) {
goog.asserts.assert(!goog.isNull(this.state_));
goog.asserts.assert(goog.isNull(fillStyle));
@@ -412,10 +413,10 @@ ol.render.canvas.LineStringBatch.prototype.setFillStrokeStyle =
/**
* @constructor
* @extends {ol.render.canvas.Batch}
* @extends {ol.render.canvas.Replay}
* @protected
*/
ol.render.canvas.PolygonBatch = function() {
ol.render.canvas.PolygonReplay = function() {
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
* @return {number} End.
*/
ol.render.canvas.PolygonBatch.prototype.drawFlatCoordinatess_ =
ol.render.canvas.PolygonReplay.prototype.drawFlatCoordinatess_ =
function(flatCoordinates, offset, ends, stride) {
var state = this.state_;
this.instructions.push([ol.render.canvas.Instruction.BEGIN_PATH]);
@@ -474,7 +475,7 @@ ol.render.canvas.PolygonBatch.prototype.drawFlatCoordinatess_ =
/**
* @inheritDoc
*/
ol.render.canvas.PolygonBatch.prototype.drawPolygonGeometry =
ol.render.canvas.PolygonReplay.prototype.drawPolygonGeometry =
function(polygonGeometry) {
goog.asserts.assert(!goog.isNull(this.state_));
ol.extent.extend(this.extent_, polygonGeometry.getExtent());
@@ -489,7 +490,7 @@ ol.render.canvas.PolygonBatch.prototype.drawPolygonGeometry =
/**
* @inheritDoc
*/
ol.render.canvas.PolygonBatch.prototype.drawMultiPolygonGeometry =
ol.render.canvas.PolygonReplay.prototype.drawMultiPolygonGeometry =
function(multiPolygonGeometry) {
goog.asserts.assert(!goog.isNull(this.state_));
ol.extent.extend(this.extent_, multiPolygonGeometry.getExtent());
@@ -509,7 +510,7 @@ ol.render.canvas.PolygonBatch.prototype.drawMultiPolygonGeometry =
/**
* @inheritDoc
*/
ol.render.canvas.PolygonBatch.prototype.finish = function() {
ol.render.canvas.PolygonReplay.prototype.finish = function() {
goog.asserts.assert(!goog.isNull(this.state_));
this.state_ = null;
};
@@ -518,7 +519,7 @@ ol.render.canvas.PolygonBatch.prototype.finish = function() {
/**
* @inheritDoc
*/
ol.render.canvas.PolygonBatch.prototype.setFillStrokeStyle =
ol.render.canvas.PolygonReplay.prototype.setFillStrokeStyle =
function(fillStyle, strokeStyle) {
goog.asserts.assert(!goog.isNull(this.state_));
goog.asserts.assert(!goog.isNull(fillStyle) || !goog.isNull(strokeStyle));
@@ -530,7 +531,7 @@ ol.render.canvas.PolygonBatch.prototype.setFillStrokeStyle =
/**
* @private
*/
ol.render.canvas.PolygonBatch.prototype.setFillStrokeStyles_ = function() {
ol.render.canvas.PolygonReplay.prototype.setFillStrokeStyles_ = function() {
var state = this.state_;
if (!goog.isNull(state.fillStyle) &&
!ol.style.fill.equals(state.currentFillStyle, state.fillStyle)) {
@@ -550,16 +551,16 @@ ol.render.canvas.PolygonBatch.prototype.setFillStrokeStyles_ = function() {
/**
* @constructor
* @implements {ol.render.IReplayBatchGroup}
* @implements {ol.render.IReplayReplayGroup}
*/
ol.render.canvas.BatchGroup = function() {
ol.render.canvas.ReplayGroup = function() {
/**
* @private
* @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 {goog.vec.Mat4.AnyType} transform Transform.
*/
ol.render.canvas.BatchGroup.prototype.draw =
ol.render.canvas.ReplayGroup.prototype.draw =
function(context, extent, transform) {
/** @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);
var i, ii;
for (i = 0, ii = zs.length; i < ii; ++i) {
var batches = this.batchesByZIndex_[zs[i].toString()];
var batchType;
for (batchType in batches) {
var batch = batches[batchType];
if (ol.extent.intersects(extent, batch.getExtent())) {
batch.draw(context, transform);
var replayes = this.replayesByZIndex_[zs[i].toString()];
var replayType;
for (replayType in replayes) {
var replay = replayes[replayType];
if (ol.extent.intersects(extent, replay.getExtent())) {
replay.draw(context, transform);
}
}
}
@@ -591,13 +592,13 @@ ol.render.canvas.BatchGroup.prototype.draw =
/**
* @inheritDoc
*/
ol.render.canvas.BatchGroup.prototype.finish = function() {
ol.render.canvas.ReplayGroup.prototype.finish = function() {
var zKey;
for (zKey in this.batchesByZIndex_) {
var batches = this.batchesByZIndex_[zKey];
var batchKey;
for (batchKey in batches) {
batches[batchKey].finish();
for (zKey in this.replayesByZIndex_) {
var replayes = this.replayesByZIndex_[zKey];
var replayKey;
for (replayKey in replayes) {
replayes[replayKey].finish();
}
}
};
@@ -606,39 +607,40 @@ ol.render.canvas.BatchGroup.prototype.finish = function() {
/**
* @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 batches = this.batchesByZIndex_[zIndexKey];
if (!goog.isDef(batches)) {
batches = {};
this.batchesByZIndex_[zIndexKey] = batches;
var replayes = this.replayesByZIndex_[zIndexKey];
if (!goog.isDef(replayes)) {
replayes = {};
this.replayesByZIndex_[zIndexKey] = replayes;
}
var batch = batches[batchType];
if (!goog.isDef(batch)) {
var constructor = ol.render.canvas.BATCH_CONSTRUCTORS_[batchType];
var replay = replayes[replayType];
if (!goog.isDef(replay)) {
var constructor = ol.render.canvas.BATCH_CONSTRUCTORS_[replayType];
goog.asserts.assert(goog.isDef(constructor));
batch = new constructor();
batches[batchType] = batch;
replay = new constructor();
replayes[replayType] = replay;
}
return batch;
return replay;
};
/**
* @inheritDoc
*/
ol.render.canvas.BatchGroup.prototype.isEmpty = function() {
return goog.object.isEmpty(this.batchesByZIndex_);
ol.render.canvas.ReplayGroup.prototype.isEmpty = function() {
return goog.object.isEmpty(this.replayesByZIndex_);
};
/**
* @const
* @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_ = {
'Image': ol.render.canvas.ImageBatch,
'LineString': ol.render.canvas.LineStringBatch,
'Polygon': ol.render.canvas.PolygonBatch
'Image': ol.render.canvas.ImageReplay,
'LineString': ol.render.canvas.LineStringReplay,
'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('ol.render.IRender');
@@ -7,7 +7,7 @@ goog.require('ol.render.IRender');
/**
* @enum {string}
*/
ol.render.BatchType = {
ol.render.ReplayType = {
IMAGE: 'Image',
LINE_STRING: 'LineString',
POLYGON: 'Polygon'
@@ -18,28 +18,29 @@ ol.render.BatchType = {
/**
* @interface
*/
ol.render.IReplayBatchGroup = function() {
ol.render.IReplayReplayGroup = function() {
};
/**
* FIXME empty description for jsdoc
*/
ol.render.IReplayBatchGroup.prototype.finish = function() {
ol.render.IReplayReplayGroup.prototype.finish = function() {
};
/**
* @param {number|undefined} zIndex Z index.
* @param {ol.render.BatchType} batchType Batch type.
* @return {ol.render.IRender} Batch.
* @param {ol.render.ReplayType} replayType Replay type.
* @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.
*/
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.Point');
goog.require('ol.geom.Polygon');
goog.require('ol.render.IReplayBatchGroup');
goog.require('ol.render.IReplayReplayGroup');
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.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 geometryRenderer =
ol.renderer.vector.GEOMETRY_RENDERERS_[geometry.getType()];
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.style.Style} style Style.
* @private
*/
ol.renderer.vector.renderLineStringGeometry_ =
function(batchGroup, geometry, style) {
function(replayGroup, geometry, style) {
if (goog.isNull(style.stroke)) {
return;
}
goog.asserts.assert(geometry instanceof ol.geom.LineString);
var lineStringGeometry = /** @type {ol.geom.LineString} */ (geometry);
var batch = batchGroup.getBatch(
style.zIndex, ol.render.BatchType.LINE_STRING);
batch.setFillStrokeStyle(null, style.stroke);
batch.drawLineStringGeometry(lineStringGeometry);
var replay = replayGroup.getReplay(
style.zIndex, ol.render.ReplayType.LINE_STRING);
replay.setFillStrokeStyle(null, style.stroke);
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.style.Style} style Style.
* @private
*/
ol.renderer.vector.renderMultiLineStringGeometry_ =
function(batchGroup, geometry, style) {
function(replayGroup, geometry, style) {
if (goog.isNull(style.stroke)) {
return;
}
goog.asserts.assert(geometry instanceof ol.geom.MultiLineString);
var multiLineStringGeometry = /** @type {ol.geom.MultiLineString} */
(geometry);
var batch = batchGroup.getBatch(
style.zIndex, ol.render.BatchType.LINE_STRING);
batch.setFillStrokeStyle(null, style.stroke);
batch.drawMultiLineStringGeometry(multiLineStringGeometry);
var replay = replayGroup.getReplay(
style.zIndex, ol.render.ReplayType.LINE_STRING);
replay.setFillStrokeStyle(null, style.stroke);
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.style.Style} style Style.
* @private
*/
ol.renderer.vector.renderMultiPolygonGeometry_ =
function(batchGroup, geometry, style) {
function(replayGroup, geometry, style) {
if (goog.isNull(style.stroke) && goog.isNull(style.fill)) {
return;
}
goog.asserts.assert(geometry instanceof ol.geom.MultiPolygon);
var multiPolygonGeometry = /** @type {ol.geom.MultiPolygon} */
(geometry);
var batch = batchGroup.getBatch(
style.zIndex, ol.render.BatchType.POLYGON);
batch.setFillStrokeStyle(style.fill, style.stroke);
batch.drawMultiPolygonGeometry(multiPolygonGeometry);
var replay = replayGroup.getReplay(
style.zIndex, ol.render.ReplayType.POLYGON);
replay.setFillStrokeStyle(style.fill, style.stroke);
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.style.Style} style Style.
* @private
*/
ol.renderer.vector.renderPointGeometry_ =
function(batchGroup, geometry, style) {
function(replayGroup, geometry, style) {
if (goog.isNull(style.image)) {
return;
}
goog.asserts.assert(geometry instanceof ol.geom.Point);
var pointGeometry = /** @type {ol.geom.Point} */ (geometry);
var batch = batchGroup.getBatch(style.zIndex, ol.render.BatchType.IMAGE);
batch.setImageStyle(style.image);
batch.drawPointGeometry(pointGeometry);
var replay = replayGroup.getReplay(style.zIndex, ol.render.ReplayType.IMAGE);
replay.setImageStyle(style.image);
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.style.Style} style Style.
* @private
*/
ol.renderer.vector.renderMultiPointGeometry_ =
function(batchGroup, geometry, style) {
function(replayGroup, geometry, style) {
if (goog.isNull(style.image)) {
return;
}
goog.asserts.assert(geometry instanceof ol.geom.MultiPoint);
var multiPointGeometry = /** @type {ol.geom.MultiPoint} */ (geometry);
var batch = batchGroup.getBatch(style.zIndex, ol.render.BatchType.IMAGE);
batch.setImageStyle(style.image);
batch.drawMultiPointGeometry(multiPointGeometry);
var replay = replayGroup.getReplay(style.zIndex, ol.render.ReplayType.IMAGE);
replay.setImageStyle(style.image);
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.style.Style} style Style.
* @private
*/
ol.renderer.vector.renderPolygonGeometry_ =
function(batchGroup, geometry, style) {
function(replayGroup, geometry, style) {
if (goog.isNull(style.fill) && goog.isNull(style.stroke)) {
return;
}
goog.asserts.assert(geometry instanceof ol.geom.Polygon);
var polygonGeometry = /** @type {ol.geom.Polygon} */ (geometry);
var batch = batchGroup.getBatch(style.zIndex, ol.render.BatchType.POLYGON);
batch.setFillStrokeStyle(style.fill, style.stroke);
batch.drawPolygonGeometry(polygonGeometry);
var replay = replayGroup.getReplay(
style.zIndex, ol.render.ReplayType.POLYGON);
replay.setFillStrokeStyle(style.fill, style.stroke);
replay.drawPolygonGeometry(polygonGeometry);
};
@@ -148,7 +149,7 @@ ol.renderer.vector.renderPolygonGeometry_ =
* @const
* @private
* @type {Object.<ol.geom.GeometryType,
* function(ol.render.IReplayBatchGroup, ol.geom.Geometry,
* function(ol.render.IReplayReplayGroup, ol.geom.Geometry,
* ol.style.Style)>}
*/
ol.renderer.vector.GEOMETRY_RENDERERS_ = {

View File

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