From ff9bacf044c870fde816ef71640368e9ddb75fbe Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Fri, 22 Jun 2012 19:41:51 +0200 Subject: [PATCH] Temporary way for map renderers to register. --- src/ol/renderer/MapRenderer.js | 45 ++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/ol/renderer/MapRenderer.js b/src/ol/renderer/MapRenderer.js index d6d82d2904..6f4a8946d7 100644 --- a/src/ol/renderer/MapRenderer.js +++ b/src/ol/renderer/MapRenderer.js @@ -22,3 +22,48 @@ ol.renderer.MapRenderer = function(container) { */ ol.renderer.MapRenderer.prototype.draw = function(layers, center, resolution, animate) { }; + +/** + * TODO: determine a closure friendly way to register map renderers. + * @type {Array} + * @private + */ +ol.renderer.MapRenderer.registry_ = []; + +/** + * @param {Function} Renderer + */ +ol.renderer.MapRenderer.register = function(Renderer) { + ol.renderer.MapRenderer.registry_.push(Renderer); +}; + +/** + * @param {Array.} preferences List of preferred renderer types. + * @returns {Function} A renderer constructor. + */ +ol.renderer.MapRenderer.pickRendererType = function(preferences) { + // map of candidate renderer types to candidate renderers + var types = {}; + + function picker(Candidate) { + var supports = Candidate.isSupported(); + if (supports) { + types[Candidate.getType()] = Candidate; + } + return supports; + } + var Candidates = goog.array.filter(ol.renderer.MapRenderer.registry_, picker); + + // check to see if any preferred renderers are available + var Renderer; + for (var i=0, ii=preferences.length; i