diff --git a/src/ol/render/box.js b/src/ol/render/box.js index 5e728073e4..374b68f07f 100644 --- a/src/ol/render/box.js +++ b/src/ol/render/box.js @@ -91,7 +91,6 @@ ol.render.Box.prototype.disposeInternal = function() { * @private */ ol.render.Box.prototype.handleMapPostCompose_ = function(event) { - this.geometry_ = this.createGeometry_(); var style = this.style_; goog.asserts.assert(!goog.isNull(style)); var render = event.getRender(); @@ -148,5 +147,6 @@ ol.render.Box.prototype.setCoordinates = function(startCoordinate, endCoordinate) { this.startCoordinate_ = startCoordinate; this.endCoordinate_ = endCoordinate; + this.geometry_ = this.createGeometry_(); this.requestMapRenderFrame_(); }; diff --git a/src/ol/render/webgl/webglimmediate.js b/src/ol/render/webgl/webglimmediate.js new file mode 100644 index 0000000000..0f5ce82f09 --- /dev/null +++ b/src/ol/render/webgl/webglimmediate.js @@ -0,0 +1,109 @@ +goog.provide('ol.render.webgl.Immediate'); + + + +/** + * @constructor + * @implements {ol.render.IRender} + * @param {ol.webgl.Context} context Context. + * @param {number} pixelRatio Pixel ratio. + * @struct + */ +ol.render.webgl.Immediate = function(context, pixelRatio) { +}; + + +/** + * @param {ol.Feature} feature Feature. + * @param {ol.style.Style} style Style. + */ +ol.render.webgl.Immediate.prototype.drawFeature = function(feature, style) { +}; + + +/** + * @param {ol.geom.GeometryCollection} geometryCollectionGeometry Geometry + * collection. + * @param {Object} data Opaque data object. + */ +ol.render.webgl.Immediate.prototype.drawGeometryCollectionGeometry = + function(geometryCollectionGeometry, data) { +}; + + +/** + * @param {ol.geom.Point} pointGeometry Point geometry. + * @param {Object} data Opaque data object. + */ +ol.render.webgl.Immediate.prototype.drawPointGeometry = + function(pointGeometry, data) { +}; + + +/** + * @param {ol.geom.LineString} lineStringGeometry Line string geometry. + * @param {Object} data Opaque data object. + */ +ol.render.webgl.Immediate.prototype.drawLineStringGeometry = + function(lineStringGeometry, data) { +}; + + +/** + * @param {ol.geom.MultiLineString} multiLineStringGeometry + * MultiLineString geometry. + * @param {Object} data Opaque data object. + */ +ol.render.webgl.Immediate.prototype.drawMultiLineStringGeometry = + function(multiLineStringGeometry, data) { +}; + + +/** + * @param {ol.geom.MultiPoint} multiPointGeometry MultiPoint geometry. + * @param {Object} data Opaque data object. + */ +ol.render.webgl.Immediate.prototype.drawMultiPointGeometry = + function(multiPointGeometry, data) { +}; + + +/** + * @param {ol.geom.MultiPolygon} multiPolygonGeometry MultiPolygon geometry. + * @param {Object} data Opaque data object. + */ +ol.render.webgl.Immediate.prototype.drawMultiPolygonGeometry = + function(multiPolygonGeometry, data) { +}; + + +/** + * @param {ol.geom.Polygon} polygonGeometry Polygon geometry. + * @param {Object} data Opaque data object. + */ +ol.render.webgl.Immediate.prototype.drawPolygonGeometry = + function(polygonGeometry, data) { +}; + + +/** + * @param {ol.style.Fill} fillStyle Fill style. + * @param {ol.style.Stroke} strokeStyle Stroke style. + */ +ol.render.webgl.Immediate.prototype.setFillStrokeStyle = + function(fillStyle, strokeStyle) { +}; + + +/** + * @param {ol.style.Image} imageStyle Image style. + */ +ol.render.webgl.Immediate.prototype.setImageStyle = function(imageStyle) { +}; + + +/** + * @param {ol.style.Text} textStyle Text style. + */ +ol.render.webgl.Immediate.prototype.setTextStyle = function(textStyle) { +}; diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js index bf3e5ecacc..494551bbd6 100644 --- a/src/ol/renderer/webgl/webglmaprenderer.js +++ b/src/ol/renderer/webgl/webglmaprenderer.js @@ -20,6 +20,7 @@ goog.require('ol.layer.Image'); goog.require('ol.layer.Tile'); goog.require('ol.render.Event'); goog.require('ol.render.EventType'); +goog.require('ol.render.webgl.Immediate'); goog.require('ol.renderer.Map'); goog.require('ol.renderer.webgl.ImageLayer'); goog.require('ol.renderer.webgl.Layer'); @@ -282,10 +283,12 @@ ol.renderer.webgl.Map.prototype.createLayerRenderer = function(layer) { ol.renderer.webgl.Map.prototype.dispatchComposeEvent_ = function(type, frameState) { var map = this.getMap(); - var context = this.getContext(); if (map.hasListener(type)) { + var context = this.getContext(); + var render = new ol.render.webgl.Immediate(context, + frameState.devicePixelRatio); var composeEvent = new ol.render.Event( - type, map, null, frameState, null, context); + type, map, render, frameState, null, context); map.dispatchEvent(composeEvent); } };