From d2dbc27b0add4fe0e9d00786ec539ad60e52d33e Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Thu, 7 Nov 2013 15:06:15 +0100 Subject: [PATCH] Add shared vector rendering functions --- src/ol/renderer/vector.js | 82 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/ol/renderer/vector.js diff --git a/src/ol/renderer/vector.js b/src/ol/renderer/vector.js new file mode 100644 index 0000000000..81a55f90fb --- /dev/null +++ b/src/ol/renderer/vector.js @@ -0,0 +1,82 @@ +goog.provide('ol.renderer.vector'); + +goog.require('goog.asserts'); +goog.require('ol.geom.LineString'); +goog.require('ol.geom.Point'); +goog.require('ol.geom.Polygon'); +goog.require('ol.replay.IBatchGroup'); +goog.require('ol.style.Style'); + + +/** + * @param {ol.replay.IBatchGroup} batchGroup Batch group. + * @param {ol.Feature} feature Feature. + * @param {ol.style.Style} style Style. + */ +ol.renderer.vector.renderFeature = function(batchGroup, 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); +}; + + +/** + * @param {ol.replay.IBatchGroup} batchGroup Batch group. + * @param {ol.geom.Geometry} geometry Geometry. + * @param {ol.style.Style} style Style. + * @private + */ +ol.renderer.vector.renderLineStringGeometry_ = + function(batchGroup, geometry, style) { + goog.asserts.assert(geometry instanceof ol.geom.LineString); + var lineStringGeometry = /** @type {ol.geom.LineString} */ (geometry); + window.console.log({batchingLineString: lineStringGeometry}); // FIXME + var batch = batchGroup.getBatch( + style.zIndex, ol.replay.BatchType.STROKE_LINE); + batch.setStrokeStyle(style.stroke); + batch.drawLineStringGeometry(lineStringGeometry); +}; + + +/** + * @param {ol.replay.IBatchGroup} batchGroup Batch group. + * @param {ol.geom.Geometry} geometry Geometry. + * @param {ol.style.Style} style Style. + * @private + */ +ol.renderer.vector.renderPointGeometry_ = + function(batchGroup, geometry, style) { + goog.asserts.assert(geometry instanceof ol.geom.Point); + var pointGeometry = /** @type {ol.geom.Point} */ (geometry); + window.console.log({batchingPoint: pointGeometry}); // FIXME +}; + + +/** + * @param {ol.replay.IBatchGroup} batchGroup Batch group. + * @param {ol.geom.Geometry} geometry Geometry. + * @param {ol.style.Style} style Style. + * @private + */ +ol.renderer.vector.renderPolygonGeometry_ = + function(batchGroup, geometry, style) { + goog.asserts.assert(geometry instanceof ol.geom.Polygon); + var polygonGeometry = /** @type {ol.geom.Polygon} */ (geometry); + window.console.log({batchingPolygon: polygonGeometry}); // FIXME +}; + + +/** + * @const + * @private + * @type {Object.} + */ +ol.renderer.vector.GEOMETRY_RENDERERS_ = { + 'Point': ol.renderer.vector.renderPointGeometry_, + 'LineString': ol.renderer.vector.renderLineStringGeometry_, + 'Polygon': ol.renderer.vector.renderPolygonGeometry_ +};