Merge pull request #2033 from htulipe/map-renderer-type

Expose map renderer type in the API.
This commit is contained in:
Tim Schaub
2014-06-06 14:13:50 -06:00
6 changed files with 74 additions and 30 deletions

View File

@@ -108,7 +108,7 @@ olx.GeolocationOptions.prototype.projection;
* layers: (Array.<ol.layer.Base>|ol.Collection|undefined),
* ol3Logo: (boolean|undefined),
* overlays: (ol.Collection|Array.<ol.Overlay>|undefined),
* renderer: (ol.RendererHint|Array.<ol.RendererHint|string>|string|undefined),
* renderer: (ol.RendererType|Array.<ol.RendererType|string>|string|undefined),
* target: (Element|string|undefined),
* view: (ol.IView|undefined)}}
* @todo api
@@ -181,7 +181,7 @@ olx.MapOptions.prototype.overlays;
/**
* Renderer.
* @type {ol.RendererHint|Array.<ol.RendererHint|string>|string|undefined}
* @type {ol.RendererType|Array.<ol.RendererType|string>|string|undefined}
*/
olx.MapOptions.prototype.renderer;

View File

@@ -42,6 +42,7 @@ goog.require('ol.ObjectEventType');
goog.require('ol.Pixel');
goog.require('ol.PostRenderFunction');
goog.require('ol.PreRenderFunction');
goog.require('ol.RendererType');
goog.require('ol.Size');
goog.require('ol.Tile');
goog.require('ol.TileQueue');
@@ -99,24 +100,12 @@ ol.OL3_LOGO_URL = 'data:image/png;base64,' +
/**
* Available renderers: `'canvas'`, `'dom'` or `'webgl'`.
* @enum {string}
* @todo api
* @type {Array.<ol.RendererType>}
*/
ol.RendererHint = {
CANVAS: 'canvas',
DOM: 'dom',
WEBGL: 'webgl'
};
/**
* @type {Array.<ol.RendererHint>}
*/
ol.DEFAULT_RENDERER_HINTS = [
ol.RendererHint.CANVAS,
ol.RendererHint.WEBGL,
ol.RendererHint.DOM
ol.DEFAULT_RENDERER_TYPES = [
ol.RendererType.CANVAS,
ol.RendererType.WEBGL,
ol.RendererType.DOM
];
@@ -726,6 +715,15 @@ ol.Map.prototype.getPixelFromCoordinate = function(coordinate) {
};
/**
* Get the map renderer.
* @return {ol.renderer.Map} Renderer
*/
ol.Map.prototype.getRenderer = function() {
return this.renderer_;
};
/**
* Get the size of this map.
* @return {ol.Size|undefined} The size in pixels of the map in the DOM.
@@ -1423,36 +1421,36 @@ ol.Map.createOptionsInternal = function(options) {
var rendererConstructor = ol.renderer.Map;
/**
* @type {Array.<ol.RendererHint>}
* @type {Array.<ol.RendererType>}
*/
var rendererHints;
var rendererTypes;
if (goog.isDef(options.renderer)) {
if (goog.isArray(options.renderer)) {
rendererHints = options.renderer;
rendererTypes = options.renderer;
} else if (goog.isString(options.renderer)) {
rendererHints = [options.renderer];
rendererTypes = [options.renderer];
} else {
goog.asserts.fail('Incorrect format for renderer option');
}
} else {
rendererHints = ol.DEFAULT_RENDERER_HINTS;
rendererTypes = ol.DEFAULT_RENDERER_TYPES;
}
var i, ii;
for (i = 0, ii = rendererHints.length; i < ii; ++i) {
/** @type {ol.RendererHint} */
var rendererHint = rendererHints[i];
if (ol.ENABLE_CANVAS && rendererHint == ol.RendererHint.CANVAS) {
for (i = 0, ii = rendererTypes.length; i < ii; ++i) {
/** @type {ol.RendererType} */
var rendererType = rendererTypes[i];
if (ol.ENABLE_CANVAS && rendererType == ol.RendererType.CANVAS) {
if (ol.BrowserFeature.HAS_CANVAS) {
rendererConstructor = ol.renderer.canvas.Map;
break;
}
} else if (ol.ENABLE_DOM && rendererHint == ol.RendererHint.DOM) {
} else if (ol.ENABLE_DOM && rendererType == ol.RendererType.DOM) {
if (ol.BrowserFeature.HAS_DOM) {
rendererConstructor = ol.renderer.dom.Map;
break;
}
} else if (ol.ENABLE_WEBGL && rendererHint == ol.RendererHint.WEBGL) {
} else if (ol.ENABLE_WEBGL && rendererType == ol.RendererType.WEBGL) {
if (ol.BrowserFeature.HAS_WEBGL) {
rendererConstructor = ol.renderer.webgl.Map;
break;

View File

@@ -7,6 +7,7 @@ goog.require('goog.dom');
goog.require('goog.style');
goog.require('goog.vec.Mat4');
goog.require('ol');
goog.require('ol.RendererType');
goog.require('ol.css');
goog.require('ol.dom');
goog.require('ol.layer.Image');
@@ -126,6 +127,14 @@ ol.renderer.canvas.Map.prototype.getCanvasLayerRenderer = function(layer) {
};
/**
* @inheritDoc
*/
ol.renderer.canvas.Map.prototype.getType = function() {
return ol.RendererType.CANVAS;
};
/**
* @inheritDoc
*/

View File

@@ -6,6 +6,7 @@ goog.require('goog.dom.TagName');
goog.require('goog.functions');
goog.require('goog.style');
goog.require('ol');
goog.require('ol.RendererType');
goog.require('ol.css');
goog.require('ol.layer.Image');
goog.require('ol.layer.Tile');
@@ -75,6 +76,14 @@ ol.renderer.dom.Map.prototype.createLayerRenderer = function(layer) {
};
/**
* @inheritDoc
*/
ol.renderer.dom.Map.prototype.getType = function() {
return ol.RendererType.DOM;
};
/**
* @inheritDoc
*/

View File

@@ -1,3 +1,4 @@
goog.provide('ol.RendererType');
goog.provide('ol.renderer.Map');
goog.require('goog.Disposable');
@@ -11,6 +12,18 @@ goog.require('ol.style.IconImageCache');
goog.require('ol.vec.Mat4');
/**
* Available renderers: `'canvas'`, `'dom'` or `'webgl'`.
* @enum {string}
* @todo api
*/
ol.RendererType = {
CANVAS: 'canvas',
DOM: 'dom',
WEBGL: 'webgl'
};
/**
* @constructor
@@ -163,6 +176,12 @@ ol.renderer.Map.prototype.getMap = function() {
};
/**
* @return {string} Type
*/
ol.renderer.Map.prototype.getType = goog.abstractMethod;
/**
* @param {string} layerKey Layer key.
* @return {ol.renderer.Layer} Layer renderer.

View File

@@ -13,6 +13,7 @@ goog.require('goog.object');
goog.require('goog.style');
goog.require('goog.webgl');
goog.require('ol');
goog.require('ol.RendererType');
goog.require('ol.Tile');
goog.require('ol.css');
goog.require('ol.dom');
@@ -346,6 +347,14 @@ ol.renderer.webgl.Map.prototype.getTileTextureQueue = function() {
};
/**
* @inheritDoc
*/
ol.renderer.webgl.Map.prototype.getType = function() {
return ol.RendererType.WEBGL;
};
/**
* @param {goog.events.Event} event Event.
* @protected