From 568f854f29d3af36a911dd29d43f96a960090afe Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Fri, 29 Aug 2014 09:07:01 +0200 Subject: [PATCH 1/5] Add olx.layer.ImageOptions typedef --- externs/olx.js | 97 ++++++++++++++++++++++++++++++++++++++ src/ol/layer/imagelayer.js | 4 +- 2 files changed, 99 insertions(+), 2 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index 10abe1a640..e1ac71a8a1 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -2734,6 +2734,103 @@ olx.layer.HeatmapOptions.prototype.source; olx.layer.HeatmapOptions.prototype.visible; +/** + * @typedef {{brightness: (number|undefined), + * contrast: (number|undefined), + * hue: (number|undefined), + * opacity: (number|undefined), + * saturation: (number|undefined), + * source: ol.source.Image, + * visible: (boolean|undefined), + * extent: (ol.Extent|undefined), + * minResolution: (number|undefined), + * maxResolution: (number|undefined)}} + * @api + */ +olx.layer.ImageOptions; + + +/** + * Brightness. Default is `0`. + * @type {number|undefined} + * @api + */ +olx.layer.ImageOptions.prototype.brightness; + + +/** + * Contrast. Default is `1`. + * @type {number|undefined} + * @api + */ +olx.layer.ImageOptions.prototype.contrast; + + +/** + * Hue. Default is `0`. + * @type {number|undefined} + * @api + */ +olx.layer.ImageOptions.prototype.hue; + + +/** + * Opacity (0, 1). Default is `1`. + * @type {number|undefined} + * @api stable + */ +olx.layer.ImageOptions.prototype.opacity; + + +/** + * Saturation. Default is `1`. + * @type {number|undefined} + * @api + */ +olx.layer.ImageOptions.prototype.saturation; + + +/** + * Source for this layer. + * @type {ol.source.Image} + * @api stable + */ +olx.layer.ImageOptions.prototype.source; + + +/** + * Visibility. Default is `true` (visible). + * @type {boolean|undefined} + * @api stable + */ +olx.layer.ImageOptions.prototype.visible; + + +/** + * The bounding extent for layer rendering. The layer will not be rendered + * outside of this extent. + * @type {ol.Extent|undefined} + * @api stable + */ +olx.layer.ImageOptions.prototype.extent; + + +/** + * The minimum resolution (inclusive) at which this layer will be visible. + * @type {number|undefined} + * @api stable + */ +olx.layer.ImageOptions.prototype.minResolution; + + +/** + * The maximum resolution (exclusive) below which this layer will be visible. + * @type {number|undefined} + * @api stable + */ +olx.layer.ImageOptions.prototype.maxResolution; + + /** * @typedef {{brightness: (number|undefined), * contrast: (number|undefined), diff --git a/src/ol/layer/imagelayer.js b/src/ol/layer/imagelayer.js index e885a9cbc9..11dc35c39d 100644 --- a/src/ol/layer/imagelayer.js +++ b/src/ol/layer/imagelayer.js @@ -15,10 +15,10 @@ goog.require('ol.layer.Layer'); * @constructor * @extends {ol.layer.Layer} * @fires ol.render.Event - * @param {olx.layer.LayerOptions} options Layer options. + * @param {olx.layer.ImageOptions} options Layer options. * @api stable */ ol.layer.Image = function(options) { - goog.base(this, options); + goog.base(this, /** @type {olx.layer.LayerOptions} */ (options)); }; goog.inherits(ol.layer.Image, ol.layer.Layer); From 0e964cb84c7a60ebdcba2add32a5d7b19f692f3c Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Fri, 29 Aug 2014 09:10:15 +0200 Subject: [PATCH 2/5] Set ol.layer.Image#getSource return type to ol.source.Image --- src/ol/layer/imagelayer.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ol/layer/imagelayer.js b/src/ol/layer/imagelayer.js index 11dc35c39d..29c668e799 100644 --- a/src/ol/layer/imagelayer.js +++ b/src/ol/layer/imagelayer.js @@ -22,3 +22,11 @@ ol.layer.Image = function(options) { goog.base(this, /** @type {olx.layer.LayerOptions} */ (options)); }; goog.inherits(ol.layer.Image, ol.layer.Layer); + + +/** + * @function + * @return {ol.source.Image} Source. + * @api stable + */ +ol.layer.Image.prototype.getSource; From 009cd9f8400882bb32a8a56cc1e9825a812503b9 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Fri, 29 Aug 2014 09:15:47 +0200 Subject: [PATCH 3/5] Remove unnecessary type cast --- src/ol/renderer/canvas/canvasimagelayerrenderer.js | 3 --- src/ol/renderer/dom/domimagelayerrenderer.js | 3 --- src/ol/renderer/webgl/webglimagelayerrenderer.js | 3 --- 3 files changed, 9 deletions(-) diff --git a/src/ol/renderer/canvas/canvasimagelayerrenderer.js b/src/ol/renderer/canvas/canvasimagelayerrenderer.js index d72653f122..bfca200597 100644 --- a/src/ol/renderer/canvas/canvasimagelayerrenderer.js +++ b/src/ol/renderer/canvas/canvasimagelayerrenderer.js @@ -11,7 +11,6 @@ goog.require('ol.extent'); goog.require('ol.layer.Image'); goog.require('ol.renderer.Map'); goog.require('ol.renderer.canvas.Layer'); -goog.require('ol.source.Image'); goog.require('ol.vec.Mat4'); @@ -49,7 +48,6 @@ ol.renderer.canvas.ImageLayer.prototype.forEachFeatureAtPixel = function(coordinate, frameState, callback, thisArg) { var layer = this.getLayer(); var source = layer.getSource(); - goog.asserts.assertInstanceof(source, ol.source.Image); var extent = frameState.extent; var resolution = frameState.viewState.resolution; var rotation = frameState.viewState.rotation; @@ -99,7 +97,6 @@ ol.renderer.canvas.ImageLayer.prototype.prepareFrame = var imageLayer = this.getLayer(); goog.asserts.assertInstanceof(imageLayer, ol.layer.Image); var imageSource = imageLayer.getSource(); - goog.asserts.assertInstanceof(imageSource, ol.source.Image); var hints = frameState.viewHints; diff --git a/src/ol/renderer/dom/domimagelayerrenderer.js b/src/ol/renderer/dom/domimagelayerrenderer.js index acd7cfad84..04b4f16533 100644 --- a/src/ol/renderer/dom/domimagelayerrenderer.js +++ b/src/ol/renderer/dom/domimagelayerrenderer.js @@ -13,7 +13,6 @@ goog.require('ol.dom'); goog.require('ol.extent'); goog.require('ol.layer.Image'); goog.require('ol.renderer.dom.Layer'); -goog.require('ol.source.Image'); goog.require('ol.vec.Mat4'); @@ -54,7 +53,6 @@ ol.renderer.dom.ImageLayer.prototype.forEachFeatureAtPixel = function(coordinate, frameState, callback, thisArg) { var layer = this.getLayer(); var source = layer.getSource(); - goog.asserts.assertInstanceof(source, ol.source.Image); var extent = frameState.extent; var resolution = frameState.viewState.resolution; var rotation = frameState.viewState.rotation; @@ -86,7 +84,6 @@ ol.renderer.dom.ImageLayer.prototype.prepareFrame = var imageLayer = this.getLayer(); goog.asserts.assertInstanceof(imageLayer, ol.layer.Image); var imageSource = imageLayer.getSource(); - goog.asserts.assertInstanceof(imageSource, ol.source.Image); var hints = frameState.viewHints; diff --git a/src/ol/renderer/webgl/webglimagelayerrenderer.js b/src/ol/renderer/webgl/webglimagelayerrenderer.js index a179015151..7022b626e9 100644 --- a/src/ol/renderer/webgl/webglimagelayerrenderer.js +++ b/src/ol/renderer/webgl/webglimagelayerrenderer.js @@ -13,7 +13,6 @@ goog.require('ol.ViewHint'); goog.require('ol.extent'); goog.require('ol.layer.Image'); goog.require('ol.renderer.webgl.Layer'); -goog.require('ol.source.Image'); @@ -80,7 +79,6 @@ ol.renderer.webgl.ImageLayer.prototype.forEachFeatureAtPixel = function(coordinate, frameState, callback, thisArg) { var layer = this.getLayer(); var source = layer.getSource(); - goog.asserts.assertInstanceof(source, ol.source.Image); var extent = frameState.extent; var resolution = frameState.viewState.resolution; var rotation = frameState.viewState.rotation; @@ -116,7 +114,6 @@ ol.renderer.webgl.ImageLayer.prototype.prepareFrame = var imageLayer = this.getLayer(); goog.asserts.assertInstanceof(imageLayer, ol.layer.Image); var imageSource = imageLayer.getSource(); - goog.asserts.assertInstanceof(imageSource, ol.source.Image); var hints = frameState.viewHints; From b36640703876cde08d6e3d0a7957fa8a81e5b42f Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Fri, 29 Aug 2014 10:45:30 +0200 Subject: [PATCH 4/5] Set ol.layer.Tile#getSource return type to ol.source.Tile --- externs/olx.js | 4 ++-- src/ol/layer/tilelayer.js | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index e1ac71a8a1..91af55cc09 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -2838,7 +2838,7 @@ olx.layer.ImageOptions.prototype.maxResolution; * opacity: (number|undefined), * preload: (number|undefined), * saturation: (number|undefined), - * source: ol.source.Source, + * source: ol.source.Tile, * visible: (boolean|undefined), * extent: (ol.Extent|undefined), * minResolution: (number|undefined), @@ -2900,7 +2900,7 @@ olx.layer.TileOptions.prototype.saturation; /** * Source for this layer. - * @type {ol.source.Source} + * @type {ol.source.Tile} * @api stable */ olx.layer.TileOptions.prototype.source; diff --git a/src/ol/layer/tilelayer.js b/src/ol/layer/tilelayer.js index 9b7f3387a9..fac62872c9 100644 --- a/src/ol/layer/tilelayer.js +++ b/src/ol/layer/tilelayer.js @@ -28,8 +28,7 @@ ol.layer.TileProperty = { * @api stable */ ol.layer.Tile = function(options) { - goog.base(this, options); - + goog.base(this, /** @type {olx.layer.LayerOptions} */ (options)); }; goog.inherits(ol.layer.Tile, ol.layer.Layer); @@ -49,6 +48,14 @@ goog.exportProperty( ol.layer.Tile.prototype.getPreload); +/** + * @function + * @return {ol.source.Tile} Source. + * @api stable + */ +ol.layer.Tile.prototype.getSource; + + /** * @param {number} preload The level to preload tiles up to. * @observable From d7ee71a811b868ff99f18f8103b8c2e116704c67 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Fri, 29 Aug 2014 10:47:36 +0200 Subject: [PATCH 5/5] Remove unnecessary type cast --- src/ol/renderer/canvas/canvastilelayerrenderer.js | 2 -- src/ol/renderer/dom/domtilelayerrenderer.js | 2 -- src/ol/renderer/webgl/webgltilelayerrenderer.js | 2 -- 3 files changed, 6 deletions(-) diff --git a/src/ol/renderer/canvas/canvastilelayerrenderer.js b/src/ol/renderer/canvas/canvastilelayerrenderer.js index c30acb9aab..daa875c1fc 100644 --- a/src/ol/renderer/canvas/canvastilelayerrenderer.js +++ b/src/ol/renderer/canvas/canvastilelayerrenderer.js @@ -15,7 +15,6 @@ goog.require('ol.extent'); goog.require('ol.layer.Tile'); goog.require('ol.renderer.Map'); goog.require('ol.renderer.canvas.Layer'); -goog.require('ol.source.Tile'); goog.require('ol.tilecoord'); goog.require('ol.vec.Mat4'); @@ -175,7 +174,6 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame = var tileLayer = this.getLayer(); goog.asserts.assertInstanceof(tileLayer, ol.layer.Tile); var tileSource = tileLayer.getSource(); - goog.asserts.assertInstanceof(tileSource, ol.source.Tile); var tileGrid = tileSource.getTileGridForProjection(projection); var tileGutter = tileSource.getGutter(); var z = tileGrid.getZForResolution(viewState.resolution); diff --git a/src/ol/renderer/dom/domtilelayerrenderer.js b/src/ol/renderer/dom/domtilelayerrenderer.js index adddecb096..fb294d0659 100644 --- a/src/ol/renderer/dom/domtilelayerrenderer.js +++ b/src/ol/renderer/dom/domtilelayerrenderer.js @@ -21,7 +21,6 @@ goog.require('ol.dom.BrowserFeature'); goog.require('ol.extent'); goog.require('ol.layer.Tile'); goog.require('ol.renderer.dom.Layer'); -goog.require('ol.source.Tile'); goog.require('ol.tilecoord'); goog.require('ol.tilegrid.TileGrid'); goog.require('ol.vec.Mat4'); @@ -96,7 +95,6 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame = var tileLayer = this.getLayer(); goog.asserts.assertInstanceof(tileLayer, ol.layer.Tile); var tileSource = tileLayer.getSource(); - goog.asserts.assertInstanceof(tileSource, ol.source.Tile); var tileGrid = tileSource.getTileGridForProjection(projection); var tileGutter = tileSource.getGutter(); var z = tileGrid.getZForResolution(viewState.resolution); diff --git a/src/ol/renderer/webgl/webgltilelayerrenderer.js b/src/ol/renderer/webgl/webgltilelayerrenderer.js index 84df851850..b9cfb26b24 100644 --- a/src/ol/renderer/webgl/webgltilelayerrenderer.js +++ b/src/ol/renderer/webgl/webgltilelayerrenderer.js @@ -16,7 +16,6 @@ goog.require('ol.layer.Tile'); goog.require('ol.math'); goog.require('ol.renderer.webgl.Layer'); goog.require('ol.renderer.webgl.tilelayer.shader'); -goog.require('ol.source.Tile'); goog.require('ol.structs.Buffer'); goog.require('ol.tilecoord'); @@ -120,7 +119,6 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame = var tileLayer = this.getLayer(); goog.asserts.assertInstanceof(tileLayer, ol.layer.Tile); var tileSource = tileLayer.getSource(); - goog.asserts.assertInstanceof(tileSource, ol.source.Tile); var tileGrid = tileSource.getTileGridForProjection(projection); var z = tileGrid.getZForResolution(viewState.resolution); var tileResolution = tileGrid.getResolution(z);