Merge pull request #20 from openlayers/exp-reorganization

Exp reorganization
This commit is contained in:
Tom Payne
2012-09-13 06:40:53 -07:00
62 changed files with 402 additions and 395 deletions
@@ -6,8 +6,6 @@ goog.require('ol3.Collection');
goog.require('ol3.Map'); goog.require('ol3.Map');
goog.require('ol3.MapProperty'); goog.require('ol3.MapProperty');
goog.require('ol3.Projection'); goog.require('ol3.Projection');
goog.require('ol3.dom');
goog.require('ol3.dom.MapRenderer');
goog.require('ol3.interaction.AltDragRotate'); goog.require('ol3.interaction.AltDragRotate');
goog.require('ol3.interaction.CenterConstraint'); goog.require('ol3.interaction.CenterConstraint');
goog.require('ol3.interaction.Constraints'); goog.require('ol3.interaction.Constraints');
@@ -19,8 +17,10 @@ goog.require('ol3.interaction.MouseWheelZoom');
goog.require('ol3.interaction.ResolutionConstraint'); goog.require('ol3.interaction.ResolutionConstraint');
goog.require('ol3.interaction.RotationConstraint'); goog.require('ol3.interaction.RotationConstraint');
goog.require('ol3.interaction.ShiftDragZoom'); goog.require('ol3.interaction.ShiftDragZoom');
goog.require('ol3.webgl'); goog.require('ol3.renderer.dom');
goog.require('ol3.webgl.MapRenderer'); goog.require('ol3.renderer.dom.Map');
goog.require('ol3.renderer.webgl');
goog.require('ol3.renderer.webgl.Map');
/** /**
@@ -132,13 +132,13 @@ ol3.createMap = function(target, opt_values, opt_rendererHints) {
for (i = 0; i < rendererHints.length; ++i) { for (i = 0; i < rendererHints.length; ++i) {
rendererHint = rendererHints[i]; rendererHint = rendererHints[i];
if (rendererHint == ol3.RendererHint.DOM) { if (rendererHint == ol3.RendererHint.DOM) {
if (ol3.ENABLE_DOM && ol3.dom.isSupported()) { if (ol3.ENABLE_DOM && ol3.renderer.dom.isSupported()) {
rendererConstructor = ol3.dom.MapRenderer; rendererConstructor = ol3.renderer.dom.Map;
break; break;
} }
} else if (rendererHint == ol3.RendererHint.WEBGL) { } else if (rendererHint == ol3.RendererHint.WEBGL) {
if (ol3.ENABLE_WEBGL && ol3.webgl.isSupported()) { if (ol3.ENABLE_WEBGL && ol3.renderer.webgl.isSupported()) {
rendererConstructor = ol3.webgl.MapRenderer; rendererConstructor = ol3.renderer.webgl.Map;
break; break;
} }
} }
-9
View File
@@ -1,9 +0,0 @@
goog.provide('ol3.dom');
goog.require('goog.functions');
/**
* @return {boolean} Is supported.
*/
ol3.dom.isSupported = goog.functions.TRUE;
+3 -3
View File
@@ -32,13 +32,13 @@ goog.require('ol3.Color');
goog.require('ol3.Coordinate'); goog.require('ol3.Coordinate');
goog.require('ol3.Extent'); goog.require('ol3.Extent');
goog.require('ol3.Interaction'); goog.require('ol3.Interaction');
goog.require('ol3.LayerRenderer');
goog.require('ol3.MapBrowserEvent'); goog.require('ol3.MapBrowserEvent');
goog.require('ol3.Object'); goog.require('ol3.Object');
goog.require('ol3.Pixel'); goog.require('ol3.Pixel');
goog.require('ol3.Projection'); goog.require('ol3.Projection');
goog.require('ol3.Size'); goog.require('ol3.Size');
goog.require('ol3.TransformFunction'); goog.require('ol3.TransformFunction');
goog.require('ol3.renderer.Layer');
/** /**
@@ -79,7 +79,7 @@ ol3.MapPaneZIndex = {
* @extends {ol3.Object} * @extends {ol3.Object}
* @implements {goog.fx.anim.Animated} * @implements {goog.fx.anim.Animated}
* @param {Element} container Container. * @param {Element} container Container.
* @param {function(new: ol3.MapRenderer, Element, ol3.Map)} rendererConstructor * @param {function(new: ol3.renderer.Map, Element, ol3.Map)} rendererConstructor
* Renderer constructor. * Renderer constructor.
* @param {Object=} opt_values Values. * @param {Object=} opt_values Values.
* @param {goog.dom.ViewportSizeMonitor=} opt_viewportSizeMonitor * @param {goog.dom.ViewportSizeMonitor=} opt_viewportSizeMonitor
@@ -179,7 +179,7 @@ ol3.Map = function(
this.registerDisposable(dragger); this.registerDisposable(dragger);
/** /**
* @type {ol3.MapRenderer} * @type {ol3.renderer.Map}
* @private * @private
*/ */
this.renderer_ = new rendererConstructor(this.viewport_, this); this.renderer_ = new rendererConstructor(this.viewport_, this);
+9
View File
@@ -0,0 +1,9 @@
goog.provide('ol3.renderer.dom');
goog.require('goog.functions');
/**
* @return {boolean} Is supported.
*/
ol3.renderer.dom.isSupported = goog.functions.TRUE;
@@ -1,18 +1,18 @@
goog.provide('ol3.dom.LayerRenderer'); goog.provide('ol3.renderer.dom.Layer');
goog.require('ol3.Coordinate'); goog.require('ol3.Coordinate');
goog.require('ol3.LayerRenderer'); goog.require('ol3.renderer.Layer');
/** /**
* @constructor * @constructor
* @extends {ol3.LayerRenderer} * @extends {ol3.renderer.Layer}
* @param {ol3.MapRenderer} mapRenderer Map renderer. * @param {ol3.renderer.Map} mapRenderer Map renderer.
* @param {ol3.Layer} layer Layer. * @param {ol3.Layer} layer Layer.
* @param {!Element} target Target. * @param {!Element} target Target.
*/ */
ol3.dom.LayerRenderer = function(mapRenderer, layer, target) { ol3.renderer.dom.Layer = function(mapRenderer, layer, target) {
goog.base(this, mapRenderer, layer); goog.base(this, mapRenderer, layer);
/** /**
@@ -33,22 +33,22 @@ ol3.dom.LayerRenderer = function(mapRenderer, layer, target) {
this.handleLayerVisibleChange(); this.handleLayerVisibleChange();
}; };
goog.inherits(ol3.dom.LayerRenderer, ol3.LayerRenderer); goog.inherits(ol3.renderer.dom.Layer, ol3.renderer.Layer);
/** /**
* @override * @override
* @return {ol3.MapRenderer} Map renderer. * @return {ol3.renderer.Map} Map renderer.
*/ */
ol3.dom.LayerRenderer.prototype.getMapRenderer = function() { ol3.renderer.dom.Layer.prototype.getMapRenderer = function() {
return /** @type {ol3.dom.MapRenderer} */ goog.base(this, 'getMapRenderer'); return /** @type {ol3.renderer.dom.Map} */ goog.base(this, 'getMapRenderer');
}; };
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.dom.LayerRenderer.prototype.handleLayerLoad = function() { ol3.renderer.dom.Layer.prototype.handleLayerLoad = function() {
this.getMap().render(); this.getMap().render();
}; };
@@ -56,7 +56,7 @@ ol3.dom.LayerRenderer.prototype.handleLayerLoad = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.dom.LayerRenderer.prototype.handleLayerOpacityChange = function() { ol3.renderer.dom.Layer.prototype.handleLayerOpacityChange = function() {
goog.style.setOpacity(this.target, this.getLayer().getOpacity()); goog.style.setOpacity(this.target, this.getLayer().getOpacity());
}; };
@@ -64,14 +64,14 @@ ol3.dom.LayerRenderer.prototype.handleLayerOpacityChange = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.dom.LayerRenderer.prototype.handleLayerVisibleChange = function() { ol3.renderer.dom.Layer.prototype.handleLayerVisibleChange = function() {
goog.style.showElement(this.target, this.getLayer().getVisible()); goog.style.showElement(this.target, this.getLayer().getVisible());
}; };
/** /**
*/ */
ol3.dom.LayerRenderer.prototype.render = goog.abstractMethod; ol3.renderer.dom.Layer.prototype.render = goog.abstractMethod;
/** /**
@@ -79,6 +79,6 @@ ol3.dom.LayerRenderer.prototype.render = goog.abstractMethod;
* *
* @param {ol3.Coordinate} origin Origin. * @param {ol3.Coordinate} origin Origin.
*/ */
ol3.dom.LayerRenderer.prototype.setOrigin = function(origin) { ol3.renderer.dom.Layer.prototype.setOrigin = function(origin) {
this.origin = origin; this.origin = origin;
}; };
@@ -1,4 +1,4 @@
goog.provide('ol3.dom.MapRenderer'); goog.provide('ol3.renderer.dom.Map');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.dom'); goog.require('goog.dom');
@@ -6,19 +6,19 @@ goog.require('goog.dom.TagName');
goog.require('goog.style'); goog.require('goog.style');
goog.require('ol3.Coordinate'); goog.require('ol3.Coordinate');
goog.require('ol3.Map'); goog.require('ol3.Map');
goog.require('ol3.MapRenderer');
goog.require('ol3.TileLayer'); goog.require('ol3.TileLayer');
goog.require('ol3.dom.TileLayerRenderer'); goog.require('ol3.renderer.Map');
goog.require('ol3.renderer.dom.TileLayer');
/** /**
* @constructor * @constructor
* @extends {ol3.MapRenderer} * @extends {ol3.renderer.Map}
* @param {Element} container Container. * @param {Element} container Container.
* @param {ol3.Map} map Map. * @param {ol3.Map} map Map.
*/ */
ol3.dom.MapRenderer = function(container, map) { ol3.renderer.dom.Map = function(container, map) {
goog.base(this, container, map); goog.base(this, container, map);
@@ -51,13 +51,13 @@ ol3.dom.MapRenderer = function(container, map) {
*/ */
this.layersPaneOffset_ = null; this.layersPaneOffset_ = null;
}; };
goog.inherits(ol3.dom.MapRenderer, ol3.MapRenderer); goog.inherits(ol3.renderer.dom.Map, ol3.renderer.Map);
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.dom.MapRenderer.prototype.createLayerRenderer = function(layer) { ol3.renderer.dom.Map.prototype.createLayerRenderer = function(layer) {
if (layer instanceof ol3.TileLayer) { if (layer instanceof ol3.TileLayer) {
@@ -66,7 +66,7 @@ ol3.dom.MapRenderer.prototype.createLayerRenderer = function(layer) {
layerPane.style.position = 'absolute'; layerPane.style.position = 'absolute';
goog.dom.appendChild(this.layersPane_, layerPane); goog.dom.appendChild(this.layersPane_, layerPane);
var layerRenderer = new ol3.dom.TileLayerRenderer(this, layer, layerPane); var layerRenderer = new ol3.renderer.dom.TileLayer(this, layer, layerPane);
this.layerPanes_[goog.getUid(layerRenderer)] = layerPane; this.layerPanes_[goog.getUid(layerRenderer)] = layerPane;
@@ -82,7 +82,7 @@ ol3.dom.MapRenderer.prototype.createLayerRenderer = function(layer) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.dom.MapRenderer.prototype.handleCenterChanged = function() { ol3.renderer.dom.Map.prototype.handleCenterChanged = function() {
goog.base(this, 'handleCenterChanged'); goog.base(this, 'handleCenterChanged');
var map = this.getMap(); var map = this.getMap();
if (!map.isDef()) { if (!map.isDef()) {
@@ -102,7 +102,7 @@ ol3.dom.MapRenderer.prototype.handleCenterChanged = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.dom.MapRenderer.prototype.handleResolutionChanged = function() { ol3.renderer.dom.Map.prototype.handleResolutionChanged = function() {
goog.base(this, 'handleResolutionChanged'); goog.base(this, 'handleResolutionChanged');
var map = this.getMap(); var map = this.getMap();
if (!map.isDef()) { if (!map.isDef()) {
@@ -119,7 +119,7 @@ ol3.dom.MapRenderer.prototype.handleResolutionChanged = function() {
* Reset the layers pane to its initial position. * Reset the layers pane to its initial position.
* @private * @private
*/ */
ol3.dom.MapRenderer.prototype.resetLayersPane_ = function() { ol3.renderer.dom.Map.prototype.resetLayersPane_ = function() {
var offset = new ol3.Coordinate(0, 0); var offset = new ol3.Coordinate(0, 0);
goog.style.setPosition(this.layersPane_, offset); goog.style.setPosition(this.layersPane_, offset);
@@ -134,7 +134,7 @@ ol3.dom.MapRenderer.prototype.resetLayersPane_ = function() {
* Set the origin for each layer renderer. * Set the origin for each layer renderer.
* @private * @private
*/ */
ol3.dom.MapRenderer.prototype.setOrigin_ = function() { ol3.renderer.dom.Map.prototype.setOrigin_ = function() {
var center = this.map.getCenter(); var center = this.map.getCenter();
var resolution = this.map.getResolution(); var resolution = this.map.getResolution();
var targetSize = this.map.getSize(); var targetSize = this.map.getSize();
@@ -153,7 +153,7 @@ ol3.dom.MapRenderer.prototype.setOrigin_ = function() {
* Move the layers pane. * Move the layers pane.
* @private * @private
*/ */
ol3.dom.MapRenderer.prototype.shiftLayersPane_ = function() { ol3.renderer.dom.Map.prototype.shiftLayersPane_ = function() {
var center = this.map.getCenter(); var center = this.map.getCenter();
var oldCenter = this.renderedCenter_; var oldCenter = this.renderedCenter_;
var resolution = this.map.getResolution(); var resolution = this.map.getResolution();
@@ -1,20 +1,20 @@
goog.provide('ol3.dom.TileLayerRenderer'); goog.provide('ol3.renderer.dom.TileLayer');
goog.require('goog.dom'); goog.require('goog.dom');
goog.require('ol3.Coordinate'); goog.require('ol3.Coordinate');
goog.require('ol3.Extent'); goog.require('ol3.Extent');
goog.require('ol3.dom.LayerRenderer'); goog.require('ol3.renderer.dom.Layer');
/** /**
* @constructor * @constructor
* @extends {ol3.dom.LayerRenderer} * @extends {ol3.renderer.dom.Layer}
* @param {ol3.MapRenderer} mapRenderer Map renderer. * @param {ol3.renderer.Map} mapRenderer Map renderer.
* @param {ol3.TileLayer} tileLayer Tile layer. * @param {ol3.TileLayer} tileLayer Tile layer.
* @param {!Element} target Target. * @param {!Element} target Target.
*/ */
ol3.dom.TileLayerRenderer = function(mapRenderer, tileLayer, target) { ol3.renderer.dom.TileLayer = function(mapRenderer, tileLayer, target) {
goog.base(this, mapRenderer, tileLayer, target); goog.base(this, mapRenderer, tileLayer, target);
/** /**
@@ -29,14 +29,14 @@ ol3.dom.TileLayerRenderer = function(mapRenderer, tileLayer, target) {
*/ */
this.renderedMapResolution_ = undefined; this.renderedMapResolution_ = undefined;
}; };
goog.inherits(ol3.dom.TileLayerRenderer, ol3.dom.LayerRenderer); goog.inherits(ol3.renderer.dom.TileLayer, ol3.renderer.dom.Layer);
/** /**
* @override * @override
* @return {ol3.TileLayer} Layer. * @return {ol3.TileLayer} Layer.
*/ */
ol3.dom.TileLayerRenderer.prototype.getLayer = function() { ol3.renderer.dom.TileLayer.prototype.getLayer = function() {
return /** @type {ol3.TileLayer} */ goog.base(this, 'getLayer'); return /** @type {ol3.TileLayer} */ goog.base(this, 'getLayer');
}; };
@@ -48,7 +48,7 @@ ol3.dom.TileLayerRenderer.prototype.getLayer = function() {
* @param {number} resolution Resolution. * @param {number} resolution Resolution.
* @return {ol3.Coordinate} Offset. * @return {ol3.Coordinate} Offset.
*/ */
ol3.dom.TileLayerRenderer.prototype.getTileOffset_ = function(z, resolution) { ol3.renderer.dom.TileLayer.prototype.getTileOffset_ = function(z, resolution) {
var tileLayer = this.getLayer(); var tileLayer = this.getLayer();
var tileStore = tileLayer.getStore(); var tileStore = tileLayer.getStore();
var tileGrid = tileStore.getTileGrid(); var tileGrid = tileStore.getTileGrid();
@@ -66,7 +66,7 @@ ol3.dom.TileLayerRenderer.prototype.getTileOffset_ = function(z, resolution) {
* @param {ol3.TileBounds} tileBounds Tile bounds. * @param {ol3.TileBounds} tileBounds Tile bounds.
* @param {number} z Z. * @param {number} z Z.
*/ */
ol3.dom.TileLayerRenderer.prototype.removeInvisibleTiles_ = function( ol3.renderer.dom.TileLayer.prototype.removeInvisibleTiles_ = function(
tileBounds, z) { tileBounds, z) {
var key, tileCoord, prune, tile; var key, tileCoord, prune, tile;
for (key in this.renderedTiles_) { for (key in this.renderedTiles_) {
@@ -88,7 +88,7 @@ ol3.dom.TileLayerRenderer.prototype.removeInvisibleTiles_ = function(
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.dom.TileLayerRenderer.prototype.render = function() { ol3.renderer.dom.TileLayer.prototype.render = function() {
var map = this.getMap(); var map = this.getMap();
if (!map.isDef()) { if (!map.isDef()) {
@@ -1,4 +1,4 @@
goog.provide('ol3.LayerRenderer'); goog.provide('ol3.renderer.Layer');
goog.require('goog.events'); goog.require('goog.events');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
@@ -11,16 +11,16 @@ goog.require('ol3.Object');
/** /**
* @constructor * @constructor
* @extends {ol3.Object} * @extends {ol3.Object}
* @param {ol3.MapRenderer} mapRenderer Map renderer. * @param {ol3.renderer.Map} mapRenderer Map renderer.
* @param {ol3.Layer} layer Layer. * @param {ol3.Layer} layer Layer.
*/ */
ol3.LayerRenderer = function(mapRenderer, layer) { ol3.renderer.Layer = function(mapRenderer, layer) {
goog.base(this); goog.base(this);
/** /**
* @private * @private
* @type {ol3.MapRenderer} * @type {ol3.renderer.Map}
*/ */
this.mapRenderer_ = mapRenderer; this.mapRenderer_ = mapRenderer;
@@ -58,13 +58,13 @@ ol3.LayerRenderer = function(mapRenderer, layer) {
this.handleLayerVisibleChange, false, this); this.handleLayerVisibleChange, false, this);
}; };
goog.inherits(ol3.LayerRenderer, ol3.Object); goog.inherits(ol3.renderer.Layer, ol3.Object);
/** /**
* @return {ol3.Layer} Layer. * @return {ol3.Layer} Layer.
*/ */
ol3.LayerRenderer.prototype.getLayer = function() { ol3.renderer.Layer.prototype.getLayer = function() {
return this.layer_; return this.layer_;
}; };
@@ -72,15 +72,15 @@ ol3.LayerRenderer.prototype.getLayer = function() {
/** /**
* @return {ol3.Map} Map. * @return {ol3.Map} Map.
*/ */
ol3.LayerRenderer.prototype.getMap = function() { ol3.renderer.Layer.prototype.getMap = function() {
return this.mapRenderer_.getMap(); return this.mapRenderer_.getMap();
}; };
/** /**
* @return {ol3.MapRenderer} Map renderer. * @return {ol3.renderer.Map} Map renderer.
*/ */
ol3.LayerRenderer.prototype.getMapRenderer = function() { ol3.renderer.Layer.prototype.getMapRenderer = function() {
return this.mapRenderer_; return this.mapRenderer_;
}; };
@@ -88,40 +88,40 @@ ol3.LayerRenderer.prototype.getMapRenderer = function() {
/** /**
* @protected * @protected
*/ */
ol3.LayerRenderer.prototype.handleLayerBrightnessChange = goog.nullFunction; ol3.renderer.Layer.prototype.handleLayerBrightnessChange = goog.nullFunction;
/** /**
* @protected * @protected
*/ */
ol3.LayerRenderer.prototype.handleLayerContrastChange = goog.nullFunction; ol3.renderer.Layer.prototype.handleLayerContrastChange = goog.nullFunction;
/** /**
* @protected * @protected
*/ */
ol3.LayerRenderer.prototype.handleLayerHueChange = goog.nullFunction; ol3.renderer.Layer.prototype.handleLayerHueChange = goog.nullFunction;
/** /**
* @protected * @protected
*/ */
ol3.LayerRenderer.prototype.handleLayerLoad = goog.nullFunction; ol3.renderer.Layer.prototype.handleLayerLoad = goog.nullFunction;
/** /**
* @protected * @protected
*/ */
ol3.LayerRenderer.prototype.handleLayerOpacityChange = goog.nullFunction; ol3.renderer.Layer.prototype.handleLayerOpacityChange = goog.nullFunction;
/** /**
* @protected * @protected
*/ */
ol3.LayerRenderer.prototype.handleLayerSaturationChange = goog.nullFunction; ol3.renderer.Layer.prototype.handleLayerSaturationChange = goog.nullFunction;
/** /**
* @protected * @protected
*/ */
ol3.LayerRenderer.prototype.handleLayerVisibleChange = goog.nullFunction; ol3.renderer.Layer.prototype.handleLayerVisibleChange = goog.nullFunction;
@@ -1,4 +1,4 @@
goog.provide('ol3.MapRenderer'); goog.provide('ol3.renderer.Map');
goog.require('goog.Disposable'); goog.require('goog.Disposable');
goog.require('goog.events'); goog.require('goog.events');
@@ -16,7 +16,7 @@ goog.require('ol3.MapProperty');
* @param {Element} container Container. * @param {Element} container Container.
* @param {ol3.Map} map Map. * @param {ol3.Map} map Map.
*/ */
ol3.MapRenderer = function(container, map) { ol3.renderer.Map = function(container, map) {
goog.base(this); goog.base(this);
@@ -34,7 +34,7 @@ ol3.MapRenderer = function(container, map) {
/** /**
* @protected * @protected
* @type {Object.<number, ol3.LayerRenderer>} * @type {Object.<number, ol3.renderer.Layer>}
*/ */
this.layerRenderers = {}; this.layerRenderers = {};
@@ -93,14 +93,14 @@ ol3.MapRenderer = function(container, map) {
]; ];
}; };
goog.inherits(ol3.MapRenderer, goog.Disposable); goog.inherits(ol3.renderer.Map, goog.Disposable);
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol3.Layer} layer Layer.
* @protected * @protected
*/ */
ol3.MapRenderer.prototype.addLayer = function(layer) { ol3.renderer.Map.prototype.addLayer = function(layer) {
var layerRenderer = this.createLayerRenderer(layer); var layerRenderer = this.createLayerRenderer(layer);
this.setLayerRenderer(layer, layerRenderer); this.setLayerRenderer(layer, layerRenderer);
}; };
@@ -109,21 +109,21 @@ ol3.MapRenderer.prototype.addLayer = function(layer) {
/** /**
* @return {boolean} Can rotate. * @return {boolean} Can rotate.
*/ */
ol3.MapRenderer.prototype.canRotate = goog.functions.FALSE; ol3.renderer.Map.prototype.canRotate = goog.functions.FALSE;
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol3.Layer} layer Layer.
* @protected * @protected
* @return {ol3.LayerRenderer} layerRenderer Layer renderer. * @return {ol3.renderer.Layer} layerRenderer Layer renderer.
*/ */
ol3.MapRenderer.prototype.createLayerRenderer = goog.abstractMethod; ol3.renderer.Map.prototype.createLayerRenderer = goog.abstractMethod;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.MapRenderer.prototype.disposeInternal = function() { ol3.renderer.Map.prototype.disposeInternal = function() {
goog.object.forEach(this.layerRenderers, function(layerRenderer) { goog.object.forEach(this.layerRenderers, function(layerRenderer) {
goog.dispose(layerRenderer); goog.dispose(layerRenderer);
}); });
@@ -136,11 +136,11 @@ ol3.MapRenderer.prototype.disposeInternal = function() {
/** /**
* @param {function(this: T, ol3.Layer, ol3.LayerRenderer, number)} f Function. * @param {function(this: T, ol3.Layer, ol3.renderer.Layer, number)} f Function.
* @param {T=} opt_obj Object. * @param {T=} opt_obj Object.
* @template T * @template T
*/ */
ol3.MapRenderer.prototype.forEachReadyVisibleLayer = function(f, opt_obj) { ol3.renderer.Map.prototype.forEachReadyVisibleLayer = function(f, opt_obj) {
var layers = this.map.getLayers(); var layers = this.map.getLayers();
layers.forEach(function(layer, index) { layers.forEach(function(layer, index) {
if (layer.isReady() && layer.getVisible()) { if (layer.isReady() && layer.getVisible()) {
@@ -155,7 +155,7 @@ ol3.MapRenderer.prototype.forEachReadyVisibleLayer = function(f, opt_obj) {
* @param {ol3.Pixel} pixel Pixel. * @param {ol3.Pixel} pixel Pixel.
* @return {ol3.Coordinate} Coordinate. * @return {ol3.Coordinate} Coordinate.
*/ */
ol3.MapRenderer.prototype.getCoordinateFromPixel = function(pixel) { ol3.renderer.Map.prototype.getCoordinateFromPixel = function(pixel) {
this.updateMatrices_(); this.updateMatrices_();
var vec3 = [pixel.x, pixel.y, 0]; var vec3 = [pixel.x, pixel.y, 0];
goog.vec.Mat4.multVec3(this.pixelToCoordinateMatrix_, vec3, vec3); goog.vec.Mat4.multVec3(this.pixelToCoordinateMatrix_, vec3, vec3);
@@ -166,9 +166,9 @@ ol3.MapRenderer.prototype.getCoordinateFromPixel = function(pixel) {
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol3.Layer} layer Layer.
* @protected * @protected
* @return {ol3.LayerRenderer} Layer renderer. * @return {ol3.renderer.Layer} Layer renderer.
*/ */
ol3.MapRenderer.prototype.getLayerRenderer = function(layer) { ol3.renderer.Map.prototype.getLayerRenderer = function(layer) {
var key = goog.getUid(layer); var key = goog.getUid(layer);
var layerRenderer = this.layerRenderers[key]; var layerRenderer = this.layerRenderers[key];
goog.asserts.assert(goog.isDef(layerRenderer)); goog.asserts.assert(goog.isDef(layerRenderer));
@@ -179,7 +179,7 @@ ol3.MapRenderer.prototype.getLayerRenderer = function(layer) {
/** /**
* @return {ol3.Map} Map. * @return {ol3.Map} Map.
*/ */
ol3.MapRenderer.prototype.getMap = function() { ol3.renderer.Map.prototype.getMap = function() {
return this.map; return this.map;
}; };
@@ -188,7 +188,7 @@ ol3.MapRenderer.prototype.getMap = function() {
* @param {ol3.Coordinate} coordinate Coordinate. * @param {ol3.Coordinate} coordinate Coordinate.
* @return {ol3.Pixel} Pixel. * @return {ol3.Pixel} Pixel.
*/ */
ol3.MapRenderer.prototype.getPixelFromCoordinate = function(coordinate) { ol3.renderer.Map.prototype.getPixelFromCoordinate = function(coordinate) {
this.updateMatrices_(); this.updateMatrices_();
var vec3 = [coordinate.x, coordinate.y, 0]; var vec3 = [coordinate.x, coordinate.y, 0];
goog.vec.Mat4.multVec3(this.coordinateToPixelMatrix_, vec3, vec3); goog.vec.Mat4.multVec3(this.coordinateToPixelMatrix_, vec3, vec3);
@@ -198,13 +198,13 @@ ol3.MapRenderer.prototype.getPixelFromCoordinate = function(coordinate) {
/** /**
*/ */
ol3.MapRenderer.prototype.handleBackgroundColorChanged = goog.nullFunction; ol3.renderer.Map.prototype.handleBackgroundColorChanged = goog.nullFunction;
/** /**
* @protected * @protected
*/ */
ol3.MapRenderer.prototype.handleCenterChanged = function() { ol3.renderer.Map.prototype.handleCenterChanged = function() {
this.matricesDirty_ = true; this.matricesDirty_ = true;
}; };
@@ -213,7 +213,7 @@ ol3.MapRenderer.prototype.handleCenterChanged = function() {
* @param {ol3.CollectionEvent} collectionEvent Collection event. * @param {ol3.CollectionEvent} collectionEvent Collection event.
* @protected * @protected
*/ */
ol3.MapRenderer.prototype.handleLayersAdd = function(collectionEvent) { ol3.renderer.Map.prototype.handleLayersAdd = function(collectionEvent) {
var layer = /** @type {ol3.Layer} */ collectionEvent.elem; var layer = /** @type {ol3.Layer} */ collectionEvent.elem;
this.addLayer(layer); this.addLayer(layer);
}; };
@@ -222,7 +222,7 @@ ol3.MapRenderer.prototype.handleLayersAdd = function(collectionEvent) {
/** /**
* @protected * @protected
*/ */
ol3.MapRenderer.prototype.handleLayersChanged = function() { ol3.renderer.Map.prototype.handleLayersChanged = function() {
var layerRenderers = goog.object.getValues(this.layerRenderers); var layerRenderers = goog.object.getValues(this.layerRenderers);
goog.array.forEach(layerRenderers, function(layerRenderer) { goog.array.forEach(layerRenderers, function(layerRenderer) {
this.removeLayerRenderer(layerRenderer); this.removeLayerRenderer(layerRenderer);
@@ -249,7 +249,7 @@ ol3.MapRenderer.prototype.handleLayersChanged = function() {
* @param {ol3.CollectionEvent} collectionEvent Collection event. * @param {ol3.CollectionEvent} collectionEvent Collection event.
* @protected * @protected
*/ */
ol3.MapRenderer.prototype.handleLayersRemove = function(collectionEvent) { ol3.renderer.Map.prototype.handleLayersRemove = function(collectionEvent) {
var layer = /** @type {ol3.Layer} */ collectionEvent.elem; var layer = /** @type {ol3.Layer} */ collectionEvent.elem;
this.removeLayer(layer); this.removeLayer(layer);
}; };
@@ -258,7 +258,7 @@ ol3.MapRenderer.prototype.handleLayersRemove = function(collectionEvent) {
/** /**
* @protected * @protected
*/ */
ol3.MapRenderer.prototype.handleResolutionChanged = function() { ol3.renderer.Map.prototype.handleResolutionChanged = function() {
this.matricesDirty_ = true; this.matricesDirty_ = true;
}; };
@@ -266,7 +266,7 @@ ol3.MapRenderer.prototype.handleResolutionChanged = function() {
/** /**
* @protected * @protected
*/ */
ol3.MapRenderer.prototype.handleRotationChanged = function() { ol3.renderer.Map.prototype.handleRotationChanged = function() {
this.matricesDirty_ = true; this.matricesDirty_ = true;
}; };
@@ -274,7 +274,7 @@ ol3.MapRenderer.prototype.handleRotationChanged = function() {
/** /**
* @protected * @protected
*/ */
ol3.MapRenderer.prototype.handleSizeChanged = function() { ol3.renderer.Map.prototype.handleSizeChanged = function() {
this.matricesDirty_ = true; this.matricesDirty_ = true;
}; };
@@ -283,17 +283,17 @@ ol3.MapRenderer.prototype.handleSizeChanged = function() {
* @param {ol3.Layer} layer Layer. * @param {ol3.Layer} layer Layer.
* @protected * @protected
*/ */
ol3.MapRenderer.prototype.removeLayer = function(layer) { ol3.renderer.Map.prototype.removeLayer = function(layer) {
goog.dispose(this.removeLayerRenderer(layer)); goog.dispose(this.removeLayerRenderer(layer));
}; };
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol3.Layer} layer Layer.
* @return {ol3.LayerRenderer} Layer renderer. * @return {ol3.renderer.Layer} Layer renderer.
* @protected * @protected
*/ */
ol3.MapRenderer.prototype.removeLayerRenderer = function(layer) { ol3.renderer.Map.prototype.removeLayerRenderer = function(layer) {
var key = goog.getUid(layer); var key = goog.getUid(layer);
if (key in this.layerRenderers) { if (key in this.layerRenderers) {
var layerRenderer = this.layerRenderers[key]; var layerRenderer = this.layerRenderers[key];
@@ -308,7 +308,7 @@ ol3.MapRenderer.prototype.removeLayerRenderer = function(layer) {
/** /**
* @return {boolean} Animating. * @return {boolean} Animating.
*/ */
ol3.MapRenderer.prototype.render = function() { ol3.renderer.Map.prototype.render = function() {
var animate = false; var animate = false;
this.forEachReadyVisibleLayer(function(layer, layerRenderer) { this.forEachReadyVisibleLayer(function(layer, layerRenderer) {
if (layerRenderer.render()) { if (layerRenderer.render()) {
@@ -321,10 +321,10 @@ ol3.MapRenderer.prototype.render = function() {
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol3.Layer} layer Layer.
* @param {ol3.LayerRenderer} layerRenderer Layer renderer. * @param {ol3.renderer.Layer} layerRenderer Layer renderer.
* @protected * @protected
*/ */
ol3.MapRenderer.prototype.setLayerRenderer = function(layer, layerRenderer) { ol3.renderer.Map.prototype.setLayerRenderer = function(layer, layerRenderer) {
var key = goog.getUid(layer); var key = goog.getUid(layer);
goog.asserts.assert(!(key in this.layerRenderers)); goog.asserts.assert(!(key in this.layerRenderers));
this.layerRenderers[key] = layerRenderer; this.layerRenderers[key] = layerRenderer;
@@ -334,7 +334,7 @@ ol3.MapRenderer.prototype.setLayerRenderer = function(layer, layerRenderer) {
/** /**
* @private * @private
*/ */
ol3.MapRenderer.prototype.updateMatrices_ = function() { ol3.renderer.Map.prototype.updateMatrices_ = function() {
if (this.matricesDirty_) { if (this.matricesDirty_) {
+114
View File
@@ -0,0 +1,114 @@
goog.provide('ol3.renderer.webgl.Layer');
goog.require('goog.vec.Mat4');
goog.require('ol3.Layer');
goog.require('ol3.renderer.Layer');
/**
* @constructor
* @extends {ol3.renderer.Layer}
* @param {ol3.renderer.Map} mapRenderer Map renderer.
* @param {ol3.Layer} layer Layer.
*/
ol3.renderer.webgl.Layer = function(mapRenderer, layer) {
goog.base(this, mapRenderer, layer);
};
goog.inherits(ol3.renderer.webgl.Layer, ol3.renderer.Layer);
/**
* @protected
*/
ol3.renderer.webgl.Layer.prototype.dispatchChangeEvent = function() {
this.dispatchEvent(goog.events.EventType.CHANGE);
};
/**
* @override
* @return {ol3.renderer.Map} MapRenderer.
*/
ol3.renderer.webgl.Layer.prototype.getMapRenderer = function() {
return /** @type {ol3.renderer.webgl.Map} */ goog.base(
this, 'getMapRenderer');
};
/**
* @return {goog.vec.Mat4.AnyType} Matrix.
*/
ol3.renderer.webgl.Layer.prototype.getMatrix = goog.abstractMethod;
/**
* @return {WebGLTexture} Texture.
*/
ol3.renderer.webgl.Layer.prototype.getTexture = goog.abstractMethod;
/**
* @inheritDoc
*/
ol3.renderer.webgl.Layer.prototype.handleLayerBrightnessChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol3.renderer.webgl.Layer.prototype.handleLayerContrastChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol3.renderer.webgl.Layer.prototype.handleLayerHueChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol3.renderer.webgl.Layer.prototype.handleLayerLoad = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol3.renderer.webgl.Layer.prototype.handleLayerOpacityChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol3.renderer.webgl.Layer.prototype.handleLayerSaturationChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol3.renderer.webgl.Layer.prototype.handleLayerVisibleChange = function() {
this.dispatchChangeEvent();
};
/**
*/
ol3.renderer.webgl.Layer.prototype.handleWebGLContextLost = goog.nullFunction;
/**
*/
ol3.renderer.webgl.Layer.prototype.render = goog.abstractMethod;
@@ -4,8 +4,8 @@
// FIXME defer cleanup until post-render // FIXME defer cleanup until post-render
// FIXME check against gl.getParameter(webgl.MAX_TEXTURE_SIZE) // FIXME check against gl.getParameter(webgl.MAX_TEXTURE_SIZE)
goog.provide('ol3.webgl.MapRenderer'); goog.provide('ol3.renderer.webgl.Map');
goog.provide('ol3.webgl.map.shader'); goog.provide('ol3.renderer.webgl.map.shader');
goog.require('goog.debug.Logger'); goog.require('goog.debug.Logger');
goog.require('goog.dispose'); goog.require('goog.dispose');
@@ -20,26 +20,26 @@ goog.require('goog.webgl');
goog.require('ol3.Layer'); goog.require('ol3.Layer');
goog.require('ol3.Map'); goog.require('ol3.Map');
goog.require('ol3.TileLayer'); goog.require('ol3.TileLayer');
goog.require('ol3.webgl.TileLayerRenderer'); goog.require('ol3.renderer.webgl.FragmentShader');
goog.require('ol3.renderer.webgl.TileLayer');
goog.require('ol3.renderer.webgl.VertexShader');
goog.require('ol3.webgl.WebGLContextEventType'); goog.require('ol3.webgl.WebGLContextEventType');
goog.require('ol3.webgl.shader.Fragment');
goog.require('ol3.webgl.shader.Vertex');
/** /**
* @typedef {{magFilter: number, minFilter: number, texture: WebGLTexture}} * @typedef {{magFilter: number, minFilter: number, texture: WebGLTexture}}
*/ */
ol3.webgl.TextureCacheEntry; ol3.renderer.webgl.TextureCacheEntry;
/** /**
* @constructor * @constructor
* @extends {ol3.webgl.shader.Fragment} * @extends {ol3.renderer.webgl.FragmentShader}
* @see https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/brightnesscontrast.js * @see https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/brightnesscontrast.js
* @see https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/huesaturation.js * @see https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/huesaturation.js
*/ */
ol3.webgl.map.shader.Fragment = function() { ol3.renderer.webgl.map.shader.Fragment = function() {
goog.base(this, [ goog.base(this, [
'precision mediump float;', 'precision mediump float;',
'', '',
@@ -97,16 +97,17 @@ ol3.webgl.map.shader.Fragment = function() {
'}' '}'
].join('\n')); ].join('\n'));
}; };
goog.inherits(ol3.webgl.map.shader.Fragment, ol3.webgl.shader.Fragment); goog.inherits(
goog.addSingletonGetter(ol3.webgl.map.shader.Fragment); ol3.renderer.webgl.map.shader.Fragment, ol3.renderer.webgl.FragmentShader);
goog.addSingletonGetter(ol3.renderer.webgl.map.shader.Fragment);
/** /**
* @constructor * @constructor
* @extends {ol3.webgl.shader.Vertex} * @extends {ol3.renderer.webgl.VertexShader}
*/ */
ol3.webgl.map.shader.Vertex = function() { ol3.renderer.webgl.map.shader.Vertex = function() {
goog.base(this, [ goog.base(this, [
'attribute vec2 aPosition;', 'attribute vec2 aPosition;',
'attribute vec2 aTexCoord;', 'attribute vec2 aTexCoord;',
@@ -119,18 +120,19 @@ ol3.webgl.map.shader.Vertex = function() {
'}' '}'
].join('\n')); ].join('\n'));
}; };
goog.inherits(ol3.webgl.map.shader.Vertex, ol3.webgl.shader.Vertex); goog.inherits(
goog.addSingletonGetter(ol3.webgl.map.shader.Vertex); ol3.renderer.webgl.map.shader.Vertex, ol3.renderer.webgl.VertexShader);
goog.addSingletonGetter(ol3.renderer.webgl.map.shader.Vertex);
/** /**
* @constructor * @constructor
* @extends {ol3.MapRenderer} * @extends {ol3.renderer.Map}
* @param {Element} container Container. * @param {Element} container Container.
* @param {ol3.Map} map Map. * @param {ol3.Map} map Map.
*/ */
ol3.webgl.MapRenderer = function(container, map) { ol3.renderer.webgl.Map = function(container, map) {
goog.base(this, container, map); goog.base(this, container, map);
@@ -139,7 +141,7 @@ ol3.webgl.MapRenderer = function(container, map) {
* @inheritDoc * @inheritDoc
*/ */
this.logger = goog.debug.Logger.getLogger( this.logger = goog.debug.Logger.getLogger(
'ol3.webgl.maprenderer.' + goog.getUid(this)); 'ol3.renderer.webgl.maprenderer.' + goog.getUid(this));
} }
/** /**
@@ -209,21 +211,21 @@ ol3.webgl.MapRenderer = function(container, map) {
/** /**
* @private * @private
* @type {Object.<string, ol3.webgl.TextureCacheEntry>} * @type {Object.<string, ol3.renderer.webgl.TextureCacheEntry>}
*/ */
this.textureCache_ = {}; this.textureCache_ = {};
/** /**
* @private * @private
* @type {ol3.webgl.shader.Fragment} * @type {ol3.renderer.webgl.FragmentShader}
*/ */
this.fragmentShader_ = ol3.webgl.map.shader.Fragment.getInstance(); this.fragmentShader_ = ol3.renderer.webgl.map.shader.Fragment.getInstance();
/** /**
* @private * @private
* @type {ol3.webgl.shader.Vertex} * @type {ol3.renderer.webgl.VertexShader}
*/ */
this.vertexShader_ = ol3.webgl.map.shader.Vertex.getInstance(); this.vertexShader_ = ol3.renderer.webgl.map.shader.Vertex.getInstance();
/** /**
* @private * @private
@@ -234,13 +236,13 @@ ol3.webgl.MapRenderer = function(container, map) {
this.initializeGL_(); this.initializeGL_();
}; };
goog.inherits(ol3.webgl.MapRenderer, ol3.MapRenderer); goog.inherits(ol3.renderer.webgl.Map, ol3.renderer.Map);
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.addLayer = function(layer) { ol3.renderer.webgl.Map.prototype.addLayer = function(layer) {
goog.base(this, 'addLayer', layer); goog.base(this, 'addLayer', layer);
if (layer.getVisible()) { if (layer.getVisible()) {
this.getMap().render(); this.getMap().render();
@@ -253,7 +255,7 @@ ol3.webgl.MapRenderer.prototype.addLayer = function(layer) {
* @param {number} magFilter Mag filter. * @param {number} magFilter Mag filter.
* @param {number} minFilter Min filter. * @param {number} minFilter Min filter.
*/ */
ol3.webgl.MapRenderer.prototype.bindImageTexture = ol3.renderer.webgl.Map.prototype.bindImageTexture =
function(image, magFilter, minFilter) { function(image, magFilter, minFilter) {
var gl = this.getGL(); var gl = this.getGL();
var imageKey = image.src; var imageKey = image.src;
@@ -295,16 +297,16 @@ ol3.webgl.MapRenderer.prototype.bindImageTexture =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.canRotate = goog.functions.TRUE; ol3.renderer.webgl.Map.prototype.canRotate = goog.functions.TRUE;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.createLayerRenderer = function(layer) { ol3.renderer.webgl.Map.prototype.createLayerRenderer = function(layer) {
var gl = this.getGL(); var gl = this.getGL();
if (layer instanceof ol3.TileLayer) { if (layer instanceof ol3.TileLayer) {
return new ol3.webgl.TileLayerRenderer(this, layer); return new ol3.renderer.webgl.TileLayer(this, layer);
} else { } else {
goog.asserts.assert(false); goog.asserts.assert(false);
return null; return null;
@@ -315,7 +317,7 @@ ol3.webgl.MapRenderer.prototype.createLayerRenderer = function(layer) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.disposeInternal = function() { ol3.renderer.webgl.Map.prototype.disposeInternal = function() {
var gl = this.getGL(); var gl = this.getGL();
if (!gl.isContextLost()) { if (!gl.isContextLost()) {
goog.object.forEach(this.programCache_, function(program) { goog.object.forEach(this.programCache_, function(program) {
@@ -335,17 +337,18 @@ ol3.webgl.MapRenderer.prototype.disposeInternal = function() {
/** /**
* @return {WebGLRenderingContext} GL. * @return {WebGLRenderingContext} GL.
*/ */
ol3.webgl.MapRenderer.prototype.getGL = function() { ol3.renderer.webgl.Map.prototype.getGL = function() {
return this.gl_; return this.gl_;
}; };
/** /**
* @param {ol3.webgl.shader.Fragment} fragmentShaderObject Fragment shader. * @param {ol3.renderer.webgl.FragmentShader} fragmentShaderObject
* @param {ol3.webgl.shader.Vertex} vertexShaderObject Vertex shader. * Fragment shader.
* @param {ol3.renderer.webgl.VertexShader} vertexShaderObject Vertex shader.
* @return {WebGLProgram} Program. * @return {WebGLProgram} Program.
*/ */
ol3.webgl.MapRenderer.prototype.getProgram = function( ol3.renderer.webgl.Map.prototype.getProgram = function(
fragmentShaderObject, vertexShaderObject) { fragmentShaderObject, vertexShaderObject) {
var programKey = var programKey =
goog.getUid(fragmentShaderObject) + '/' + goog.getUid(vertexShaderObject); goog.getUid(fragmentShaderObject) + '/' + goog.getUid(vertexShaderObject);
@@ -372,10 +375,10 @@ ol3.webgl.MapRenderer.prototype.getProgram = function(
/** /**
* @param {ol3.webgl.Shader} shaderObject Shader object. * @param {ol3.renderer.webgl.Shader} shaderObject Shader object.
* @return {WebGLShader} Shader. * @return {WebGLShader} Shader.
*/ */
ol3.webgl.MapRenderer.prototype.getShader = function(shaderObject) { ol3.renderer.webgl.Map.prototype.getShader = function(shaderObject) {
var shaderKey = goog.getUid(shaderObject); var shaderKey = goog.getUid(shaderObject);
if (shaderKey in this.shaderCache_) { if (shaderKey in this.shaderCache_) {
return this.shaderCache_[shaderKey]; return this.shaderCache_[shaderKey];
@@ -401,7 +404,7 @@ ol3.webgl.MapRenderer.prototype.getShader = function(shaderObject) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.handleBackgroundColorChanged = function() { ol3.renderer.webgl.Map.prototype.handleBackgroundColorChanged = function() {
var backgroundColor = this.getMap().getBackgroundColor(); var backgroundColor = this.getMap().getBackgroundColor();
this.clearColor_ = new ol3.Color( this.clearColor_ = new ol3.Color(
backgroundColor.r / 255, backgroundColor.r / 255,
@@ -415,7 +418,7 @@ ol3.webgl.MapRenderer.prototype.handleBackgroundColorChanged = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.handleCenterChanged = function() { ol3.renderer.webgl.Map.prototype.handleCenterChanged = function() {
goog.base(this, 'handleCenterChanged'); goog.base(this, 'handleCenterChanged');
this.getMap().render(); this.getMap().render();
}; };
@@ -425,7 +428,7 @@ ol3.webgl.MapRenderer.prototype.handleCenterChanged = function() {
* @param {goog.events.Event} event Event. * @param {goog.events.Event} event Event.
* @protected * @protected
*/ */
ol3.webgl.MapRenderer.prototype.handleLayerRendererChange = function(event) { ol3.renderer.webgl.Map.prototype.handleLayerRendererChange = function(event) {
this.getMap().render(); this.getMap().render();
}; };
@@ -433,7 +436,7 @@ ol3.webgl.MapRenderer.prototype.handleLayerRendererChange = function(event) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.handleResolutionChanged = function() { ol3.renderer.webgl.Map.prototype.handleResolutionChanged = function() {
goog.base(this, 'handleResolutionChanged'); goog.base(this, 'handleResolutionChanged');
this.getMap().render(); this.getMap().render();
}; };
@@ -442,7 +445,7 @@ ol3.webgl.MapRenderer.prototype.handleResolutionChanged = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.handleRotationChanged = function() { ol3.renderer.webgl.Map.prototype.handleRotationChanged = function() {
goog.base(this, 'handleRotationChanged'); goog.base(this, 'handleRotationChanged');
this.getMap().render(); this.getMap().render();
}; };
@@ -451,7 +454,7 @@ ol3.webgl.MapRenderer.prototype.handleRotationChanged = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.handleSizeChanged = function() { ol3.renderer.webgl.Map.prototype.handleSizeChanged = function() {
goog.base(this, 'handleSizeChanged'); goog.base(this, 'handleSizeChanged');
var size = this.getMap().getSize(); var size = this.getMap().getSize();
if (!goog.isDef(size)) { if (!goog.isDef(size)) {
@@ -471,7 +474,7 @@ ol3.webgl.MapRenderer.prototype.handleSizeChanged = function() {
* @param {goog.events.Event} event Event. * @param {goog.events.Event} event Event.
* @protected * @protected
*/ */
ol3.webgl.MapRenderer.prototype.handleWebGLContextLost = function(event) { ol3.renderer.webgl.Map.prototype.handleWebGLContextLost = function(event) {
if (goog.DEBUG) { if (goog.DEBUG) {
this.logger.info('WebGLContextLost'); this.logger.info('WebGLContextLost');
} }
@@ -490,7 +493,7 @@ ol3.webgl.MapRenderer.prototype.handleWebGLContextLost = function(event) {
/** /**
* @protected * @protected
*/ */
ol3.webgl.MapRenderer.prototype.handleWebGLContextRestored = function() { ol3.renderer.webgl.Map.prototype.handleWebGLContextRestored = function() {
if (goog.DEBUG) { if (goog.DEBUG) {
this.logger.info('WebGLContextRestored'); this.logger.info('WebGLContextRestored');
} }
@@ -502,7 +505,7 @@ ol3.webgl.MapRenderer.prototype.handleWebGLContextRestored = function() {
/** /**
* @private * @private
*/ */
ol3.webgl.MapRenderer.prototype.initializeGL_ = function() { ol3.renderer.webgl.Map.prototype.initializeGL_ = function() {
var gl = this.gl_; var gl = this.gl_;
gl.activeTexture(goog.webgl.TEXTURE0); gl.activeTexture(goog.webgl.TEXTURE0);
gl.blendFunc(goog.webgl.SRC_ALPHA, goog.webgl.ONE_MINUS_SRC_ALPHA); gl.blendFunc(goog.webgl.SRC_ALPHA, goog.webgl.ONE_MINUS_SRC_ALPHA);
@@ -516,7 +519,7 @@ ol3.webgl.MapRenderer.prototype.initializeGL_ = function() {
* @param {Image} image Image. * @param {Image} image Image.
* @return {boolean} Is image texture loaded. * @return {boolean} Is image texture loaded.
*/ */
ol3.webgl.MapRenderer.prototype.isImageTextureLoaded = function(image) { ol3.renderer.webgl.Map.prototype.isImageTextureLoaded = function(image) {
return image.src in this.textureCache_; return image.src in this.textureCache_;
}; };
@@ -524,7 +527,7 @@ ol3.webgl.MapRenderer.prototype.isImageTextureLoaded = function(image) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.removeLayer = function(layer) { ol3.renderer.webgl.Map.prototype.removeLayer = function(layer) {
goog.base(this, 'removeLayer', layer); goog.base(this, 'removeLayer', layer);
if (layer.getVisible()) { if (layer.getVisible()) {
this.getMap().render(); this.getMap().render();
@@ -535,7 +538,7 @@ ol3.webgl.MapRenderer.prototype.removeLayer = function(layer) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.removeLayerRenderer = function(layer) { ol3.renderer.webgl.Map.prototype.removeLayerRenderer = function(layer) {
var layerRenderer = goog.base(this, 'removeLayerRenderer', layer); var layerRenderer = goog.base(this, 'removeLayerRenderer', layer);
if (!goog.isNull(layerRenderer)) { if (!goog.isNull(layerRenderer)) {
var layerKey = goog.getUid(layer); var layerKey = goog.getUid(layer);
@@ -549,7 +552,7 @@ ol3.webgl.MapRenderer.prototype.removeLayerRenderer = function(layer) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.render = function() { ol3.renderer.webgl.Map.prototype.render = function() {
if (!this.getMap().isDef()) { if (!this.getMap().isDef()) {
return false; return false;
@@ -627,7 +630,7 @@ ol3.webgl.MapRenderer.prototype.render = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.MapRenderer.prototype.setLayerRenderer = function( ol3.renderer.webgl.Map.prototype.setLayerRenderer = function(
layer, layerRenderer) { layer, layerRenderer) {
goog.base(this, 'setLayerRenderer', layer, layerRenderer); goog.base(this, 'setLayerRenderer', layer, layerRenderer);
var layerKey = goog.getUid(layer); var layerKey = goog.getUid(layer);
+81
View File
@@ -0,0 +1,81 @@
goog.provide('ol3.renderer.webgl.FragmentShader');
goog.provide('ol3.renderer.webgl.VertexShader');
goog.require('goog.functions');
goog.require('goog.webgl');
/**
* @constructor
* @param {string} source Source.
*/
ol3.renderer.webgl.Shader = function(source) {
/**
* @private
* @type {string}
*/
this.source_ = source;
};
/**
* @return {number} Type.
*/
ol3.renderer.webgl.Shader.prototype.getType = goog.abstractMethod;
/**
* @return {string} Source.
*/
ol3.renderer.webgl.Shader.prototype.getSource = function() {
return this.source_;
};
/**
* @return {boolean} Is animated?
*/
ol3.renderer.webgl.Shader.prototype.isAnimated = goog.functions.FALSE;
/**
* @constructor
* @extends {ol3.renderer.webgl.Shader}
* @param {string} source Source.
*/
ol3.renderer.webgl.FragmentShader = function(source) {
goog.base(this, source);
};
goog.inherits(ol3.renderer.webgl.FragmentShader, ol3.renderer.webgl.Shader);
/**
* @inheritDoc
*/
ol3.renderer.webgl.FragmentShader.prototype.getType = function() {
return goog.webgl.FRAGMENT_SHADER;
};
/**
* @constructor
* @extends {ol3.renderer.webgl.Shader}
* @param {string} source Source.
*/
ol3.renderer.webgl.VertexShader = function(source) {
goog.base(this, source);
};
goog.inherits(ol3.renderer.webgl.VertexShader, ol3.renderer.webgl.Shader);
/**
* @inheritDoc
*/
ol3.renderer.webgl.VertexShader.prototype.getType = function() {
return goog.webgl.VERTEX_SHADER;
};
@@ -1,10 +1,10 @@
// FIXME large resolutions lead to too large framebuffers :-( // FIXME large resolutions lead to too large framebuffers :-(
// FIXME animated shaders! check in redraw // FIXME animated shaders! check in redraw
goog.provide('ol3.webgl.TileLayerRenderer'); goog.provide('ol3.renderer.webgl.TileLayer');
goog.provide('ol3.webgl.tilelayerrenderer'); goog.provide('ol3.renderer.webgl.tilelayerrenderer');
goog.provide('ol3.webgl.tilelayerrenderer.shader.Fragment'); goog.provide('ol3.renderer.webgl.tilelayerrenderer.shader.Fragment');
goog.provide('ol3.webgl.tilelayerrenderer.shader.Vertex'); goog.provide('ol3.renderer.webgl.tilelayerrenderer.shader.Vertex');
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.asserts'); goog.require('goog.asserts');
@@ -19,17 +19,17 @@ goog.require('ol3.MapEventType');
goog.require('ol3.Size'); goog.require('ol3.Size');
goog.require('ol3.TileLayer'); goog.require('ol3.TileLayer');
goog.require('ol3.TileState'); goog.require('ol3.TileState');
goog.require('ol3.webgl.LayerRenderer'); goog.require('ol3.renderer.webgl.FragmentShader');
goog.require('ol3.webgl.shader.Fragment'); goog.require('ol3.renderer.webgl.Layer');
goog.require('ol3.webgl.shader.Vertex'); goog.require('ol3.renderer.webgl.VertexShader');
/** /**
* @constructor * @constructor
* @extends {ol3.webgl.shader.Fragment} * @extends {ol3.renderer.webgl.FragmentShader}
*/ */
ol3.webgl.tilelayerrenderer.shader.Fragment = function() { ol3.renderer.webgl.tilelayerrenderer.shader.Fragment = function() {
goog.base(this, [ goog.base(this, [
'precision mediump float;', 'precision mediump float;',
'', '',
@@ -43,16 +43,17 @@ ol3.webgl.tilelayerrenderer.shader.Fragment = function() {
].join('\n')); ].join('\n'));
}; };
goog.inherits( goog.inherits(
ol3.webgl.tilelayerrenderer.shader.Fragment, ol3.webgl.shader.Fragment); ol3.renderer.webgl.tilelayerrenderer.shader.Fragment,
goog.addSingletonGetter(ol3.webgl.tilelayerrenderer.shader.Fragment); ol3.renderer.webgl.FragmentShader);
goog.addSingletonGetter(ol3.renderer.webgl.tilelayerrenderer.shader.Fragment);
/** /**
* @constructor * @constructor
* @extends {ol3.webgl.shader.Vertex} * @extends {ol3.renderer.webgl.VertexShader}
*/ */
ol3.webgl.tilelayerrenderer.shader.Vertex = function() { ol3.renderer.webgl.tilelayerrenderer.shader.Vertex = function() {
goog.base(this, [ goog.base(this, [
'attribute vec2 aPosition;', 'attribute vec2 aPosition;',
'attribute vec2 aTexCoord;', 'attribute vec2 aTexCoord;',
@@ -70,18 +71,19 @@ ol3.webgl.tilelayerrenderer.shader.Vertex = function() {
].join('\n')); ].join('\n'));
}; };
goog.inherits( goog.inherits(
ol3.webgl.tilelayerrenderer.shader.Vertex, ol3.webgl.shader.Vertex); ol3.renderer.webgl.tilelayerrenderer.shader.Vertex,
goog.addSingletonGetter(ol3.webgl.tilelayerrenderer.shader.Vertex); ol3.renderer.webgl.VertexShader);
goog.addSingletonGetter(ol3.renderer.webgl.tilelayerrenderer.shader.Vertex);
/** /**
* @constructor * @constructor
* @extends {ol3.webgl.LayerRenderer} * @extends {ol3.renderer.webgl.Layer}
* @param {ol3.MapRenderer} mapRenderer Map renderer. * @param {ol3.renderer.Map} mapRenderer Map renderer.
* @param {ol3.TileLayer} tileLayer Tile layer. * @param {ol3.TileLayer} tileLayer Tile layer.
*/ */
ol3.webgl.TileLayerRenderer = function(mapRenderer, tileLayer) { ol3.renderer.webgl.TileLayer = function(mapRenderer, tileLayer) {
goog.base(this, mapRenderer, tileLayer); goog.base(this, mapRenderer, tileLayer);
@@ -90,21 +92,22 @@ ol3.webgl.TileLayerRenderer = function(mapRenderer, tileLayer) {
* @inheritDoc * @inheritDoc
*/ */
this.logger = goog.debug.Logger.getLogger( this.logger = goog.debug.Logger.getLogger(
'ol3.webgl.tilelayerrenderer.' + goog.getUid(this)); 'ol3.renderer.webgl.tilelayerrenderer.' + goog.getUid(this));
} }
/** /**
* @private * @private
* @type {ol3.webgl.shader.Fragment} * @type {ol3.renderer.webgl.FragmentShader}
*/ */
this.fragmentShader_ = this.fragmentShader_ =
ol3.webgl.tilelayerrenderer.shader.Fragment.getInstance(); ol3.renderer.webgl.tilelayerrenderer.shader.Fragment.getInstance();
/** /**
* @private * @private
* @type {ol3.webgl.shader.Vertex} * @type {ol3.renderer.webgl.VertexShader}
*/ */
this.vertexShader_ = ol3.webgl.tilelayerrenderer.shader.Vertex.getInstance(); this.vertexShader_ =
ol3.renderer.webgl.tilelayerrenderer.shader.Vertex.getInstance();
/** /**
* @private * @private
@@ -152,14 +155,14 @@ ol3.webgl.TileLayerRenderer = function(mapRenderer, tileLayer) {
this.matrix_ = goog.vec.Mat4.createNumber(); this.matrix_ = goog.vec.Mat4.createNumber();
}; };
goog.inherits(ol3.webgl.TileLayerRenderer, ol3.webgl.LayerRenderer); goog.inherits(ol3.renderer.webgl.TileLayer, ol3.renderer.webgl.Layer);
/** /**
* @param {number} framebufferDimension Framebuffer dimension. * @param {number} framebufferDimension Framebuffer dimension.
* @private * @private
*/ */
ol3.webgl.TileLayerRenderer.prototype.bindFramebuffer_ = ol3.renderer.webgl.TileLayer.prototype.bindFramebuffer_ =
function(framebufferDimension) { function(framebufferDimension) {
var mapRenderer = this.getMapRenderer(); var mapRenderer = this.getMapRenderer();
@@ -172,7 +175,7 @@ ol3.webgl.TileLayerRenderer.prototype.bindFramebuffer_ =
this.logger.info('re-sizing framebuffer'); this.logger.info('re-sizing framebuffer');
} }
if (ol3.webgl.FREE_RESOURCES_IMMEDIATELY) { if (ol3.renderer.webgl.FREE_RESOURCES_IMMEDIATELY) {
if (goog.DEBUG) { if (goog.DEBUG) {
this.logger.info('freeing WebGL resources'); this.logger.info('freeing WebGL resources');
} }
@@ -225,7 +228,7 @@ ol3.webgl.TileLayerRenderer.prototype.bindFramebuffer_ =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.TileLayerRenderer.prototype.disposeInternal = function() { ol3.renderer.webgl.TileLayer.prototype.disposeInternal = function() {
var mapRenderer = this.getMapRenderer(); var mapRenderer = this.getMapRenderer();
var gl = mapRenderer.getGL(); var gl = mapRenderer.getGL();
if (!gl.isContextLost()) { if (!gl.isContextLost()) {
@@ -241,7 +244,7 @@ ol3.webgl.TileLayerRenderer.prototype.disposeInternal = function() {
* @return {ol3.TileLayer} Layer. * @return {ol3.TileLayer} Layer.
* @override * @override
*/ */
ol3.webgl.TileLayerRenderer.prototype.getLayer = function() { ol3.renderer.webgl.TileLayer.prototype.getLayer = function() {
return /** @type {ol3.TileLayer} */ goog.base(this, 'getLayer'); return /** @type {ol3.TileLayer} */ goog.base(this, 'getLayer');
}; };
@@ -249,7 +252,7 @@ ol3.webgl.TileLayerRenderer.prototype.getLayer = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.TileLayerRenderer.prototype.getMatrix = function() { ol3.renderer.webgl.TileLayer.prototype.getMatrix = function() {
return this.matrix_; return this.matrix_;
}; };
@@ -257,7 +260,7 @@ ol3.webgl.TileLayerRenderer.prototype.getMatrix = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.TileLayerRenderer.prototype.getTexture = function() { ol3.renderer.webgl.TileLayer.prototype.getTexture = function() {
return this.texture_; return this.texture_;
}; };
@@ -265,7 +268,7 @@ ol3.webgl.TileLayerRenderer.prototype.getTexture = function() {
/** /**
* @protected * @protected
*/ */
ol3.webgl.TileLayerRenderer.prototype.handleTileChange = function() { ol3.renderer.webgl.TileLayer.prototype.handleTileChange = function() {
this.dispatchChangeEvent(); this.dispatchChangeEvent();
}; };
@@ -273,7 +276,7 @@ ol3.webgl.TileLayerRenderer.prototype.handleTileChange = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.TileLayerRenderer.prototype.handleWebGLContextLost = function() { ol3.renderer.webgl.TileLayer.prototype.handleWebGLContextLost = function() {
this.locations_ = null; this.locations_ = null;
this.arrayBuffer_ = null; this.arrayBuffer_ = null;
this.texture_ = null; this.texture_ = null;
@@ -285,7 +288,7 @@ ol3.webgl.TileLayerRenderer.prototype.handleWebGLContextLost = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.webgl.TileLayerRenderer.prototype.render = function() { ol3.renderer.webgl.TileLayer.prototype.render = function() {
var animate = false; var animate = false;
+15
View File
@@ -0,0 +1,15 @@
goog.provide('ol3.renderer.webgl');
/**
* @define {boolean} Free resources immediately.
*/
ol3.renderer.webgl.FREE_RESOURCES_IMMEDIATELY = false;
/**
* @return {boolean} Is supported.
*/
ol3.renderer.webgl.isSupported = function() {
return 'WebGLRenderingContext' in goog.global;
};
-113
View File
@@ -1,113 +0,0 @@
goog.provide('ol3.webgl.LayerRenderer');
goog.require('goog.vec.Mat4');
goog.require('ol3.Layer');
goog.require('ol3.LayerRenderer');
/**
* @constructor
* @extends {ol3.LayerRenderer}
* @param {ol3.MapRenderer} mapRenderer Map renderer.
* @param {ol3.Layer} layer Layer.
*/
ol3.webgl.LayerRenderer = function(mapRenderer, layer) {
goog.base(this, mapRenderer, layer);
};
goog.inherits(ol3.webgl.LayerRenderer, ol3.LayerRenderer);
/**
* @protected
*/
ol3.webgl.LayerRenderer.prototype.dispatchChangeEvent = function() {
this.dispatchEvent(goog.events.EventType.CHANGE);
};
/**
* @override
* @return {ol3.MapRenderer} MapRenderer.
*/
ol3.webgl.LayerRenderer.prototype.getMapRenderer = function() {
return /** @type {ol3.webgl.MapRenderer} */ goog.base(this, 'getMapRenderer');
};
/**
* @return {goog.vec.Mat4.AnyType} Matrix.
*/
ol3.webgl.LayerRenderer.prototype.getMatrix = goog.abstractMethod;
/**
* @return {WebGLTexture} Texture.
*/
ol3.webgl.LayerRenderer.prototype.getTexture = goog.abstractMethod;
/**
* @inheritDoc
*/
ol3.webgl.LayerRenderer.prototype.handleLayerBrightnessChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol3.webgl.LayerRenderer.prototype.handleLayerContrastChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol3.webgl.LayerRenderer.prototype.handleLayerHueChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol3.webgl.LayerRenderer.prototype.handleLayerLoad = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol3.webgl.LayerRenderer.prototype.handleLayerOpacityChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol3.webgl.LayerRenderer.prototype.handleLayerSaturationChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol3.webgl.LayerRenderer.prototype.handleLayerVisibleChange = function() {
this.dispatchChangeEvent();
};
/**
*/
ol3.webgl.LayerRenderer.prototype.handleWebGLContextLost = goog.nullFunction;
/**
*/
ol3.webgl.LayerRenderer.prototype.render = goog.abstractMethod;
-81
View File
@@ -1,81 +0,0 @@
goog.provide('ol3.webgl.shader.Fragment');
goog.provide('ol3.webgl.shader.Vertex');
goog.require('goog.functions');
goog.require('goog.webgl');
/**
* @constructor
* @param {string} source Source.
*/
ol3.webgl.Shader = function(source) {
/**
* @private
* @type {string}
*/
this.source_ = source;
};
/**
* @return {number} Type.
*/
ol3.webgl.Shader.prototype.getType = goog.abstractMethod;
/**
* @return {string} Source.
*/
ol3.webgl.Shader.prototype.getSource = function() {
return this.source_;
};
/**
* @return {boolean} Is animated?
*/
ol3.webgl.Shader.prototype.isAnimated = goog.functions.FALSE;
/**
* @constructor
* @extends {ol3.webgl.Shader}
* @param {string} source Source.
*/
ol3.webgl.shader.Fragment = function(source) {
goog.base(this, source);
};
goog.inherits(ol3.webgl.shader.Fragment, ol3.webgl.Shader);
/**
* @inheritDoc
*/
ol3.webgl.shader.Fragment.prototype.getType = function() {
return goog.webgl.FRAGMENT_SHADER;
};
/**
* @constructor
* @extends {ol3.webgl.Shader}
* @param {string} source Source.
*/
ol3.webgl.shader.Vertex = function(source) {
goog.base(this, source);
};
goog.inherits(ol3.webgl.shader.Vertex, ol3.webgl.Shader);
/**
* @inheritDoc
*/
ol3.webgl.shader.Vertex.prototype.getType = function() {
return goog.webgl.VERTEX_SHADER;
};
-15
View File
@@ -1,13 +1,6 @@
goog.provide('ol3.webgl');
goog.provide('ol3.webgl.WebGLContextEventType'); goog.provide('ol3.webgl.WebGLContextEventType');
/**
* @define {boolean} Free resources immediately.
*/
ol3.webgl.FREE_RESOURCES_IMMEDIATELY = false;
/** /**
* @enum {string} * @enum {string}
*/ */
@@ -15,11 +8,3 @@ ol3.webgl.WebGLContextEventType = {
LOST: 'webglcontextlost', LOST: 'webglcontextlost',
RESTORED: 'webglcontextrestored' RESTORED: 'webglcontextrestored'
}; };
/**
* @return {boolean} Is supported.
*/
ol3.webgl.isSupported = function() {
return 'WebGLRenderingContext' in goog.global;
};