From 89141eec1148ba8d578bf295dfeb3f763a636d93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Mon, 16 Dec 2013 22:31:32 +0100 Subject: [PATCH 01/19] Remove export_as handling from generate-exports.py --- bin/generate-exports.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/bin/generate-exports.py b/bin/generate-exports.py index e33eba5fc7..3e864df72a 100755 --- a/bin/generate-exports.py +++ b/bin/generate-exports.py @@ -85,10 +85,9 @@ class ObjectLiteral(Exportable): class Symbol(Exportable): - def __init__(self, name, export_symbol, export_as=None): + def __init__(self, name, export_symbol): Exportable.__init__(self, name) self.export_symbol = export_symbol - self.export_as = export_as or self.name self.props = set() __repr__ = simplerepr @@ -96,7 +95,7 @@ class Symbol(Exportable): def export(self): lines = [] if self.export_symbol: - lines.append('\n\ngoog.exportSymbol(\n \'%s\',\n %s);\n' % (self.name, self.export_as)) + lines.append('\n\ngoog.exportSymbol(\n \'%s\',\n %s);\n' % (self.name, self.name)) lines.extend('goog.exportProperty(\n %s,\n \'%s\',\n %s.%s);\n' % (self.name, prop, self.name, prop) for prop in sorted(self.props)) return ''.join(lines) @@ -165,20 +164,18 @@ def main(argv): objects[name] = symbol symbol.props.add(prop) continue - m = re.match(r'@exportSymbol\s+(?P\S+)(?:\s+(?P\S+))?\Z', line) + m = re.match(r'@exportSymbol\s+(?P\S+)\Z', line) if m: name = m.group('name') if name in objects: raise RuntimeError(line) # Name already defined - export_as = m.group('export_as') - symbol = Symbol(name, True, export_as) + symbol = Symbol(name, True) objects[name] = symbol - if not export_as: - components = m.group('name').split('.') - if re.match(r'[A-Z]', components[-1]): - requires.add(name) - elif len(components) > 1: - requires.add('.'.join(components[:-1])) + components = m.group('name').split('.') + if re.match(r'[A-Z]', components[-1]): + requires.add(name) + else: + requires.add('.'.join(components[:-1])) continue raise RuntimeError(line) From 9c8227bb4f2502cae9ce7e51c10cee79c7002c4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Mon, 16 Dec 2013 22:28:04 +0100 Subject: [PATCH 02/19] Do not use export_as for animation exports --- src/ol/animation.exports | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ol/animation.exports b/src/ol/animation.exports index f887f38c28..5cab49819d 100644 --- a/src/ol/animation.exports +++ b/src/ol/animation.exports @@ -1,4 +1,4 @@ -@exportSymbol ol.animation.bounce ol.animation.bounce -@exportSymbol ol.animation.pan ol.animation.pan -@exportSymbol ol.animation.rotate ol.animation.rotate -@exportSymbol ol.animation.zoom ol.animation.zoom +@exportSymbol ol.animation.bounce +@exportSymbol ol.animation.pan +@exportSymbol ol.animation.rotate +@exportSymbol ol.animation.zoom From 0d235e7efce1876bd2c33beb338cb966d9e8ca86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Mon, 16 Dec 2013 22:28:30 +0100 Subject: [PATCH 03/19] Do not use export_as controldefaults exports --- src/ol/control/controldefaults.exports | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ol/control/controldefaults.exports b/src/ol/control/controldefaults.exports index 0023131772..a9c4315ac3 100644 --- a/src/ol/control/controldefaults.exports +++ b/src/ol/control/controldefaults.exports @@ -1 +1 @@ -@exportSymbol ol.control.defaults ol.control.defaults +@exportSymbol ol.control.defaults From 1b084dba06967b920cea88b9f61190e5e4731d26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Mon, 16 Dec 2013 22:30:44 +0100 Subject: [PATCH 04/19] Do not use export_as for interactiondefaults exports --- src/ol/interaction/interactiondefaults.exports | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ol/interaction/interactiondefaults.exports b/src/ol/interaction/interactiondefaults.exports index 2ab5e46392..6a928864a2 100644 --- a/src/ol/interaction/interactiondefaults.exports +++ b/src/ol/interaction/interactiondefaults.exports @@ -1 +1 @@ -@exportSymbol ol.interaction.defaults ol.interaction.defaults +@exportSymbol ol.interaction.defaults From 73f24cf7b0da7a35e566316b65fadd69f0581143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 08:16:13 +0100 Subject: [PATCH 05/19] goog.require creates a namespace object already --- src/ol/browserfeature.js | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js index a0a428c3c9..585713bd52 100644 --- a/src/ol/browserfeature.js +++ b/src/ol/browserfeature.js @@ -8,22 +8,22 @@ ol.ASSUME_TOUCH = false; /** - * @type {Object} - */ -ol.BrowserFeature = { - /** - * The ratio between physical pixels and device-independent pixels - * (dips) on the device (`window.devicePixelRatio`). - * @type {number} - */ - DEVICE_PIXEL_RATIO: goog.global.devicePixelRatio || 1, +* The ratio between physical pixels and device-independent pixels +* (dips) on the device (`window.devicePixelRatio`). +* @const +* @type {number} +* @todo stability experimental +*/ +ol.BrowserFeature.DEVICE_PIXEL_RATIO = goog.global.devicePixelRatio || 1; - /** - * True if browser supports touch events. - * @type {boolean} - */ - HAS_TOUCH: ol.ASSUME_TOUCH || - (goog.global.document && - 'ontouchstart' in goog.global.document.documentElement) || - !!(goog.global.navigator.msPointerEnabled) -}; + +/** +* True if browser supports touch events. +* @const +* @type {boolean} + * @todo stability experimental +*/ +ol.BrowserFeature.HAS_TOUCH = ol.ASSUME_TOUCH || + (goog.global.document && + 'ontouchstart' in goog.global.document.documentElement) || + !!(goog.global.navigator.msPointerEnabled); From 79718151b7c70829180b475d5c4a2e36ef00dee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 08:18:23 +0100 Subject: [PATCH 06/19] Add ol.BrowserFeature.HAS_WEBGL --- examples/bind-input.js | 4 ++-- examples/brightness-contrast.js | 4 ++-- examples/hue-saturation.js | 4 ++-- examples/side-by-side.js | 4 ++-- src/ol/browserfeature.exports | 1 + src/ol/browserfeature.js | 30 ++++++++++++++++++++++++++ src/ol/renderer/webgl/webglrenderer.js | 4 ++-- src/ol/webgl/webgl.exports | 1 - src/ol/webgl/webgl.js | 28 ------------------------ 9 files changed, 41 insertions(+), 39 deletions(-) delete mode 100644 src/ol/webgl/webgl.exports diff --git a/examples/bind-input.js b/examples/bind-input.js index 52deeb0c07..051045c1cd 100644 --- a/examples/bind-input.js +++ b/examples/bind-input.js @@ -1,13 +1,13 @@ +goog.require('ol.BrowserFeature'); goog.require('ol.Map'); goog.require('ol.RendererHints'); goog.require('ol.View2D'); goog.require('ol.dom.Input'); goog.require('ol.layer.Tile'); goog.require('ol.source.OSM'); -goog.require('ol.webgl'); -if (!ol.webgl.SUPPORTED) { +if (!ol.BrowserFeature.HAS_WEBGL) { var inputs = document.getElementsByClassName('webgl'); for (var i = 0, len = inputs.length; i < len; i++) { inputs[i].disabled = true; diff --git a/examples/brightness-contrast.js b/examples/brightness-contrast.js index d07824fcf6..47b9c66e8d 100644 --- a/examples/brightness-contrast.js +++ b/examples/brightness-contrast.js @@ -1,9 +1,9 @@ +goog.require('ol.BrowserFeature'); goog.require('ol.Map'); goog.require('ol.RendererHint'); goog.require('ol.View2D'); goog.require('ol.layer.Tile'); goog.require('ol.source.MapQuestOpenAerial'); -goog.require('ol.webgl'); function setResetBrightnessButtonHTML() { @@ -15,7 +15,7 @@ function setResetContrastButtonHTML() { resetContrast.innerHTML = 'Contrast (' + layer.getContrast().toFixed(3) + ')'; } -if (!ol.webgl.SUPPORTED) { +if (!ol.BrowserFeature.HAS_WEBGL) { var info = document.getElementById('no-webgl'); /** * display error message diff --git a/examples/hue-saturation.js b/examples/hue-saturation.js index 8770a4ccb6..d80390bf70 100644 --- a/examples/hue-saturation.js +++ b/examples/hue-saturation.js @@ -1,10 +1,10 @@ +goog.require('ol.BrowserFeature'); goog.require('ol.Map'); goog.require('ol.RendererHint'); goog.require('ol.View2D'); goog.require('ol.layer.Tile'); goog.require('ol.proj'); goog.require('ol.source.BingMaps'); -goog.require('ol.webgl'); function setResetHueButtonHTML() { @@ -16,7 +16,7 @@ function setResetSaturationButtonHTML() { layer.getSaturation().toFixed(2) + ')'; } -if (!ol.webgl.SUPPORTED) { +if (!ol.BrowserFeature.HAS_WEBGL) { var info = document.getElementById('no-webgl'); /** * display error message diff --git a/examples/side-by-side.js b/examples/side-by-side.js index afa8425cc7..304117071d 100644 --- a/examples/side-by-side.js +++ b/examples/side-by-side.js @@ -1,9 +1,9 @@ +goog.require('ol.BrowserFeature'); goog.require('ol.Map'); goog.require('ol.RendererHint'); goog.require('ol.View2D'); goog.require('ol.layer.Tile'); goog.require('ol.source.MapQuestOpenAerial'); -goog.require('ol.webgl'); var domMap = new ol.Map({ @@ -20,7 +20,7 @@ var domMap = new ol.Map({ }) }); -if (ol.webgl.SUPPORTED) { +if (!ol.BrowserFeature.HAS_WEBGL) { var webglMap = new ol.Map({ renderer: ol.RendererHint.WEBGL, target: 'webglMap' diff --git a/src/ol/browserfeature.exports b/src/ol/browserfeature.exports index 45cb41ac8a..46f7db1350 100644 --- a/src/ol/browserfeature.exports +++ b/src/ol/browserfeature.exports @@ -1,3 +1,4 @@ @exportSymbol ol.BrowserFeature @exportProperty ol.BrowserFeature.DEVICE_PIXEL_RATIO @exportProperty ol.BrowserFeature.HAS_TOUCH +@exportProperty ol.BrowserFeature.HAS_WEBGL diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js index 585713bd52..7b5d3c2fe7 100644 --- a/src/ol/browserfeature.js +++ b/src/ol/browserfeature.js @@ -1,5 +1,9 @@ goog.provide('ol.BrowserFeature'); +goog.require('goog.dom'); +goog.require('goog.dom.TagName'); +goog.require('ol.webgl'); + /** * @define {boolean} Assume touch. @@ -27,3 +31,29 @@ ol.BrowserFeature.HAS_TOUCH = ol.ASSUME_TOUCH || (goog.global.document && 'ontouchstart' in goog.global.document.documentElement) || !!(goog.global.navigator.msPointerEnabled); + + +/** + * True if browser supports WebGL. + * @const + * @type {boolean} + * @todo stability experimental + */ +ol.BrowserFeature.HAS_WEBGL = ( + /** + * @return {boolean} WebGL supported. + */ + function() { + if (!('WebGLRenderingContext' in goog.global)) { + return false; + } + try { + var canvas = /** @type {HTMLCanvasElement} */ + (goog.dom.createElement(goog.dom.TagName.CANVAS)); + return !goog.isNull(ol.webgl.getContext(canvas, { + failIfMajorPerformanceCaveat: true + })); + } catch (e) { + return false; + } + })(); diff --git a/src/ol/renderer/webgl/webglrenderer.js b/src/ol/renderer/webgl/webglrenderer.js index eb1871d9a6..ea6e24ade6 100644 --- a/src/ol/renderer/webgl/webglrenderer.js +++ b/src/ol/renderer/webgl/webglrenderer.js @@ -1,6 +1,6 @@ goog.provide('ol.renderer.webgl'); -goog.require('ol.webgl'); +goog.require('ol.BrowserFeature'); /** @@ -8,4 +8,4 @@ goog.require('ol.webgl'); * @const * @type {boolean} */ -ol.renderer.webgl.SUPPORTED = ol.webgl.SUPPORTED; +ol.renderer.webgl.SUPPORTED = ol.BrowserFeature.HAS_WEBGL; diff --git a/src/ol/webgl/webgl.exports b/src/ol/webgl/webgl.exports deleted file mode 100644 index 582ed7670e..0000000000 --- a/src/ol/webgl/webgl.exports +++ /dev/null @@ -1 +0,0 @@ -@exportSymbol ol.webgl.SUPPORTED ol.webgl.SUPPORTED diff --git a/src/ol/webgl/webgl.js b/src/ol/webgl/webgl.js index 8720d354d6..6b39a1edc7 100644 --- a/src/ol/webgl/webgl.js +++ b/src/ol/webgl/webgl.js @@ -1,9 +1,6 @@ goog.provide('ol.webgl'); goog.provide('ol.webgl.WebGLContextEventType'); -goog.require('goog.dom'); -goog.require('goog.dom.TagName'); - /** * @const @@ -45,28 +42,3 @@ ol.webgl.getContext = function(canvas, opt_attributes) { } return null; }; - - -/** - * Is supported. - * @const - * @type {boolean} - */ -ol.webgl.SUPPORTED = ( - /** - * @return {boolean} WebGL supported. - */ - function() { - if (!('WebGLRenderingContext' in goog.global)) { - return false; - } - try { - var canvas = /** @type {HTMLCanvasElement} */ - (goog.dom.createElement(goog.dom.TagName.CANVAS)); - return !goog.isNull(ol.webgl.getContext(canvas, { - failIfMajorPerformanceCaveat: true - })); - } catch (e) { - return false; - } - })(); From 62e880328742734ee2c6945d73e8e9b60c711739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 08:20:52 +0100 Subject: [PATCH 07/19] Add ol.BrowserFeature.HAS_DEVICE_ORIENTATION --- src/ol/browserfeature.exports | 1 + src/ol/browserfeature.js | 10 ++++++++++ src/ol/deviceorientation.exports | 1 - src/ol/deviceorientation.js | 12 ++---------- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/ol/browserfeature.exports b/src/ol/browserfeature.exports index 46f7db1350..b1ff1760c6 100644 --- a/src/ol/browserfeature.exports +++ b/src/ol/browserfeature.exports @@ -1,4 +1,5 @@ @exportSymbol ol.BrowserFeature @exportProperty ol.BrowserFeature.DEVICE_PIXEL_RATIO @exportProperty ol.BrowserFeature.HAS_TOUCH +@exportProperty ol.BrowserFeature.HAS_DEVICE_ORIENTATION @exportProperty ol.BrowserFeature.HAS_WEBGL diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js index 7b5d3c2fe7..c145ebbb37 100644 --- a/src/ol/browserfeature.js +++ b/src/ol/browserfeature.js @@ -21,6 +21,16 @@ ol.ASSUME_TOUCH = false; ol.BrowserFeature.DEVICE_PIXEL_RATIO = goog.global.devicePixelRatio || 1; +/** + * Indicates if DeviceOrientation is supported in the user's browser. + * @const + * @type {boolean} + * @todo stability experimental + */ +ol.BrowserFeature.HAS_DEVICE_ORIENTATION = + 'DeviceOrientationEvent' in goog.global; + + /** * True if browser supports touch events. * @const diff --git a/src/ol/deviceorientation.exports b/src/ol/deviceorientation.exports index b0a0b9eaf2..4496aa24b9 100644 --- a/src/ol/deviceorientation.exports +++ b/src/ol/deviceorientation.exports @@ -1,2 +1 @@ @exportSymbol ol.DeviceOrientation -@exportSymbol ol.DeviceOrientation.SUPPORTED ol.DeviceOrientation.SUPPORTED diff --git a/src/ol/deviceorientation.js b/src/ol/deviceorientation.js index 000494963b..aab556ebef 100644 --- a/src/ol/deviceorientation.js +++ b/src/ol/deviceorientation.js @@ -3,6 +3,7 @@ goog.provide('ol.DeviceOrientationProperty'); goog.require('goog.events'); goog.require('goog.math'); +goog.require('ol.BrowserFeature'); goog.require('ol.Object'); @@ -111,15 +112,6 @@ ol.DeviceOrientation.prototype.disposeInternal = function() { }; -/** - * Indicates if DeviceOrientation is supported in the user's browser. - * @const - * @type {boolean} - * @todo stability experimental - */ -ol.DeviceOrientation.SUPPORTED = 'DeviceOrientationEvent' in goog.global; - - /** * @private * @param {goog.events.BrowserEvent} browserEvent Event. @@ -230,7 +222,7 @@ goog.exportProperty( * @private */ ol.DeviceOrientation.prototype.handleTrackingChanged_ = function() { - if (ol.DeviceOrientation.SUPPORTED) { + if (ol.BrowserFeature.HAS_DEVICE_ORIENTATION) { var tracking = this.getTracking(); if (tracking && goog.isNull(this.listenerKey_)) { this.listenerKey_ = goog.events.listen(goog.global, 'deviceorientation', From b6ec5838f73d70848d1f083184c8c6b3870347c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 08:22:35 +0100 Subject: [PATCH 08/19] Add ol.BrowserFeature.HAS_GEOLOCATION --- src/ol/browserfeature.exports | 1 + src/ol/browserfeature.js | 9 +++++++++ src/ol/geolocation.exports | 1 - src/ol/geolocation.js | 12 ++---------- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/ol/browserfeature.exports b/src/ol/browserfeature.exports index b1ff1760c6..ce7d6c8f13 100644 --- a/src/ol/browserfeature.exports +++ b/src/ol/browserfeature.exports @@ -2,4 +2,5 @@ @exportProperty ol.BrowserFeature.DEVICE_PIXEL_RATIO @exportProperty ol.BrowserFeature.HAS_TOUCH @exportProperty ol.BrowserFeature.HAS_DEVICE_ORIENTATION +@exportProperty ol.BrowserFeature.HAS_GEOLOCATION @exportProperty ol.BrowserFeature.HAS_WEBGL diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js index c145ebbb37..a3ae7d6eb5 100644 --- a/src/ol/browserfeature.js +++ b/src/ol/browserfeature.js @@ -31,6 +31,15 @@ ol.BrowserFeature.HAS_DEVICE_ORIENTATION = 'DeviceOrientationEvent' in goog.global; +/** + * Is HTML5 geolocation supported in the current browser? + * @const + * @type {boolean} + * @todo stability experimental + */ +ol.BrowserFeature.HAS_GEOLOCATION = 'geolocation' in goog.global.navigator; + + /** * True if browser supports touch events. * @const diff --git a/src/ol/geolocation.exports b/src/ol/geolocation.exports index 398f9fefea..adc26edc01 100644 --- a/src/ol/geolocation.exports +++ b/src/ol/geolocation.exports @@ -1,2 +1 @@ @exportSymbol ol.Geolocation -@exportSymbol ol.Geolocation.SUPPORTED ol.Geolocation.SUPPORTED diff --git a/src/ol/geolocation.js b/src/ol/geolocation.js index ffb7a11638..36ff83906c 100644 --- a/src/ol/geolocation.js +++ b/src/ol/geolocation.js @@ -6,6 +6,7 @@ goog.provide('ol.GeolocationProperty'); goog.require('goog.events'); goog.require('goog.events.EventType'); goog.require('goog.math'); +goog.require('ol.BrowserFeature'); goog.require('ol.Coordinate'); goog.require('ol.Object'); goog.require('ol.proj'); @@ -140,7 +141,7 @@ ol.Geolocation.prototype.handleProjectionChanged_ = function() { * @private */ ol.Geolocation.prototype.handleTrackingChanged_ = function() { - if (ol.Geolocation.SUPPORTED) { + if (ol.BrowserFeature.HAS_GEOLOCATION) { var tracking = this.getTracking(); if (tracking && !goog.isDef(this.watchId_)) { this.watchId_ = goog.global.navigator.geolocation.watchPosition( @@ -155,15 +156,6 @@ ol.Geolocation.prototype.handleTrackingChanged_ = function() { }; -/** - * Is HTML5 geolocation supported in the current browser? - * @const - * @type {boolean} - * @todo stability experimental - */ -ol.Geolocation.SUPPORTED = 'geolocation' in goog.global.navigator; - - /** * @private * @param {GeolocationPosition} position position event. From 42a2f7aab90d186f5ebcedd9cc072c306785d037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 08:22:59 +0100 Subject: [PATCH 09/19] Add ol.BrowserFeature.HAS_CANVAS --- src/ol/browserfeature.exports | 3 ++- src/ol/browserfeature.js | 24 +++++++++++++++++++++ src/ol/canvas/canvas.js | 27 ------------------------ src/ol/renderer/canvas/canvasrenderer.js | 4 ++-- 4 files changed, 28 insertions(+), 30 deletions(-) delete mode 100644 src/ol/canvas/canvas.js diff --git a/src/ol/browserfeature.exports b/src/ol/browserfeature.exports index ce7d6c8f13..832c611d89 100644 --- a/src/ol/browserfeature.exports +++ b/src/ol/browserfeature.exports @@ -1,6 +1,7 @@ @exportSymbol ol.BrowserFeature @exportProperty ol.BrowserFeature.DEVICE_PIXEL_RATIO -@exportProperty ol.BrowserFeature.HAS_TOUCH +@exportProperty ol.BrowserFeature.HAS_CANVAS @exportProperty ol.BrowserFeature.HAS_DEVICE_ORIENTATION @exportProperty ol.BrowserFeature.HAS_GEOLOCATION +@exportProperty ol.BrowserFeature.HAS_TOUCH @exportProperty ol.BrowserFeature.HAS_WEBGL diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js index a3ae7d6eb5..54d84852d5 100644 --- a/src/ol/browserfeature.js +++ b/src/ol/browserfeature.js @@ -21,6 +21,30 @@ ol.ASSUME_TOUCH = false; ol.BrowserFeature.DEVICE_PIXEL_RATIO = goog.global.devicePixelRatio || 1; +/** + * True if browser supports Canvas. + * @const + * @type {boolean} + * @todo stability experimental + */ +ol.BrowserFeature.HAS_CANVAS = ( + /** + * @return {boolean} Canvas supported. + */ + function() { + if (!('HTMLCanvasElement' in goog.global)) { + return false; + } + try { + var canvas = /** @type {HTMLCanvasElement} */ + (goog.dom.createElement(goog.dom.TagName.CANVAS)); + return !goog.isNull(canvas.getContext('2d')); + } catch (e) { + return false; + } + })(); + + /** * Indicates if DeviceOrientation is supported in the user's browser. * @const diff --git a/src/ol/canvas/canvas.js b/src/ol/canvas/canvas.js deleted file mode 100644 index 99bcd99217..0000000000 --- a/src/ol/canvas/canvas.js +++ /dev/null @@ -1,27 +0,0 @@ -goog.provide('ol.canvas'); - -goog.require('goog.dom'); -goog.require('goog.dom.TagName'); - - -/** - * Is supported. - * @const - * @type {boolean} - */ -ol.canvas.SUPPORTED = ( - /** - * @return {boolean} Canvas supported. - */ - function() { - if (!('HTMLCanvasElement' in goog.global)) { - return false; - } - try { - var canvas = /** @type {HTMLCanvasElement} */ - (goog.dom.createElement(goog.dom.TagName.CANVAS)); - return !goog.isNull(canvas.getContext('2d')); - } catch (e) { - return false; - } - })(); diff --git a/src/ol/renderer/canvas/canvasrenderer.js b/src/ol/renderer/canvas/canvasrenderer.js index 705283e37f..3bdb8b5ef7 100644 --- a/src/ol/renderer/canvas/canvasrenderer.js +++ b/src/ol/renderer/canvas/canvasrenderer.js @@ -1,6 +1,6 @@ goog.provide('ol.renderer.canvas'); -goog.require('ol.canvas'); +goog.require('ol.BrowserFeature'); /** @@ -8,4 +8,4 @@ goog.require('ol.canvas'); * @const * @type {boolean} */ -ol.renderer.canvas.SUPPORTED = ol.canvas.SUPPORTED; +ol.renderer.canvas.SUPPORTED = ol.BrowserFeature.HAS_CANVAS; From c8038f7855269faf83192a970ba7e417a0465357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 11:10:34 +0100 Subject: [PATCH 10/19] Add ol.BrowserFeature.HAS_DOM --- src/ol/browserfeature.js | 9 +++++++++ src/ol/renderer/dom/domrenderer.js | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js index 54d84852d5..111f6495f3 100644 --- a/src/ol/browserfeature.js +++ b/src/ol/browserfeature.js @@ -55,6 +55,15 @@ ol.BrowserFeature.HAS_DEVICE_ORIENTATION = 'DeviceOrientationEvent' in goog.global; +/** + * True if browser supports DOM. + * @const + * @type {boolean} + * @todo stability experimental + */ +ol.BrowserFeature.HAS_DOM = true; + + /** * Is HTML5 geolocation supported in the current browser? * @const diff --git a/src/ol/renderer/dom/domrenderer.js b/src/ol/renderer/dom/domrenderer.js index 4f2f98d043..39023ecea7 100644 --- a/src/ol/renderer/dom/domrenderer.js +++ b/src/ol/renderer/dom/domrenderer.js @@ -1,9 +1,11 @@ goog.provide('ol.renderer.dom'); +goog.require('ol.BrowserFeature'); + /** * Is supported. * @const * @type {boolean} */ -ol.renderer.dom.SUPPORTED = true; +ol.renderer.dom.SUPPORTED = ol.BrowserFeature.HAS_DOM; From a97e115100baf2593eb39f84f13b9159870fa2d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 11:12:39 +0100 Subject: [PATCH 11/19] Use ol.BrowserFeature.HAS_* in map.js --- src/ol/map.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ol/map.js b/src/ol/map.js index a455b20d05..6578a7e9da 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -1307,17 +1307,17 @@ ol.Map.createOptionsInternal = function(options) { for (i = 0; i < n; ++i) { rendererHint = rendererHints[i]; if (rendererHint == ol.RendererHint.CANVAS) { - if (ol.ENABLE_CANVAS && ol.renderer.canvas.SUPPORTED) { + if (ol.ENABLE_CANVAS && ol.BrowserFeature.HAS_CANVAS) { rendererConstructor = ol.renderer.canvas.Map; break; } } else if (rendererHint == ol.RendererHint.DOM) { - if (ol.ENABLE_DOM && ol.renderer.dom.SUPPORTED) { + if (ol.ENABLE_DOM && ol.BrowserFeature.HAS_DOM) { rendererConstructor = ol.renderer.dom.Map; break; } } else if (rendererHint == ol.RendererHint.WEBGL) { - if (ol.ENABLE_WEBGL && ol.renderer.webgl.SUPPORTED) { + if (ol.ENABLE_WEBGL && ol.BrowserFeature.HAS_WEBGL) { rendererConstructor = ol.renderer.webgl.Map; break; } From 5520cc530d473afe0627db81f7c6490ff12e59ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 11:14:41 +0100 Subject: [PATCH 12/19] Move ol.ENABLE_[CANVAS|DOM|WEBGL] @define's to browserfeature.js --- src/ol/browserfeature.js | 18 ++++++++++++++++++ src/ol/map.js | 18 ------------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js index 111f6495f3..910a2de4de 100644 --- a/src/ol/browserfeature.js +++ b/src/ol/browserfeature.js @@ -11,6 +11,24 @@ goog.require('ol.webgl'); ol.ASSUME_TOUCH = false; +/** + * @define {boolean} Whether to enable canvas. + */ +ol.ENABLE_CANVAS = true; + + +/** + * @define {boolean} Whether to enable DOM. + */ +ol.ENABLE_DOM = true; + + +/** + * @define {boolean} Whether to enable WebGL. + */ +ol.ENABLE_WEBGL = true; + + /** * The ratio between physical pixels and device-independent pixels * (dips) on the device (`window.devicePixelRatio`). diff --git a/src/ol/map.js b/src/ol/map.js index 6578a7e9da..9aa00ada76 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -68,24 +68,6 @@ goog.require('ol.structs.PriorityQueue'); goog.require('ol.vec.Mat4'); -/** - * @define {boolean} Whether to enable canvas. - */ -ol.ENABLE_CANVAS = true; - - -/** - * @define {boolean} Whether to enable DOM. - */ -ol.ENABLE_DOM = true; - - -/** - * @define {boolean} Whether to enable WebGL. - */ -ol.ENABLE_WEBGL = true; - - /** * @enum {string} * @todo stability experimental From 5bb6dbfef3d5e8b0391a80e07271adb8dd4776d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 11:18:10 +0100 Subject: [PATCH 13/19] HAS_CANVAS is false if ENABLE_CANVAS is false --- src/ol/browserfeature.js | 2 +- src/ol/map.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js index 910a2de4de..74ff4b3b79 100644 --- a/src/ol/browserfeature.js +++ b/src/ol/browserfeature.js @@ -45,7 +45,7 @@ ol.BrowserFeature.DEVICE_PIXEL_RATIO = goog.global.devicePixelRatio || 1; * @type {boolean} * @todo stability experimental */ -ol.BrowserFeature.HAS_CANVAS = ( +ol.BrowserFeature.HAS_CANVAS = ol.ENABLE_CANVAS && ( /** * @return {boolean} Canvas supported. */ diff --git a/src/ol/map.js b/src/ol/map.js index 9aa00ada76..51a297ed09 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -1289,7 +1289,7 @@ ol.Map.createOptionsInternal = function(options) { for (i = 0; i < n; ++i) { rendererHint = rendererHints[i]; if (rendererHint == ol.RendererHint.CANVAS) { - if (ol.ENABLE_CANVAS && ol.BrowserFeature.HAS_CANVAS) { + if (ol.BrowserFeature.HAS_CANVAS) { rendererConstructor = ol.renderer.canvas.Map; break; } From 3df49423ad4af6f97d70423621d9298ddb662ee5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 11:18:31 +0100 Subject: [PATCH 14/19] HAS_DOM is false if ENABLE_DOM is false --- src/ol/browserfeature.js | 2 +- src/ol/map.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js index 74ff4b3b79..78daa7a0f7 100644 --- a/src/ol/browserfeature.js +++ b/src/ol/browserfeature.js @@ -79,7 +79,7 @@ ol.BrowserFeature.HAS_DEVICE_ORIENTATION = * @type {boolean} * @todo stability experimental */ -ol.BrowserFeature.HAS_DOM = true; +ol.BrowserFeature.HAS_DOM = ol.ENABLE_DOM; /** diff --git a/src/ol/map.js b/src/ol/map.js index 51a297ed09..f0747ee988 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -1294,7 +1294,7 @@ ol.Map.createOptionsInternal = function(options) { break; } } else if (rendererHint == ol.RendererHint.DOM) { - if (ol.ENABLE_DOM && ol.BrowserFeature.HAS_DOM) { + if (ol.BrowserFeature.HAS_DOM) { rendererConstructor = ol.renderer.dom.Map; break; } From 7fe684a6d41d46ea277430dbaab1ad26e5fe75af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 11:18:47 +0100 Subject: [PATCH 15/19] HAS_WEBGL is false if ENABLE_WEBGL is false --- src/ol/browserfeature.js | 2 +- src/ol/map.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js index 78daa7a0f7..87bc5f5b42 100644 --- a/src/ol/browserfeature.js +++ b/src/ol/browserfeature.js @@ -109,7 +109,7 @@ ol.BrowserFeature.HAS_TOUCH = ol.ASSUME_TOUCH || * @type {boolean} * @todo stability experimental */ -ol.BrowserFeature.HAS_WEBGL = ( +ol.BrowserFeature.HAS_WEBGL = ol.ENABLE_WEBGL && ( /** * @return {boolean} WebGL supported. */ diff --git a/src/ol/map.js b/src/ol/map.js index f0747ee988..a5ee1cffb7 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -1299,7 +1299,7 @@ ol.Map.createOptionsInternal = function(options) { break; } } else if (rendererHint == ol.RendererHint.WEBGL) { - if (ol.ENABLE_WEBGL && ol.BrowserFeature.HAS_WEBGL) { + if (ol.BrowserFeature.HAS_WEBGL) { rendererConstructor = ol.renderer.webgl.Map; break; } From 779ea26f815cf3d7a5e1bcb6b6bdfd082d0a239d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 11:23:34 +0100 Subject: [PATCH 16/19] No need for @type when using @const --- src/ol/browserfeature.js | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/ol/browserfeature.js b/src/ol/browserfeature.js index 87bc5f5b42..c7a30bb633 100644 --- a/src/ol/browserfeature.js +++ b/src/ol/browserfeature.js @@ -32,8 +32,7 @@ ol.ENABLE_WEBGL = true; /** * The ratio between physical pixels and device-independent pixels * (dips) on the device (`window.devicePixelRatio`). -* @const -* @type {number} +* @const {number} * @todo stability experimental */ ol.BrowserFeature.DEVICE_PIXEL_RATIO = goog.global.devicePixelRatio || 1; @@ -41,8 +40,7 @@ ol.BrowserFeature.DEVICE_PIXEL_RATIO = goog.global.devicePixelRatio || 1; /** * True if browser supports Canvas. - * @const - * @type {boolean} + * @const {boolean} * @todo stability experimental */ ol.BrowserFeature.HAS_CANVAS = ol.ENABLE_CANVAS && ( @@ -65,8 +63,7 @@ ol.BrowserFeature.HAS_CANVAS = ol.ENABLE_CANVAS && ( /** * Indicates if DeviceOrientation is supported in the user's browser. - * @const - * @type {boolean} + * @const {boolean} * @todo stability experimental */ ol.BrowserFeature.HAS_DEVICE_ORIENTATION = @@ -75,8 +72,7 @@ ol.BrowserFeature.HAS_DEVICE_ORIENTATION = /** * True if browser supports DOM. - * @const - * @type {boolean} + * @const {boolean} * @todo stability experimental */ ol.BrowserFeature.HAS_DOM = ol.ENABLE_DOM; @@ -84,8 +80,7 @@ ol.BrowserFeature.HAS_DOM = ol.ENABLE_DOM; /** * Is HTML5 geolocation supported in the current browser? - * @const - * @type {boolean} + * @const {boolean} * @todo stability experimental */ ol.BrowserFeature.HAS_GEOLOCATION = 'geolocation' in goog.global.navigator; @@ -93,8 +88,7 @@ ol.BrowserFeature.HAS_GEOLOCATION = 'geolocation' in goog.global.navigator; /** * True if browser supports touch events. -* @const -* @type {boolean} +* @const {boolean} * @todo stability experimental */ ol.BrowserFeature.HAS_TOUCH = ol.ASSUME_TOUCH || @@ -105,8 +99,7 @@ ol.BrowserFeature.HAS_TOUCH = ol.ASSUME_TOUCH || /** * True if browser supports WebGL. - * @const - * @type {boolean} + * @const {boolean} * @todo stability experimental */ ol.BrowserFeature.HAS_WEBGL = ol.ENABLE_WEBGL && ( From fb32a167b32663e26229eb32cb2e6c3fb3f41261 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 11:44:54 +0100 Subject: [PATCH 17/19] Remove ol.renderer.canvas.SUPPORTED --- src/ol/map.js | 1 - src/ol/renderer/canvas/canvasrenderer.js | 11 ----------- 2 files changed, 12 deletions(-) delete mode 100644 src/ol/renderer/canvas/canvasrenderer.js diff --git a/src/ol/map.js b/src/ol/map.js index a5ee1cffb7..f5bfef0bdd 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -58,7 +58,6 @@ goog.require('ol.layer.Group'); goog.require('ol.proj'); goog.require('ol.proj.common'); goog.require('ol.renderer.Map'); -goog.require('ol.renderer.canvas'); goog.require('ol.renderer.canvas.Map'); goog.require('ol.renderer.dom'); goog.require('ol.renderer.dom.Map'); diff --git a/src/ol/renderer/canvas/canvasrenderer.js b/src/ol/renderer/canvas/canvasrenderer.js deleted file mode 100644 index 3bdb8b5ef7..0000000000 --- a/src/ol/renderer/canvas/canvasrenderer.js +++ /dev/null @@ -1,11 +0,0 @@ -goog.provide('ol.renderer.canvas'); - -goog.require('ol.BrowserFeature'); - - -/** - * Is supported. - * @const - * @type {boolean} - */ -ol.renderer.canvas.SUPPORTED = ol.BrowserFeature.HAS_CANVAS; From ee9f50911cdba5ba97976b33908fa8c1edc822cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 11:45:13 +0100 Subject: [PATCH 18/19] Remove ol.renderer.dom.SUPPORTED --- src/ol/map.js | 1 - src/ol/renderer/dom/domrenderer.js | 11 ----------- 2 files changed, 12 deletions(-) delete mode 100644 src/ol/renderer/dom/domrenderer.js diff --git a/src/ol/map.js b/src/ol/map.js index f5bfef0bdd..ab27113eb4 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -59,7 +59,6 @@ goog.require('ol.proj'); goog.require('ol.proj.common'); goog.require('ol.renderer.Map'); goog.require('ol.renderer.canvas.Map'); -goog.require('ol.renderer.dom'); goog.require('ol.renderer.dom.Map'); goog.require('ol.renderer.webgl'); goog.require('ol.renderer.webgl.Map'); diff --git a/src/ol/renderer/dom/domrenderer.js b/src/ol/renderer/dom/domrenderer.js deleted file mode 100644 index 39023ecea7..0000000000 --- a/src/ol/renderer/dom/domrenderer.js +++ /dev/null @@ -1,11 +0,0 @@ -goog.provide('ol.renderer.dom'); - -goog.require('ol.BrowserFeature'); - - -/** - * Is supported. - * @const - * @type {boolean} - */ -ol.renderer.dom.SUPPORTED = ol.BrowserFeature.HAS_DOM; From 9466101a472449a8ee7891dead30d817ebf1f3ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 18 Dec 2013 11:45:23 +0100 Subject: [PATCH 19/19] Remove ol.renderer.webgl.SUPPORTED --- src/ol/map.js | 1 - src/ol/renderer/webgl/webglrenderer.js | 11 ----------- 2 files changed, 12 deletions(-) delete mode 100644 src/ol/renderer/webgl/webglrenderer.js diff --git a/src/ol/map.js b/src/ol/map.js index ab27113eb4..262cadb2a8 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -60,7 +60,6 @@ goog.require('ol.proj.common'); goog.require('ol.renderer.Map'); goog.require('ol.renderer.canvas.Map'); goog.require('ol.renderer.dom.Map'); -goog.require('ol.renderer.webgl'); goog.require('ol.renderer.webgl.Map'); goog.require('ol.structs.PriorityQueue'); goog.require('ol.vec.Mat4'); diff --git a/src/ol/renderer/webgl/webglrenderer.js b/src/ol/renderer/webgl/webglrenderer.js deleted file mode 100644 index ea6e24ade6..0000000000 --- a/src/ol/renderer/webgl/webglrenderer.js +++ /dev/null @@ -1,11 +0,0 @@ -goog.provide('ol.renderer.webgl'); - -goog.require('ol.BrowserFeature'); - - -/** - * Is supported. - * @const - * @type {boolean} - */ -ol.renderer.webgl.SUPPORTED = ol.BrowserFeature.HAS_WEBGL;