diff --git a/externs/oli.js b/externs/oli.js index ed861b409d..fb2b7f470b 100644 --- a/externs/oli.js +++ b/externs/oli.js @@ -218,7 +218,7 @@ oli.render.Event.prototype.glContext; /** - * @type {ol.render.IVectorContext|undefined} + * @type {ol.render.VectorContext|undefined} */ oli.render.Event.prototype.vectorContext; diff --git a/src/ol/render/canvas/canvasimmediate.js b/src/ol/render/canvas/canvasimmediate.js index dc8bc0cf7f..78306cbd5f 100644 --- a/src/ol/render/canvas/canvasimmediate.js +++ b/src/ol/render/canvas/canvasimmediate.js @@ -12,7 +12,7 @@ goog.require('ol.color'); goog.require('ol.extent'); goog.require('ol.geom.flat.transform'); goog.require('ol.has'); -goog.require('ol.render.IVectorContext'); +goog.require('ol.render.VectorContext'); goog.require('ol.render.canvas'); goog.require('ol.vec.Mat4'); @@ -20,7 +20,7 @@ goog.require('ol.vec.Mat4'); /** * @classdesc - * A concrete subclass of {@link ol.render.IVectorContext} that implements + * A concrete subclass of {@link ol.render.VectorContext} that implements * direct rendering of features and geometries to an HTML5 Canvas context. * Instances of this class are created internally by the library and * provided to application code as vectorContext member of the @@ -28,7 +28,7 @@ goog.require('ol.vec.Mat4'); * render events emitted by layers and maps. * * @constructor - * @implements {ol.render.IVectorContext} + * @extends {ol.render.VectorContext} * @param {CanvasRenderingContext2D} context Context. * @param {number} pixelRatio Pixel ratio. * @param {ol.Extent} extent Extent. diff --git a/src/ol/render/canvas/canvasreplay.js b/src/ol/render/canvas/canvasreplay.js index dd5f15a979..ebe72bf030 100644 --- a/src/ol/render/canvas/canvasreplay.js +++ b/src/ol/render/canvas/canvasreplay.js @@ -17,7 +17,7 @@ goog.require('ol.geom.flat.simplify'); goog.require('ol.geom.flat.transform'); goog.require('ol.has'); goog.require('ol.render.IReplayGroup'); -goog.require('ol.render.IVectorContext'); +goog.require('ol.render.VectorContext'); goog.require('ol.render.canvas'); goog.require('ol.vec.Mat4'); @@ -45,7 +45,7 @@ ol.render.canvas.Instruction = { /** * @constructor - * @implements {ol.render.IVectorContext} + * @extends {ol.render.VectorContext} * @param {number} tolerance Tolerance. * @param {ol.Extent} maxExtent Maximum extent. * @param {number} resolution Resolution. @@ -53,6 +53,7 @@ ol.render.canvas.Instruction = { * @struct */ ol.render.canvas.Replay = function(tolerance, maxExtent, resolution) { + goog.base(this); /** * @protected @@ -133,8 +134,8 @@ ol.render.canvas.Replay = function(tolerance, maxExtent, resolution) { * @type {!goog.vec.Mat4.Number} */ this.tmpLocalTransform_ = goog.vec.Mat4.createNumber(); - }; +goog.inherits(ol.render.canvas.Replay, ol.render.VectorContext); /** @@ -551,75 +552,6 @@ ol.render.canvas.Replay.prototype.reverseHitDetectionInstructions_ = }; -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.drawAsync = goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.drawCircleGeometry = goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.drawFeature = goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.drawGeometryCollectionGeometry = - goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.drawLineStringGeometry = goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.drawMultiLineStringGeometry = - goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.drawPointGeometry = goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.drawMultiPointGeometry = goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.drawPolygonGeometry = goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.drawMultiPolygonGeometry = - goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.drawText = goog.abstractMethod; - - /** * @param {ol.geom.Geometry} geometry Geometry. * @param {ol.Feature} feature Feature. @@ -658,24 +590,6 @@ ol.render.canvas.Replay.prototype.getBufferedMaxExtent = function() { }; -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.setFillStrokeStyle = goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.setImageStyle = goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.canvas.Replay.prototype.setTextStyle = goog.abstractMethod; - - /** * @constructor @@ -687,7 +601,6 @@ ol.render.canvas.Replay.prototype.setTextStyle = goog.abstractMethod; * @struct */ ol.render.canvas.ImageReplay = function(tolerance, maxExtent, resolution) { - goog.base(this, tolerance, maxExtent, resolution); /** diff --git a/src/ol/render/ireplay.js b/src/ol/render/ireplay.js index 701b391be7..6d1048a043 100644 --- a/src/ol/render/ireplay.js +++ b/src/ol/render/ireplay.js @@ -1,6 +1,6 @@ goog.provide('ol.render.IReplayGroup'); -goog.require('ol.render.IVectorContext'); +goog.require('ol.render.VectorContext'); /** @@ -37,7 +37,7 @@ ol.render.IReplayGroup = function() { /** * @param {number|undefined} zIndex Z index. * @param {ol.render.ReplayType} replayType Replay type. - * @return {ol.render.IVectorContext} Replay. + * @return {ol.render.VectorContext} Replay. */ ol.render.IReplayGroup.prototype.getReplay = function(zIndex, replayType) { }; diff --git a/src/ol/render/ivectorcontext.js b/src/ol/render/ivectorcontext.js deleted file mode 100644 index 3b491515ae..0000000000 --- a/src/ol/render/ivectorcontext.js +++ /dev/null @@ -1,139 +0,0 @@ -// FIXME remove trailing "Geometry" in method names - -goog.provide('ol.render.IVectorContext'); - - - -/** - * VectorContext interface. Implemented by - * {@link ol.render.canvas.Immediate} and {@link ol.render.webgl.Immediate}. - * @interface - */ -ol.render.IVectorContext = function() { -}; - - -/** - * @param {number} zIndex Z index. - * @param {function(ol.render.IVectorContext)} callback Callback. - */ -ol.render.IVectorContext.prototype.drawAsync = function(zIndex, callback) { -}; - - -/** - * @param {ol.geom.Circle} circleGeometry Circle geometry. - * @param {ol.Feature} feature Feature, - */ -ol.render.IVectorContext.prototype.drawCircleGeometry = - function(circleGeometry, feature) { -}; - - -/** - * @param {ol.Feature} feature Feature. - * @param {ol.style.Style} style Style. - */ -ol.render.IVectorContext.prototype.drawFeature = function(feature, style) { -}; - - -/** - * @param {ol.geom.GeometryCollection} geometryCollectionGeometry Geometry - * collection. - * @param {ol.Feature} feature Feature. - */ -ol.render.IVectorContext.prototype.drawGeometryCollectionGeometry = - function(geometryCollectionGeometry, feature) { -}; - - -/** - * @param {ol.geom.Point} pointGeometry Point geometry. - * @param {ol.Feature} feature Feature. - */ -ol.render.IVectorContext.prototype.drawPointGeometry = - function(pointGeometry, feature) { -}; - - -/** - * @param {ol.geom.LineString} lineStringGeometry Line string geometry. - * @param {ol.Feature} feature Feature. - */ -ol.render.IVectorContext.prototype.drawLineStringGeometry = - function(lineStringGeometry, feature) { -}; - - -/** - * @param {ol.geom.MultiLineString} multiLineStringGeometry - * MultiLineString geometry. - * @param {ol.Feature} feature Feature. - */ -ol.render.IVectorContext.prototype.drawMultiLineStringGeometry = - function(multiLineStringGeometry, feature) { -}; - - -/** - * @param {ol.geom.MultiPoint} multiPointGeometry MultiPoint geometry. - * @param {ol.Feature} feature Feature. - */ -ol.render.IVectorContext.prototype.drawMultiPointGeometry = - function(multiPointGeometry, feature) { -}; - - -/** - * @param {ol.geom.MultiPolygon} multiPolygonGeometry MultiPolygon geometry. - * @param {ol.Feature} feature Feature. - */ -ol.render.IVectorContext.prototype.drawMultiPolygonGeometry = - function(multiPolygonGeometry, feature) { -}; - - -/** - * @param {ol.geom.Polygon} polygonGeometry Polygon geometry. - * @param {ol.Feature} feature Feature. - */ -ol.render.IVectorContext.prototype.drawPolygonGeometry = - function(polygonGeometry, feature) { -}; - - -/** - * @param {Array.} flatCoordinates Flat coordinates. - * @param {number} offset Offset. - * @param {number} end End. - * @param {number} stride Stride. - * @param {ol.geom.Geometry} geometry Geometry. - * @param {ol.Feature} feature Feature. - */ -ol.render.IVectorContext.prototype.drawText = - function(flatCoordinates, offset, end, stride, geometry, feature) { -}; - - -/** - * @param {ol.style.Fill} fillStyle Fill style. - * @param {ol.style.Stroke} strokeStyle Stroke style. - */ -ol.render.IVectorContext.prototype.setFillStrokeStyle = - function(fillStyle, strokeStyle) { -}; - - -/** - * @param {ol.style.Image} imageStyle Image style. - */ -ol.render.IVectorContext.prototype.setImageStyle = function(imageStyle) { -}; - - -/** - * @param {ol.style.Text} textStyle Text style. - */ -ol.render.IVectorContext.prototype.setTextStyle = function(textStyle) { -}; diff --git a/src/ol/render/renderevent.js b/src/ol/render/renderevent.js index 568619c91f..6fc57b63bc 100644 --- a/src/ol/render/renderevent.js +++ b/src/ol/render/renderevent.js @@ -2,7 +2,7 @@ goog.provide('ol.render.Event'); goog.provide('ol.render.EventType'); goog.require('goog.events.Event'); -goog.require('ol.render.IVectorContext'); +goog.require('ol.render.VectorContext'); /** @@ -34,7 +34,7 @@ ol.render.EventType = { * @implements {oli.render.Event} * @param {ol.render.EventType} type Type. * @param {Object=} opt_target Target. - * @param {ol.render.IVectorContext=} opt_vectorContext Vector context. + * @param {ol.render.VectorContext=} opt_vectorContext Vector context. * @param {ol.render.IReplayGroup=} opt_replayGroup Replay group. * @param {olx.FrameState=} opt_frameState Frame state. * @param {?CanvasRenderingContext2D=} opt_context Context. @@ -48,7 +48,7 @@ ol.render.Event = function( /** * For canvas, this is an instance of {@link ol.render.canvas.Immediate}. - * @type {ol.render.IVectorContext|undefined} + * @type {ol.render.VectorContext|undefined} * @api */ this.vectorContext = opt_vectorContext; diff --git a/src/ol/render/vectorcontext.js b/src/ol/render/vectorcontext.js new file mode 100644 index 0000000000..bab307eecf --- /dev/null +++ b/src/ol/render/vectorcontext.js @@ -0,0 +1,116 @@ +goog.provide('ol.render.VectorContext'); + + + +/** + * @constructor + * @struct + */ +ol.render.VectorContext = function() { +}; + + +/** + * @param {number} zIndex Z index. + * @param {function(ol.render.VectorContext)} callback Callback. + */ +ol.render.VectorContext.prototype.drawAsync = goog.abstractMethod; + + +/** + * @param {ol.geom.Circle} circleGeometry Circle geometry. + * @param {ol.Feature} feature Feature, + */ +ol.render.VectorContext.prototype.drawCircleGeometry = goog.abstractMethod; + + +/** + * @param {ol.Feature} feature Feature. + * @param {ol.style.Style} style Style. + */ +ol.render.VectorContext.prototype.drawFeature = goog.abstractMethod; + + +/** + * @param {ol.geom.GeometryCollection} geometryCollectionGeometry Geometry + * collection. + * @param {ol.Feature} feature Feature. + */ +ol.render.VectorContext.prototype.drawGeometryCollectionGeometry = + goog.abstractMethod; + + +/** + * @param {ol.geom.LineString} lineStringGeometry Line string geometry. + * @param {ol.Feature} feature Feature. + */ +ol.render.VectorContext.prototype.drawLineStringGeometry = + goog.abstractMethod; + + +/** + * @param {ol.geom.MultiLineString} multiLineStringGeometry + * MultiLineString geometry. + * @param {ol.Feature} feature Feature. + */ +ol.render.VectorContext.prototype.drawMultiLineStringGeometry = + goog.abstractMethod; + + +/** + * @param {ol.geom.MultiPoint} multiPointGeometry MultiPoint geometry. + * @param {ol.Feature} feature Feature. + */ +ol.render.VectorContext.prototype.drawMultiPointGeometry = goog.abstractMethod; + + +/** + * @param {ol.geom.MultiPolygon} multiPolygonGeometry MultiPolygon geometry. + * @param {ol.Feature} feature Feature. + */ +ol.render.VectorContext.prototype.drawMultiPolygonGeometry = + goog.abstractMethod; + + +/** + * @param {ol.geom.Point} pointGeometry Point geometry. + * @param {ol.Feature} feature Feature. + */ +ol.render.VectorContext.prototype.drawPointGeometry = goog.abstractMethod; + + +/** + * @param {ol.geom.Polygon} polygonGeometry Polygon geometry. + * @param {ol.Feature} feature Feature. + */ +ol.render.VectorContext.prototype.drawPolygonGeometry = goog.abstractMethod; + + +/** + * @param {Array.} flatCoordinates Flat coordinates. + * @param {number} offset Offset. + * @param {number} end End. + * @param {number} stride Stride. + * @param {ol.geom.Geometry} geometry Geometry. + * @param {ol.Feature} feature Feature. + */ +ol.render.VectorContext.prototype.drawText = goog.abstractMethod; + + +/** + * @param {ol.style.Fill} fillStyle Fill style. + * @param {ol.style.Stroke} strokeStyle Stroke style. + */ +ol.render.VectorContext.prototype.setFillStrokeStyle = goog.abstractMethod; + + +/** + * @param {ol.style.Image} imageStyle Image style. + */ +ol.render.VectorContext.prototype.setImageStyle = goog.abstractMethod; + + +/** + * @param {ol.style.Text} textStyle Text style. + */ +ol.render.VectorContext.prototype.setTextStyle = goog.abstractMethod; diff --git a/src/ol/render/webgl/webglimmediate.js b/src/ol/render/webgl/webglimmediate.js index ca3d481f1a..2a54aedcff 100644 --- a/src/ol/render/webgl/webglimmediate.js +++ b/src/ol/render/webgl/webglimmediate.js @@ -2,14 +2,15 @@ goog.provide('ol.render.webgl.Immediate'); goog.require('goog.array'); goog.require('goog.object'); goog.require('ol.extent'); -goog.require('ol.render.IVectorContext'); +goog.require('ol.render.VectorContext'); +goog.require('ol.render.webgl.ImageReplay'); goog.require('ol.render.webgl.ReplayGroup'); /** * @constructor - * @implements {ol.render.IVectorContext} + * @extends {ol.render.VectorContext} * @param {ol.webgl.Context} context Context. * @param {ol.Coordinate} center Center. * @param {number} resolution Resolution. @@ -21,6 +22,7 @@ goog.require('ol.render.webgl.ReplayGroup'); */ ol.render.webgl.Immediate = function(context, center, resolution, rotation, size, extent, pixelRatio) { + goog.base(this); /** * @private @@ -70,6 +72,7 @@ ol.render.webgl.Immediate = function(context, */ this.callbacksByZIndex_ = {}; }; +goog.inherits(ol.render.webgl.Immediate, ol.render.VectorContext); /** @@ -173,7 +176,8 @@ ol.render.webgl.Immediate.prototype.drawPointGeometry = function(pointGeometry, data) { var context = this.context_; var replayGroup = new ol.render.webgl.ReplayGroup(1, this.extent_); - var replay = replayGroup.getReplay(0, ol.render.ReplayType.IMAGE); + var replay = /** @type {ol.render.webgl.ImageReplay} */ ( + replayGroup.getReplay(0, ol.render.ReplayType.IMAGE)); replay.setImageStyle(this.imageStyle_); replay.drawPointGeometry(pointGeometry, data); replay.finish(context); @@ -183,9 +187,12 @@ ol.render.webgl.Immediate.prototype.drawPointGeometry = var contrast = 1; var hue = 0; var saturation = 1; + var skippedFeatures = {}; + var featureCallback; + var oneByOne = false; replay.replay(this.context_, this.center_, this.resolution_, this.rotation_, - this.size_, this.extent_, this.pixelRatio_, opacity, brightness, - contrast, hue, saturation, {}); + this.size_, this.pixelRatio_, opacity, brightness, + contrast, hue, saturation, skippedFeatures, featureCallback, oneByOne); replay.getDeleteResourcesFunction(context)(); }; @@ -216,7 +223,8 @@ ol.render.webgl.Immediate.prototype.drawMultiPointGeometry = function(multiPointGeometry, data) { var context = this.context_; var replayGroup = new ol.render.webgl.ReplayGroup(1, this.extent_); - var replay = replayGroup.getReplay(0, ol.render.ReplayType.IMAGE); + var replay = /** @type {ol.render.webgl.ImageReplay} */ ( + replayGroup.getReplay(0, ol.render.ReplayType.IMAGE)); replay.setImageStyle(this.imageStyle_); replay.drawMultiPointGeometry(multiPointGeometry, data); replay.finish(context); @@ -226,9 +234,12 @@ ol.render.webgl.Immediate.prototype.drawMultiPointGeometry = var contrast = 1; var hue = 0; var saturation = 1; + var skippedFeatures = {}; + var featureCallback; + var oneByOne = false; replay.replay(this.context_, this.center_, this.resolution_, this.rotation_, - this.size_, this.extent_, this.pixelRatio_, opacity, brightness, - contrast, hue, saturation, {}); + this.size_, this.pixelRatio_, opacity, brightness, + contrast, hue, saturation, skippedFeatures, featureCallback, oneByOne); replay.getDeleteResourcesFunction(context)(); }; diff --git a/src/ol/render/webgl/webglreplay.js b/src/ol/render/webgl/webglreplay.js index 8c2590c63d..30c1aff122 100644 --- a/src/ol/render/webgl/webglreplay.js +++ b/src/ol/render/webgl/webglreplay.js @@ -9,7 +9,7 @@ goog.require('goog.vec.Mat4'); goog.require('ol.color.Matrix'); goog.require('ol.extent'); goog.require('ol.render.IReplayGroup'); -goog.require('ol.render.IVectorContext'); +goog.require('ol.render.VectorContext'); goog.require('ol.render.webgl.imagereplay.shader.Color'); goog.require('ol.render.webgl.imagereplay.shader.Default'); goog.require('ol.vec.Mat4'); @@ -20,13 +20,14 @@ goog.require('ol.webgl.Context'); /** * @constructor - * @implements {ol.render.IVectorContext} + * @extends {ol.render.VectorContext} * @param {number} tolerance Tolerance. * @param {ol.Extent} maxExtent Max extent. * @protected * @struct */ ol.render.webgl.ImageReplay = function(tolerance, maxExtent) { + goog.base(this); /** * @type {number|undefined} @@ -219,8 +220,8 @@ ol.render.webgl.ImageReplay = function(tolerance, maxExtent) { * @private */ this.width_ = undefined; - }; +goog.inherits(ol.render.webgl.ImageReplay, ol.render.VectorContext); /** @@ -380,39 +381,6 @@ ol.render.webgl.ImageReplay.prototype.drawCoordinates_ = }; -/** - * @inheritDoc - */ -ol.render.webgl.ImageReplay.prototype.drawCircleGeometry = goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.webgl.ImageReplay.prototype.drawFeature = goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.webgl.ImageReplay.prototype.drawGeometryCollectionGeometry = - goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.webgl.ImageReplay.prototype.drawLineStringGeometry = - goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.webgl.ImageReplay.prototype.drawMultiLineStringGeometry = - goog.abstractMethod; - - /** * @inheritDoc */ @@ -427,13 +395,6 @@ ol.render.webgl.ImageReplay.prototype.drawMultiPointGeometry = }; -/** - * @inheritDoc - */ -ol.render.webgl.ImageReplay.prototype.drawMultiPolygonGeometry = - goog.abstractMethod; - - /** * @inheritDoc */ @@ -448,18 +409,6 @@ ol.render.webgl.ImageReplay.prototype.drawPointGeometry = }; -/** - * @inheritDoc - */ -ol.render.webgl.ImageReplay.prototype.drawPolygonGeometry = goog.abstractMethod; - - -/** - * @inheritDoc - */ -ol.render.webgl.ImageReplay.prototype.drawText = goog.abstractMethod; - - /** * @param {ol.webgl.Context} context Context. */ @@ -1003,12 +952,6 @@ ol.render.webgl.ImageReplay.prototype.setImageStyle = function(imageStyle) { }; -/** - * @inheritDoc - */ -ol.render.webgl.ImageReplay.prototype.setTextStyle = goog.abstractMethod; - - /** * @constructor