Merge Map and MapRenderer

This commit is contained in:
Tom Payne
2012-07-14 13:36:24 +02:00
parent 19ea6a0cba
commit d1e5906e2c
26 changed files with 504 additions and 585 deletions

View File

@@ -16,7 +16,7 @@
<script>
var target = document.getElementById('map');
var map = new ol.Map(target);
var map = ol.createMap(target);
var layer = ol.TileLayer.createOpenStreetMap({
'opacity': 0.5,

View File

@@ -3,12 +3,10 @@ goog.provide('ol');
goog.require('ol.Array');
goog.require('ol.Bounds');
goog.require('ol.Camera');
goog.require('ol.DOMMapRenderer');
goog.require('ol.Extent');
goog.require('ol.Layer');
goog.require('ol.LayerRenderer');
goog.require('ol.Map');
goog.require('ol.MapRenderer');
goog.require('ol.Object');
goog.require('ol.Projection');
goog.require('ol.Store');
@@ -21,4 +19,8 @@ goog.require('ol.TileStore');
goog.require('ol.TileUrlFunction');
goog.require('ol.TileUrlFunctionType');
goog.require('ol.TransformFunction');
goog.require('ol.WebGLMapRenderer');
goog.require('ol.createMap');
goog.require('ol.dom');
goog.require('ol.dom.Map');
goog.require('ol.webgl');
goog.require('ol.webgl.Map');

66
src/ol/createmap.js Normal file
View File

@@ -0,0 +1,66 @@
goog.provide('ol.createMap');
goog.require('goog.object');
goog.require('ol.Array');
goog.require('ol.Camera');
goog.require('ol.Projection');
goog.require('ol.dom');
goog.require('ol.dom.Map');
goog.require('ol.webgl');
goog.require('ol.webgl.Map');
/**
* @define {string} Default projection code.
*/
ol.DEFAULT_PROJECTION_CODE = 'EPSG:3857';
/**
* @define {boolean} Whether to enable DOM.
*/
ol.ENABLE_DOM = true;
/**
* @define {boolean} Whether to enable WebGL.
*/
ol.ENABLE_WEBGL = true;
/**
* @param {!HTMLDivElement} target Target.
* @param {Object.<string, *>=} opt_values Values.
* @return {ol.Map} Map.
*/
ol.createMap = function(target, opt_values) {
var values = {};
if (goog.isDef(opt_values)) {
goog.object.extend(values, opt_values);
}
if (!goog.object.containsKey(values, ol.MapProperty.CAMERA)) {
values[ol.MapProperty.CAMERA] = new ol.Camera();
}
if (!goog.object.containsKey(values, ol.MapProperty.LAYERS)) {
values[ol.MapProperty.LAYERS] = new ol.Array();
}
if (!goog.object.containsKey(values, ol.MapProperty.PROJECTION)) {
values[ol.MapProperty.PROJECTION] =
ol.Projection.createFromCode(ol.DEFAULT_PROJECTION_CODE);
}
if (ol.ENABLE_WEBGL && ol.webgl.isSupported()) {
return new ol.webgl.Map(target, values);
}
if (ol.ENABLE_DOM && ol.dom.isSupported()) {
return new ol.dom.Map(target, values);
}
return null;
};

9
src/ol/dom/dom.js Normal file
View File

@@ -0,0 +1,9 @@
goog.provide('ol.dom');
goog.require('goog.functions');
/**
* @return {boolean} Is supported.
*/
ol.dom.isSupported = goog.functions.TRUE;

View File

@@ -1,18 +1,18 @@
goog.provide('ol.DOMMapRenderer');
goog.provide('ol.dom.Map');
goog.require('ol.Layer');
goog.require('ol.MapRenderer');
goog.require('ol.Map');
goog.require('ol.TileStore');
/**
* @constructor
* @extends {ol.MapRenderer}
* @extends {ol.Map}
* @param {!HTMLDivElement} target Target.
* @param {Object.<string, *>=} opt_values Values.
*/
ol.DOMMapRenderer = function(target, opt_values) {
ol.dom.Map = function(target, opt_values) {
goog.base(this, target);
@@ -23,24 +23,16 @@ ol.DOMMapRenderer = function(target, opt_values) {
}
};
goog.inherits(ol.DOMMapRenderer, ol.MapRenderer);
/**
* @return {boolean} Is supported.
*/
ol.DOMMapRenderer.isSupported = function() {
return true;
};
goog.inherits(ol.dom.Map, ol.Map);
/**
* @inheritDoc
*/
ol.DOMMapRenderer.prototype.createLayerRenderer = function(layer) {
ol.dom.Map.prototype.createLayerRenderer = function(layer) {
var store = layer.getStore();
if (layer instanceof ol.TileStore) {
// FIXME create DOMTileLayerRenderer
// FIXME create ol.dom.TileLayerRenderer
}
return null;
};

View File

@@ -1,26 +1,17 @@
goog.provide('ol.Map');
goog.provide('ol.MapProperty');
goog.require('goog.array');
goog.require('goog.events');
goog.require('goog.events.Event');
goog.require('goog.events.EventType');
goog.require('goog.object');
goog.require('ol.Array');
goog.require('ol.Camera');
goog.require('ol.DOMMapRenderer');
goog.require('ol.MapRenderer');
goog.require('ol.MapRendererProperty');
goog.require('ol.CameraProperty');
goog.require('ol.LayerRenderer');
goog.require('ol.Object');
goog.require('ol.Projection');
goog.require('ol.WebGLMapRenderer');
/**
* @define {boolean} Whether to enable the DOM renderer.
*/
ol.ENABLE_DOM_RENDERER = true;
/**
* @define {boolean} Whether to enable the WebGL renderer.
*/
ol.ENABLE_WEBGL_RENDERER = true;
/**
@@ -37,8 +28,8 @@ ol.MapProperty = {
/**
* @constructor
* @extends {ol.Object}
* @param {!HTMLDivElement} target Target.
* @param {Object.<string, *>=} opt_values Values.
* @param {HTMLDivElement} target Target.
* @param {Object=} opt_values Values.
*/
ol.Map = function(target, opt_values) {
@@ -52,48 +43,73 @@ ol.Map = function(target, opt_values) {
/**
* @private
* @type {ol.MapRenderer}
* @type {goog.math.Size}
*/
this.mapRenderer_ = null;
this.size_ = new goog.math.Size(target.clientWidth, target.clientHeight);
if (ol.ENABLE_WEBGL_RENDERER && goog.isNull(this.mapRenderer_)) {
if (ol.WebGLMapRenderer.isSupported()) {
this.mapRenderer_ = new ol.WebGLMapRenderer(this.target_);
}
}
/**
* @private
* @type {Array.<number>}
*/
this.cameraListenerKeys_ = null;
if (ol.ENABLE_DOM_RENDERER && goog.isNull(this.mapRenderer_)) {
if (ol.DOMMapRenderer.isSupported()) {
this.mapRenderer_ = new ol.DOMMapRenderer(this.target_);
}
}
/**
* @private
* @type {Array.<number>}
*/
this.layersListenerKeys_ = null;
goog.asserts.assert(!goog.isNull(this.mapRenderer_));
/**
* @private
* @type {Object.<number, ol.LayerRenderer>}
*/
this.layerRenderers_ = {};
this.mapRenderer_.bindTo(
ol.MapRendererProperty.CAMERA, this, ol.MapProperty.CAMERA);
this.mapRenderer_.bindTo(
ol.MapRendererProperty.LAYERS, this, ol.MapProperty.LAYERS);
goog.events.listen(target, goog.events.EventType.RESIZE,
this.handleTargetResize, false, this);
var values = goog.isDef(opt_values) ? goog.object.clone(opt_values) : {};
goog.events.listen(
this, ol.Object.getChangedEventType(ol.MapProperty.CAMERA),
this.handleCameraChanged, false, this);
if (!(ol.MapProperty.CAMERA in values)) {
values[ol.MapProperty.CAMERA] = new ol.Camera();
goog.events.listen(
this, ol.Object.getChangedEventType(ol.MapProperty.LAYERS),
this.handleLayersChanged, false, this);
if (goog.isDef(opt_values)) {
this.setValues(opt_values);
}
if (!(ol.MapProperty.LAYERS in values)) {
values[ol.MapProperty.LAYERS] = new ol.Array();
}
if (!(ol.MapProperty.PROJECTION in values)) {
values[ol.MapProperty.PROJECTION] =
ol.Projection.createFromCode('EPSG:3857');
}
this.setValues(values);
};
goog.inherits(ol.Map, ol.Object);
/**
* @param {ol.Layer} layer Layer.
* @protected
* @return {ol.LayerRenderer} layerRenderer Layer renderer.
*/
ol.Map.prototype.createLayerRenderer = goog.abstractMethod;
/**
* @protected
* @param {function(this: T, ol.LayerRenderer)} f Function.
* @param {T=} opt_obj The object to be used for the value of 'this' within f.
* @template T
*/
ol.Map.prototype.forEachLayerRenderer = function(f, opt_obj) {
var layers = this.getLayers();
if (goog.isDefAndNotNull(layers)) {
layers.forEach(function(layer) {
var key = goog.getUid(layer);
var layerRenderer = this.layerRenderers_[key];
f.call(opt_obj, layerRenderer);
}, this);
}
};
/**
* @return {ol.Camera} Camera.
*/
@@ -118,6 +134,15 @@ ol.Map.prototype.getProjection = function() {
};
/**
* @protected
* @return {goog.math.Size} Size.
*/
ol.Map.prototype.getSize = function() {
return this.size_;
};
/**
* @return {HTMLDivElement} Target.
*/
@@ -126,6 +151,123 @@ ol.Map.prototype.getTarget = function() {
};
/**
* @protected
*/
ol.Map.prototype.handleCameraChanged = function() {
if (!goog.isNull(this.cameraListenerKeys_)) {
goog.array.forEach(this.cameraListenerKeys_, goog.events.unlistenByKey);
this.cameraListenerKeys_ = null;
}
var camera = this.getCamera();
if (goog.isDefAndNotNull(camera)) {
this.cameraListenerKeys_ = goog.array.map(
goog.object.getValues(ol.CameraProperty),
function(cameraProperty) {
return goog.events.listen(camera, cameraProperty,
this.handleCameraPropertyChanged, false, this);
},
this);
}
};
/**
* @protected
*/
ol.Map.prototype.handleCameraPropertyChanged = goog.nullFunction;
/**
* @param {ol.Layer} layer Layer.
* @protected
*/
ol.Map.prototype.handleLayerAdd = function(layer) {
var key = goog.getUid(layer);
var layerRenderer = this.createLayerRenderer(layer);
this.layerRenderers_[key] = layerRenderer;
};
/**
* @param {ol.Layer} layer Layer.
* @protected
*/
ol.Map.prototype.handleLayerRemove = function(layer) {
var key = goog.getUid(layer);
goog.asserts.assert(key in this.layerRenderers_);
var layerRenderer = this.layerRenderers_[key];
delete this.layerRenderers_[key];
goog.dispose(layerRenderer);
};
/**
* @param {ol.ArrayEvent} event Event.
* @protected
*/
ol.Map.prototype.handleLayersInsertAt = function(event) {
var layers = /** @type {ol.Array} */ (event.target);
var layer = /** @type {ol.Layer} */ layers.getAt(event.index);
this.handleLayerAdd(layer);
};
/**
* @param {ol.ArrayEvent} event Event.
* @protected
*/
ol.Map.prototype.handleLayersRemoveAt = function(event) {
var layer = /** @type {ol.Layer} */ (event.prev);
this.handleLayerRemove(layer);
};
/**
* @param {ol.ArrayEvent} event Event.
* @protected
*/
ol.Map.prototype.handleLayersSetAt = function(event) {
var prevLayer = /** @type {ol.Layer} */ (event.prev);
this.handleLayerRemove(prevLayer);
var layers = /** @type {ol.Array} */ (event.target);
var layer = /** @type {ol.Layer} */ layers.getAt(event.index);
this.handleLayerAdd(layer);
};
/**
*/
ol.Map.prototype.handleLayersChanged = function() {
if (!goog.isNull(this.layersListenerKeys_)) {
goog.array.forEach(this.layersListenerKeys_, goog.events.unlistenByKey);
this.layersListenerKeys_ = null;
}
var layers = this.getLayers();
if (goog.isDefAndNotNull(layers)) {
this.layersListenerKeys_ = [
goog.events.listen(layers, ol.ArrayEventType.INSERT_AT,
this.handleLayersInsertAt, false, this),
goog.events.listen(layers, ol.ArrayEventType.REMOVE_AT,
this.handleLayersRemoveAt, false, this),
goog.events.listen(layers, ol.ArrayEventType.SET_AT,
this.handleLayersSetAt, false, this)
];
}
};
/**
* @param {goog.events.Event} event Event.
* @protected
*/
ol.Map.prototype.handleTargetResize = function(event) {
goog.asserts.assert(event.target == this.target_);
this.size_.width = this.target_.clientWidth;
this.size_.height = this.target_.clientHeight;
};
/**
* @param {ol.Camera} camera Camera.
*/
@@ -134,17 +276,17 @@ ol.Map.prototype.setCamera = function(camera) {
};
/**
* @param {ol.Projection} projection Projection.
*/
ol.Map.prototype.setProjection = function(projection) {
this.set(ol.MapProperty.PROJECTION, projection);
};
/**
* @param {ol.Array} layers Layers.
*/
ol.Map.prototype.setLayers = function(layers) {
this.set(ol.MapProperty.LAYERS, layers);
};
/**
* @param {ol.Projection} projection Projection.
*/
ol.Map.prototype.setProjection = function(projection) {
this.set(ol.MapProperty.PROJECTION, projection);
};

View File

@@ -1,293 +0,0 @@
goog.provide('ol.MapRenderer');
goog.provide('ol.MapRendererProperty');
goog.require('goog.array');
goog.require('goog.events');
goog.require('goog.events.Event');
goog.require('goog.events.EventType');
goog.require('goog.object');
goog.require('ol.Array');
goog.require('ol.Camera');
goog.require('ol.CameraProperty');
goog.require('ol.LayerRenderer');
goog.require('ol.Object');
goog.require('ol.Projection');
/**
* @enum {string}
*/
ol.MapRendererProperty = {
CAMERA: 'camera',
LAYERS: 'layers',
PROJECTION: 'projection'
};
/**
* @constructor
* @extends {ol.Object}
* @param {HTMLDivElement} target Target.
* @param {Object=} opt_values Values.
*/
ol.MapRenderer = function(target, opt_values) {
goog.base(this);
/**
* @private
* @type {HTMLDivElement}
*/
this.target_ = target;
/**
* @private
* @type {goog.math.Size}
*/
this.size_ = new goog.math.Size(target.clientWidth, target.clientHeight);
/**
* @private
* @type {Array.<number>}
*/
this.cameraListenerKeys_ = null;
/**
* @private
* @type {Array.<number>}
*/
this.layersListenerKeys_ = null;
/**
* @private
* @type {Object.<number, ol.LayerRenderer>}
*/
this.layerRenderers_ = {};
goog.events.listen(target, goog.events.EventType.RESIZE,
this.handleTargetResize, false, this);
goog.events.listen(
this, ol.Object.getChangedEventType(ol.MapRendererProperty.CAMERA),
this.handleCameraChanged, false, this);
goog.events.listen(
this, ol.Object.getChangedEventType(ol.MapRendererProperty.LAYERS),
this.handleLayersChanged, false, this);
if (goog.isDef(opt_values)) {
this.setValues(opt_values);
}
};
goog.inherits(ol.MapRenderer, ol.Object);
/**
* @param {ol.Layer} layer Layer.
* @protected
* @return {ol.LayerRenderer} layerRenderer Layer renderer.
*/
ol.MapRenderer.prototype.createLayerRenderer = goog.abstractMethod;
/**
* @protected
* @param {function(this: T, ol.LayerRenderer)} f Function.
* @param {T=} opt_obj The object to be used for the value of 'this' within f.
* @template T
*/
ol.MapRenderer.prototype.forEachLayerRenderer = function(f, opt_obj) {
var layers = this.getLayers();
if (goog.isDefAndNotNull(layers)) {
layers.forEach(function(layer) {
var key = goog.getUid(layer);
var layerRenderer = this.layerRenderers_[key];
f.call(opt_obj, layerRenderer);
}, this);
}
};
/**
* @return {ol.Camera} Camera.
*/
ol.MapRenderer.prototype.getCamera = function() {
return /** @type {ol.Camera} */ (this.get(ol.MapRendererProperty.CAMERA));
};
/**
* @return {ol.Array} Layers.
*/
ol.MapRenderer.prototype.getLayers = function() {
return /** @type {ol.Array} */ (this.get(ol.MapRendererProperty.LAYERS));
};
/**
* @return {ol.Projection} Projection.
*/
ol.MapRenderer.prototype.getProjection = function() {
return /** @type {ol.Projection} */ (
this.get(ol.MapRendererProperty.PROJECTION));
};
/**
* @protected
* @return {goog.math.Size} Size.
*/
ol.MapRenderer.prototype.getSize = function() {
return this.size_;
};
/**
* @return {HTMLDivElement} Target.
*/
ol.MapRenderer.prototype.getTarget = function() {
return this.target_;
};
/**
* @protected
*/
ol.MapRenderer.prototype.handleCameraChanged = function() {
if (!goog.isNull(this.cameraListenerKeys_)) {
goog.array.forEach(this.cameraListenerKeys_, goog.events.unlistenByKey);
this.cameraListenerKeys_ = null;
}
var camera = this.getCamera();
if (goog.isDefAndNotNull(camera)) {
this.cameraListenerKeys_ = goog.array.map(
goog.object.getValues(ol.CameraProperty),
function(cameraProperty) {
return goog.events.listen(camera, cameraProperty,
this.handleCameraPropertyChanged, false, this);
},
this);
}
};
/**
* @protected
*/
ol.MapRenderer.prototype.handleCameraPropertyChanged = goog.nullFunction;
/**
* @param {ol.Layer} layer Layer.
* @protected
*/
ol.MapRenderer.prototype.handleLayerAdd = function(layer) {
var key = goog.getUid(layer);
var layerRenderer = this.createLayerRenderer(layer);
this.layerRenderers_[key] = layerRenderer;
};
/**
* @param {ol.Layer} layer Layer.
* @protected
*/
ol.MapRenderer.prototype.handleLayerRemove = function(layer) {
var key = goog.getUid(layer);
goog.asserts.assert(key in this.layerRenderers_);
var layerRenderer = this.layerRenderers_[key];
delete this.layerRenderers_[key];
goog.dispose(layerRenderer);
};
/**
* @param {ol.ArrayEvent} event Event.
* @protected
*/
ol.MapRenderer.prototype.handleLayersInsertAt = function(event) {
var layers = /** @type {ol.Array} */ (event.target);
var layer = /** @type {ol.Layer} */ layers.getAt(event.index);
this.handleLayerAdd(layer);
};
/**
* @param {ol.ArrayEvent} event Event.
* @protected
*/
ol.MapRenderer.prototype.handleLayersRemoveAt = function(event) {
var layer = /** @type {ol.Layer} */ (event.prev);
this.handleLayerRemove(layer);
};
/**
* @param {ol.ArrayEvent} event Event.
* @protected
*/
ol.MapRenderer.prototype.handleLayersSetAt = function(event) {
var prevLayer = /** @type {ol.Layer} */ (event.prev);
this.handleLayerRemove(prevLayer);
var layers = /** @type {ol.Array} */ (event.target);
var layer = /** @type {ol.Layer} */ layers.getAt(event.index);
this.handleLayerAdd(layer);
};
/**
*/
ol.MapRenderer.prototype.handleLayersChanged = function() {
if (!goog.isNull(this.layersListenerKeys_)) {
goog.array.forEach(this.layersListenerKeys_, goog.events.unlistenByKey);
this.layersListenerKeys_ = null;
}
var layers = this.getLayers();
if (goog.isDefAndNotNull(layers)) {
this.layersListenerKeys_ = [
goog.events.listen(layers, ol.ArrayEventType.INSERT_AT,
this.handleLayersInsertAt, false, this),
goog.events.listen(layers, ol.ArrayEventType.REMOVE_AT,
this.handleLayersRemoveAt, false, this),
goog.events.listen(layers, ol.ArrayEventType.SET_AT,
this.handleLayersSetAt, false, this)
];
}
};
/**
* @param {goog.events.Event} event Event.
* @protected
*/
ol.MapRenderer.prototype.handleTargetResize = function(event) {
goog.asserts.assert(event.target == this.target_);
this.size_.width = this.target_.clientWidth;
this.size_.height = this.target_.clientHeight;
};
/**
* @param {ol.Camera} camera Camera.
*/
ol.MapRenderer.prototype.setCamera = function(camera) {
this.set(ol.MapRendererProperty.CAMERA, camera);
};
/**
* @param {ol.Array} layers Layers.
*/
ol.MapRenderer.prototype.setLayers = function(layers) {
this.set(ol.MapRendererProperty.LAYERS, layers);
};
/**
* @param {ol.Projection} projection Projection.
*/
ol.MapRenderer.prototype.setProjection = function(projection) {
this.set(ol.MapRendererProperty.PROJECTION, projection);
};

View File

@@ -1,18 +1,18 @@
goog.provide('ol.webglrenderer.ArrayBuffer');
goog.provide('ol.webgl.ArrayBuffer');
goog.require('goog.webgl');
goog.require('ol.webglrenderer.StaticGLObject');
goog.require('ol.webgl.StaticGLObject');
/**
* @constructor
* @extends {ol.webglrenderer.StaticGLObject}
* @extends {ol.webgl.StaticGLObject}
* @param {WebGLRenderingContext} gl GL.
* @param {ArrayBuffer|ArrayBufferView|null|number} data Data.
* @param {number} usage Usage.
*/
ol.webglrenderer.ArrayBuffer = function(gl, data, usage) {
ol.webgl.ArrayBuffer = function(gl, data, usage) {
goog.base(this, gl);
@@ -25,12 +25,12 @@ ol.webglrenderer.ArrayBuffer = function(gl, data, usage) {
gl.bufferData(goog.webgl.ARRAY_BUFFER, data, usage);
};
goog.inherits(ol.webglrenderer.ArrayBuffer, ol.webglrenderer.StaticGLObject);
goog.inherits(ol.webgl.ArrayBuffer, ol.webgl.StaticGLObject);
/**
*/
ol.webglrenderer.ArrayBuffer.prototype.bind = function() {
ol.webgl.ArrayBuffer.prototype.bind = function() {
var gl = this.getGL();
gl.bindBuffer(goog.webgl.ARRAY_BUFFER, this.buffer_);
};
@@ -39,7 +39,7 @@ ol.webglrenderer.ArrayBuffer.prototype.bind = function() {
/**
* @inheritDoc
*/
ol.webglrenderer.ArrayBuffer.prototype.disposeInternal = function() {
ol.webgl.ArrayBuffer.prototype.disposeInternal = function() {
var gl = this.getGL();
gl.deleteBuffer(this.buffer_);
this.buffer_ = null;

View File

@@ -1,17 +1,17 @@
goog.provide('ol.webglrenderer.Framebuffer');
goog.provide('ol.webgl.Framebuffer');
goog.require('goog.asserts');
goog.require('goog.webgl');
goog.require('ol.webglrenderer.GLObject');
goog.require('ol.webgl.GLObject');
/**
* @constructor
* @extends {ol.webglrenderer.GLObject}
* @extends {ol.webgl.GLObject}
* @param {number} size Size.
*/
ol.webglrenderer.Framebuffer = function(size) {
ol.webgl.Framebuffer = function(size) {
goog.base(this);
@@ -34,12 +34,12 @@ ol.webglrenderer.Framebuffer = function(size) {
this.size_ = size;
};
goog.inherits(ol.webglrenderer.Framebuffer, ol.webglrenderer.GLObject);
goog.inherits(ol.webgl.Framebuffer, ol.webgl.GLObject);
/**
*/
ol.webglrenderer.Framebuffer.prototype.bind = function() {
ol.webgl.Framebuffer.prototype.bind = function() {
var gl = this.getGL();
var framebuffer = this.get();
gl.bindFramebuffer(goog.webgl.FRAMEBUFFER, framebuffer);
@@ -51,7 +51,7 @@ ol.webglrenderer.Framebuffer.prototype.bind = function() {
* @private
* @return {WebGLTexture} Texture.
*/
ol.webglrenderer.Framebuffer.prototype.createTexture_ = function(size) {
ol.webgl.Framebuffer.prototype.createTexture_ = function(size) {
var gl = this.getGL();
var texture = gl.createTexture();
gl.bindTexture(goog.webgl.TEXTURE_2D, this.texture_);
@@ -68,7 +68,7 @@ ol.webglrenderer.Framebuffer.prototype.createTexture_ = function(size) {
/**
* @return {WebGLFramebuffer} Framebuffer.
*/
ol.webglrenderer.Framebuffer.prototype.get = function() {
ol.webgl.Framebuffer.prototype.get = function() {
goog.asserts.assert(!goog.isNull(this.framebuffer_));
return this.framebuffer_;
};
@@ -77,7 +77,7 @@ ol.webglrenderer.Framebuffer.prototype.get = function() {
/**
* @param {WebGLRenderingContext} gl GL.
*/
ol.webglrenderer.Framebuffer.prototype.setGL = function(gl) {
ol.webgl.Framebuffer.prototype.setGL = function(gl) {
if (!goog.isNull(this.gl)) {
if (!goog.isNull(this.framebuffer_)) {
this.gl.deleteFramebuffer(this.framebuffer_);
@@ -102,7 +102,7 @@ ol.webglrenderer.Framebuffer.prototype.setGL = function(gl) {
/**
* @param {number} size Size.
*/
ol.webglrenderer.Framebuffer.prototype.setSize = function(size) {
ol.webgl.Framebuffer.prototype.setSize = function(size) {
var gl = this.getGL();
goog.asserts.assert(!(size & (size - 1)));
if (this.size_ != size && !goog.isNull(gl)) {

View File

@@ -1,16 +1,16 @@
goog.provide('ol.webglrenderer.GLObject');
goog.provide('ol.webgl.GLObject');
goog.require('goog.Disposable');
goog.require('ol.webglrenderer.IGLObject');
goog.require('ol.webgl.IGLObject');
/**
* @constructor
* @extends {goog.Disposable}
* @implements {ol.webglrenderer.IGLObject}
* @implements {ol.webgl.IGLObject}
*/
ol.webglrenderer.GLObject = function() {
ol.webgl.GLObject = function() {
goog.base(this);
@@ -21,13 +21,13 @@ ol.webglrenderer.GLObject = function() {
this.gl_ = null;
};
goog.inherits(ol.webglrenderer.GLObject, goog.Disposable);
goog.inherits(ol.webgl.GLObject, goog.Disposable);
/**
* @inheritDoc
*/
ol.webglrenderer.GLObject.prototype.disposeInternal = function() {
ol.webgl.GLObject.prototype.disposeInternal = function() {
this.setGL(null);
goog.base(this, 'disposeInternal');
};
@@ -36,7 +36,7 @@ ol.webglrenderer.GLObject.prototype.disposeInternal = function() {
/**
* @inheritDoc
*/
ol.webglrenderer.GLObject.prototype.getGL = function() {
ol.webgl.GLObject.prototype.getGL = function() {
goog.asserts.assert(!goog.isNull(this.gl_));
return this.gl_;
};
@@ -45,6 +45,6 @@ ol.webglrenderer.GLObject.prototype.getGL = function() {
/**
* @inheritDoc
*/
ol.webglrenderer.GLObject.prototype.setGL = function(gl) {
ol.webgl.GLObject.prototype.setGL = function(gl) {
this.gl_ = gl;
};

20
src/ol/webgl/iglobject.js Normal file
View File

@@ -0,0 +1,20 @@
goog.provide('ol.webgl.IGLObject');
/**
* @interface
*/
ol.webgl.IGLObject = function() {};
/**
* @return {WebGLRenderingContext} GL.
*/
ol.webgl.IGLObject.prototype.getGL = function() {};
/**
* @param {WebGLRenderingContext} gl GL.
*/
ol.webgl.IGLObject.prototype.setGL = function(gl) {};

View File

@@ -1,25 +1,25 @@
goog.provide('ol.WebGLMapRenderer');
goog.provide('ol.webgl.Map');
goog.require('goog.dom');
goog.require('goog.dom.TagName');
goog.require('goog.style');
goog.require('goog.webgl');
goog.require('ol.Layer');
goog.require('ol.MapRenderer');
goog.require('ol.Map');
goog.require('ol.TileStore');
goog.require('ol.webglrenderer.IGLObject');
goog.require('ol.webglrenderer.TileLayerRenderer');
goog.require('ol.webgl.IGLObject');
goog.require('ol.webgl.TileLayerRenderer');
/**
* @constructor
* @extends {ol.MapRenderer}
* @implements {ol.webglrenderer.IGLObject}
* @extends {ol.Map}
* @implements {ol.webgl.IGLObject}
* @param {!HTMLDivElement} target Target.
* @param {Object.<string, *>=} opt_values Values.
*/
ol.WebGLMapRenderer = function(target, opt_values) {
ol.webgl.Map = function(target, opt_values) {
goog.base(this, target);
@@ -55,24 +55,16 @@ ol.WebGLMapRenderer = function(target, opt_values) {
}
};
goog.inherits(ol.WebGLMapRenderer, ol.MapRenderer);
/**
* @return {boolean} Is supported.
*/
ol.WebGLMapRenderer.isSupported = function() {
return 'WebGLRenderingContext' in goog.global;
};
goog.inherits(ol.webgl.Map, ol.Map);
/**
* @inheritDoc
*/
ol.WebGLMapRenderer.prototype.createLayerRenderer = function(layer) {
ol.webgl.Map.prototype.createLayerRenderer = function(layer) {
var store = layer.getStore();
if (store instanceof ol.TileStore) {
return new ol.webglrenderer.TileLayerRenderer(layer, this.getGL());
return new ol.webgl.TileLayerRenderer(layer, this.getGL());
} else {
goog.asserts.assert(false);
return null;
@@ -83,7 +75,7 @@ ol.WebGLMapRenderer.prototype.createLayerRenderer = function(layer) {
/**
* @inheritDoc
*/
ol.WebGLMapRenderer.prototype.disposeInternal = function() {
ol.webgl.Map.prototype.disposeInternal = function() {
this.setGL(null);
goog.base(this, 'disposeInternal');
};
@@ -92,7 +84,7 @@ ol.WebGLMapRenderer.prototype.disposeInternal = function() {
/**
* @inheritDoc
*/
ol.WebGLMapRenderer.prototype.getGL = function() {
ol.webgl.Map.prototype.getGL = function() {
var gl = this.gl_;
goog.asserts.assert(!goog.isNull(gl));
return gl;
@@ -102,7 +94,7 @@ ol.WebGLMapRenderer.prototype.getGL = function() {
/**
* @inheritDoc
*/
ol.WebGLMapRenderer.prototype.handleCameraPropertyChanged = function() {
ol.webgl.Map.prototype.handleCameraPropertyChanged = function() {
this.redraw_();
};
@@ -110,7 +102,7 @@ ol.WebGLMapRenderer.prototype.handleCameraPropertyChanged = function() {
/**
* @inheritDoc
*/
ol.WebGLMapRenderer.prototype.handleLayerAdd = function(layer) {
ol.webgl.Map.prototype.handleLayerAdd = function(layer) {
goog.base(this, 'handleLayerAdd', layer);
this.redraw_();
};
@@ -119,7 +111,7 @@ ol.WebGLMapRenderer.prototype.handleLayerAdd = function(layer) {
/**
* @inheritDoc
*/
ol.WebGLMapRenderer.prototype.handleLayerRemove = function(layer) {
ol.webgl.Map.prototype.handleLayerRemove = function(layer) {
goog.base(this, 'handleLayerRemove', layer);
this.redraw_();
};
@@ -128,7 +120,7 @@ ol.WebGLMapRenderer.prototype.handleLayerRemove = function(layer) {
/**
* @inheritDoc
*/
ol.WebGLMapRenderer.prototype.handleTargetResize = function(event) {
ol.webgl.Map.prototype.handleTargetResize = function(event) {
goog.base(this, 'handleTargetResize', event);
this.updateSize_();
};
@@ -137,7 +129,7 @@ ol.WebGLMapRenderer.prototype.handleTargetResize = function(event) {
/**
* @private
*/
ol.WebGLMapRenderer.prototype.redraw_ = function() {
ol.webgl.Map.prototype.redraw_ = function() {
var gl = this.getGL();
@@ -149,7 +141,7 @@ ol.WebGLMapRenderer.prototype.redraw_ = function() {
/**
* @inheritDoc
*/
ol.WebGLMapRenderer.prototype.setGL = function(gl) {
ol.webgl.Map.prototype.setGL = function(gl) {
if (!goog.isNull(this.gl_)) {
this.gl_ = null;
}
@@ -171,7 +163,7 @@ ol.WebGLMapRenderer.prototype.setGL = function(gl) {
/**
* @private
*/
ol.WebGLMapRenderer.prototype.updateSize_ = function() {
ol.webgl.Map.prototype.updateSize_ = function() {
var size = this.getSize();
this.canvas_.width = size.width;
this.canvas_.height = size.height;

View File

@@ -1,33 +1,33 @@
goog.provide('ol.webglrenderer.Program');
goog.provide('ol.webgl.Program');
goog.require('goog.asserts');
goog.require('goog.webgl');
goog.require('ol.webglrenderer.GLObject');
goog.require('ol.webglrenderer.VertexAttrib');
goog.require('ol.webglrenderer.shader.Fragment');
goog.require('ol.webglrenderer.shader.Vertex');
goog.require('ol.webgl.GLObject');
goog.require('ol.webgl.VertexAttrib');
goog.require('ol.webgl.shader.Fragment');
goog.require('ol.webgl.shader.Vertex');
/**
* @constructor
* @extends {ol.webglrenderer.GLObject}
* @param {ol.webglrenderer.shader.Fragment} fragmentShader Fragment shader.
* @param {ol.webglrenderer.shader.Vertex} vertexShader Vertex shader.
* @extends {ol.webgl.GLObject}
* @param {ol.webgl.shader.Fragment} fragmentShader Fragment shader.
* @param {ol.webgl.shader.Vertex} vertexShader Vertex shader.
*/
ol.webglrenderer.Program = function(fragmentShader, vertexShader) {
ol.webgl.Program = function(fragmentShader, vertexShader) {
goog.base(this);
/**
* @private
* @type {ol.webglrenderer.shader.Fragment}
* @type {ol.webgl.shader.Fragment}
*/
this.fragmentShader_ = fragmentShader;
/**
* @private
* @type {ol.webglrenderer.shader.Vertex}
* @type {ol.webgl.shader.Vertex}
*/
this.vertexShader_ = vertexShader;
@@ -38,13 +38,13 @@ ol.webglrenderer.Program = function(fragmentShader, vertexShader) {
this.program_ = null;
};
goog.inherits(ol.webglrenderer.Program, ol.webglrenderer.GLObject);
goog.inherits(ol.webgl.Program, ol.webgl.GLObject);
/**
* @inheritDoc
*/
ol.webglrenderer.Program.prototype.setGL = function(gl) {
ol.webgl.Program.prototype.setGL = function(gl) {
if (!goog.isNull(this.gl)) {
if (!goog.isNull(this.program_)) {
this.gl.deleteProgram(this.program_);
@@ -73,7 +73,7 @@ ol.webglrenderer.Program.prototype.setGL = function(gl) {
/**
*/
ol.webglrenderer.Program.prototype.use = function() {
ol.webgl.Program.prototype.use = function() {
var gl = this.getGL();
gl.useProgram(this.program_);
};

View File

@@ -1,38 +1,38 @@
goog.provide('ol.webglrenderer.ProgramCache');
goog.provide('ol.webgl.ProgramCache');
goog.require('goog.dispose');
goog.require('goog.object');
goog.require('ol.webglrenderer.GLObject');
goog.require('ol.webglrenderer.Program');
goog.require('ol.webglrenderer.shader.Fragment');
goog.require('ol.webglrenderer.shader.Vertex');
goog.require('ol.webgl.GLObject');
goog.require('ol.webgl.Program');
goog.require('ol.webgl.shader.Fragment');
goog.require('ol.webgl.shader.Vertex');
/**
* @constructor
* @extends {ol.webglrenderer.GLObject}
* @extends {ol.webgl.GLObject}
*/
ol.webglrenderer.ProgramCache = function() {
ol.webgl.ProgramCache = function() {
goog.base(this);
/**
* @private
* @type {Object.<string, Object.<string, ol.webglrenderer.Program>>}
* @type {Object.<string, Object.<string, ol.webgl.Program>>}
*/
this.programss_ = {};
};
goog.inherits(ol.webglrenderer.ProgramCache, ol.webglrenderer.GLObject);
goog.inherits(ol.webgl.ProgramCache, ol.webgl.GLObject);
/**
* @param {ol.webglrenderer.shader.Fragment} fragmentShader Fragment shader.
* @param {ol.webglrenderer.shader.Vertex} vertexShader Vertex shader.
* @return {ol.webglrenderer.Program} Program.
* @param {ol.webgl.shader.Fragment} fragmentShader Fragment shader.
* @param {ol.webgl.shader.Vertex} vertexShader Vertex shader.
* @return {ol.webgl.Program} Program.
*/
ol.webglrenderer.ProgramCache.prototype.get =
ol.webgl.ProgramCache.prototype.get =
function(fragmentShader, vertexShader) {
var program, programs;
var fragmentShaderKey = goog.getUid(fragmentShader);
@@ -46,7 +46,7 @@ ol.webglrenderer.ProgramCache.prototype.get =
if (vertexShaderKey in programs) {
program = programs[vertexShaderKey];
} else {
program = new ol.webglrenderer.Program(fragmentShader, vertexShader);
program = new ol.webgl.Program(fragmentShader, vertexShader);
programs[vertexShaderKey] = program;
}
return program;
@@ -56,7 +56,7 @@ ol.webglrenderer.ProgramCache.prototype.get =
/**
* @inheritDoc
*/
ol.webglrenderer.ProgramCache.prototype.setGL = function(gl) {
ol.webgl.ProgramCache.prototype.setGL = function(gl) {
goog.object.forEach(this.programss_, function(programs) {
goog.disposeAll(goog.object.getValues(programs));
});

View File

@@ -1,20 +1,20 @@
goog.provide('ol.webglrenderer.Shader');
goog.provide('ol.webgl.Shader');
goog.require('goog.array');
goog.require('goog.asserts');
goog.require('goog.webgl');
goog.require('ol.webglrenderer.GLObject');
goog.require('ol.webglrenderer.Uniform');
goog.require('ol.webgl.GLObject');
goog.require('ol.webgl.Uniform');
/**
* @constructor
* @extends {ol.webglrenderer.GLObject}
* @extends {ol.webgl.GLObject}
* @param {string} source Source.
* @param {Array.<ol.webglrenderer.Uniform>=} opt_uniforms Uniforms.
* @param {Array.<ol.webgl.Uniform>=} opt_uniforms Uniforms.
*/
ol.webglrenderer.Shader = function(source, opt_uniforms) {
ol.webgl.Shader = function(source, opt_uniforms) {
goog.base(this);
@@ -32,17 +32,17 @@ ol.webglrenderer.Shader = function(source, opt_uniforms) {
/**
* @private
* @type {Array.<ol.webglrenderer.Uniform>}
* @type {Array.<ol.webgl.Uniform>}
*/
this.uniforms_ = opt_uniforms || [];
};
goog.inherits(ol.webglrenderer.Shader, ol.webglrenderer.GLObject);
goog.inherits(ol.webgl.Shader, ol.webgl.GLObject);
/**
*/
ol.webglrenderer.Shader.prototype.compile = function() {
ol.webgl.Shader.prototype.compile = function() {
var gl = this.getGL();
this.shader_ = this.create();
gl.shaderSource(this.shader_, this.source_);
@@ -59,13 +59,13 @@ ol.webglrenderer.Shader.prototype.compile = function() {
* @protected
* @return {WebGLShader} Shader.
*/
ol.webglrenderer.Shader.prototype.create = goog.abstractMethod;
ol.webgl.Shader.prototype.create = goog.abstractMethod;
/**
* @return {WebGLShader} Shader.
*/
ol.webglrenderer.Shader.prototype.get = function() {
ol.webgl.Shader.prototype.get = function() {
return this.shader_;
};
@@ -73,7 +73,7 @@ ol.webglrenderer.Shader.prototype.get = function() {
/**
* @return {boolean} Is animated?
*/
ol.webglrenderer.Shader.prototype.isAnimated = function() {
ol.webgl.Shader.prototype.isAnimated = function() {
return false;
};
@@ -81,7 +81,7 @@ ol.webglrenderer.Shader.prototype.isAnimated = function() {
/**
* @inheritDoc
*/
ol.webglrenderer.Shader.prototype.setGL = function(gl) {
ol.webgl.Shader.prototype.setGL = function(gl) {
if (!goog.isNull(this.gl)) {
goog.array.forEach(this.uniforms_, function(uniform) {
uniform.setGL(null);
@@ -104,7 +104,7 @@ ol.webglrenderer.Shader.prototype.setGL = function(gl) {
/**
* @param {WebGLProgram} program Program.
*/
ol.webglrenderer.Shader.prototype.setProgram = function(program) {
ol.webgl.Shader.prototype.setProgram = function(program) {
goog.array.forEach(this.uniforms_, function(uniform) {
uniform.setProgram(program);
});
@@ -113,5 +113,5 @@ ol.webglrenderer.Shader.prototype.setProgram = function(program) {
/**
*/
ol.webglrenderer.Shader.prototype.setUniforms = function() {
ol.webgl.Shader.prototype.setUniforms = function() {
};

View File

@@ -0,0 +1,27 @@
goog.provide('ol.webgl.shader.Fragment');
goog.require('goog.asserts');
goog.require('ol.webgl.Shader');
/**
* @constructor
* @extends {ol.webgl.Shader}
* @param {string} source Source.
* @param {Array.<ol.webgl.Uniform>=} opt_uniforms Uniforms.
*/
ol.webgl.shader.Fragment = function(source, opt_uniforms) {
goog.base(this, source, opt_uniforms);
};
goog.inherits(ol.webgl.shader.Fragment, ol.webgl.Shader);
/**
* @protected
* @return {WebGLShader} Shader.
*/
ol.webgl.shader.Fragment.prototype.create = function() {
var gl = this.getGL();
return gl.createShader(gl.FRAGMENT_SHADER);
};

View File

@@ -0,0 +1,27 @@
goog.provide('ol.webgl.shader.Vertex');
goog.require('goog.asserts');
goog.require('ol.webgl.Shader');
/**
* @constructor
* @extends {ol.webgl.Shader}
* @param {string} source Source.
* @param {Array.<ol.webgl.Uniform>=} opt_uniforms Uniforms.
*/
ol.webgl.shader.Vertex = function(source, opt_uniforms) {
goog.base(this, source, opt_uniforms);
};
goog.inherits(ol.webgl.shader.Vertex, ol.webgl.Shader);
/**
* @protected
* @return {WebGLShader} Shader.
*/
ol.webgl.shader.Vertex.prototype.create = function() {
var gl = this.getGL();
return gl.createShader(gl.VERTEX_SHADER);
};

View File

@@ -1,4 +1,4 @@
goog.provide('ol.webglrenderer.StaticGLObject');
goog.provide('ol.webgl.StaticGLObject');
goog.require('goog.Disposable');
@@ -9,7 +9,7 @@ goog.require('goog.Disposable');
* @extends {goog.Disposable}
* @param {WebGLRenderingContext} gl GL.
*/
ol.webglrenderer.StaticGLObject = function(gl) {
ol.webgl.StaticGLObject = function(gl) {
goog.asserts.assert(!goog.isNull(gl));
@@ -20,13 +20,13 @@ ol.webglrenderer.StaticGLObject = function(gl) {
this.gl = gl;
};
goog.inherits(ol.webglrenderer.StaticGLObject, goog.Disposable);
goog.inherits(ol.webgl.StaticGLObject, goog.Disposable);
/**
* @inheritDoc
*/
ol.webglrenderer.StaticGLObject.prototype.disposeInternal = function() {
ol.webgl.StaticGLObject.prototype.disposeInternal = function() {
this.gl = null;
goog.base(this, 'disposeInternal');
};
@@ -35,7 +35,7 @@ ol.webglrenderer.StaticGLObject.prototype.disposeInternal = function() {
/**
* @return {!WebGLRenderingContext} GL.
*/
ol.webglrenderer.StaticGLObject.prototype.getGL = function() {
ol.webgl.StaticGLObject.prototype.getGL = function() {
goog.asserts.assert(!goog.isNull(this.gl));
return this.gl;
};
@@ -44,6 +44,6 @@ ol.webglrenderer.StaticGLObject.prototype.getGL = function() {
/**
* @return {WebGLRenderingContext} GL.
*/
ol.webglrenderer.StaticGLObject.prototype.unsafeGetGL = function() {
ol.webgl.StaticGLObject.prototype.unsafeGetGL = function() {
return this.gl;
};

View File

@@ -1,16 +1,16 @@
goog.provide('ol.webglrenderer.Texture');
goog.provide('ol.webgl.Texture');
goog.require('goog.asserts');
goog.require('ol.webglrenderer.GLObject');
goog.require('ol.webgl.GLObject');
/**
* @constructor
* @extends {ol.webglrenderer.GLObject}
* @extends {ol.webgl.GLObject}
* @param {Image} image Image.
*/
ol.webglrenderer.Texture = function(image) {
ol.webgl.Texture = function(image) {
goog.base(this);
@@ -27,12 +27,12 @@ ol.webglrenderer.Texture = function(image) {
this.image_ = image;
};
goog.inherits(ol.webglrenderer.Texture, ol.webglrenderer.GLObject);
goog.inherits(ol.webgl.Texture, ol.webgl.GLObject);
/**
*/
ol.webglrenderer.Texture.prototype.bind = function() {
ol.webgl.Texture.prototype.bind = function() {
var gl = this.getGL();
if (goog.isNull(this.texture_)) {
var texture = gl.createTexture();
@@ -53,7 +53,7 @@ ol.webglrenderer.Texture.prototype.bind = function() {
/**
* @inheritDoc
*/
ol.webglrenderer.Texture.prototype.setGL = function(gl) {
ol.webgl.Texture.prototype.setGL = function(gl) {
if (!goog.isNull(this.gl)) {
if (!goog.isNull(this.texture_)) {
this.gl.deleteTexture(this.texture_);

View File

@@ -1,19 +1,19 @@
goog.provide('ol.webglrenderer.TileLayerRenderer');
goog.provide('ol.webgl.TileLayerRenderer');
goog.require('goog.events.EventType');
goog.require('ol.LayerRenderer');
goog.require('ol.webglrenderer.IGLObject');
goog.require('ol.webgl.IGLObject');
/**
* @constructor
* @extends {ol.LayerRenderer}
* @implements {ol.webglrenderer.IGLObject}
* @implements {ol.webgl.IGLObject}
* @param {ol.Layer} layer Layer.
* @param {WebGLRenderingContext} gl GL.
*/
ol.webglrenderer.TileLayerRenderer = function(layer, gl) {
ol.webgl.TileLayerRenderer = function(layer, gl) {
goog.base(this, layer);
@@ -26,13 +26,13 @@ ol.webglrenderer.TileLayerRenderer = function(layer, gl) {
this.setGL(gl);
};
goog.inherits(ol.webglrenderer.TileLayerRenderer, ol.LayerRenderer);
goog.inherits(ol.webgl.TileLayerRenderer, ol.LayerRenderer);
/**
* @protected
*/
ol.webglrenderer.TileLayerRenderer.prototype.dispatchChangeEvent = function() {
ol.webgl.TileLayerRenderer.prototype.dispatchChangeEvent = function() {
this.dispatchEvent(goog.events.EventType.CHANGE);
};
@@ -40,7 +40,7 @@ ol.webglrenderer.TileLayerRenderer.prototype.dispatchChangeEvent = function() {
/**
* @inheritDoc
*/
ol.webglrenderer.TileLayerRenderer.prototype.getGL = function() {
ol.webgl.TileLayerRenderer.prototype.getGL = function() {
return this.gl_;
};
@@ -48,7 +48,7 @@ ol.webglrenderer.TileLayerRenderer.prototype.getGL = function() {
/**
* @inheritDoc
*/
ol.webglrenderer.TileLayerRenderer.prototype.handleLayerOpacityChange =
ol.webgl.TileLayerRenderer.prototype.handleLayerOpacityChange =
function() {
this.dispatchChangeEvent();
};
@@ -57,7 +57,7 @@ ol.webglrenderer.TileLayerRenderer.prototype.handleLayerOpacityChange =
/**
* @inheritDoc
*/
ol.webglrenderer.TileLayerRenderer.prototype.handleLayerVisibleChange =
ol.webgl.TileLayerRenderer.prototype.handleLayerVisibleChange =
function() {
this.dispatchChangeEvent();
};
@@ -66,6 +66,6 @@ ol.webglrenderer.TileLayerRenderer.prototype.handleLayerVisibleChange =
/**
* @inheritDoc
*/
ol.webglrenderer.TileLayerRenderer.prototype.setGL = function(gl) {
ol.webgl.TileLayerRenderer.prototype.setGL = function(gl) {
this.gl_ = gl;
};

View File

@@ -1,17 +1,17 @@
goog.provide('ol.webglrenderer.Uniform');
goog.provide('ol.webgl.Uniform');
goog.require('goog.asserts');
goog.require('goog.vec.Mat4');
goog.require('ol.webglrenderer.GLObject');
goog.require('ol.webgl.GLObject');
/**
* @constructor
* @extends {ol.webglrenderer.GLObject}
* @extends {ol.webgl.GLObject}
* @param {string} name Name.
*/
ol.webglrenderer.Uniform = function(name) {
ol.webgl.Uniform = function(name) {
goog.base(this);
@@ -34,13 +34,13 @@ ol.webglrenderer.Uniform = function(name) {
this.location_ = null;
};
goog.inherits(ol.webglrenderer.Uniform, ol.webglrenderer.GLObject);
goog.inherits(ol.webgl.Uniform, ol.webgl.GLObject);
/**
* @return {string} Name.
*/
ol.webglrenderer.Uniform.prototype.getName = function() {
ol.webgl.Uniform.prototype.getName = function() {
return this.name_;
};
@@ -48,7 +48,7 @@ ol.webglrenderer.Uniform.prototype.getName = function() {
/**
* @param {WebGLRenderingContext} gl GL.
*/
ol.webglrenderer.Uniform.prototype.setGL = function(gl) {
ol.webgl.Uniform.prototype.setGL = function(gl) {
this.location_ = null;
goog.base(this, 'setGL', gl);
};
@@ -57,7 +57,7 @@ ol.webglrenderer.Uniform.prototype.setGL = function(gl) {
/**
* @param {number} value Value.
*/
ol.webglrenderer.Uniform.prototype.set1f = function(value) {
ol.webgl.Uniform.prototype.set1f = function(value) {
var gl = this.getGL();
if (!goog.isNull(this.location_)) {
gl.uniform1f(this.location_, value);
@@ -68,7 +68,7 @@ ol.webglrenderer.Uniform.prototype.set1f = function(value) {
/**
* @param {number} value Value.
*/
ol.webglrenderer.Uniform.prototype.set1i = function(value) {
ol.webgl.Uniform.prototype.set1i = function(value) {
var gl = this.getGL();
if (!goog.isNull(this.location_)) {
gl.uniform1i(this.location_, value);
@@ -80,7 +80,7 @@ ol.webglrenderer.Uniform.prototype.set1i = function(value) {
* @param {boolean} transpose Transpose.
* @param {goog.vec.Mat4.Mat4Like} value Value.
*/
ol.webglrenderer.Uniform.prototype.setMatrix4fv = function(transpose, value) {
ol.webgl.Uniform.prototype.setMatrix4fv = function(transpose, value) {
var gl = this.getGL();
if (!goog.isNull(this.location_)) {
gl.uniformMatrix4fv(this.location_, transpose, value);
@@ -91,7 +91,7 @@ ol.webglrenderer.Uniform.prototype.setMatrix4fv = function(transpose, value) {
/**
* @param {WebGLProgram} program Program.
*/
ol.webglrenderer.Uniform.prototype.setProgram = function(program) {
ol.webgl.Uniform.prototype.setProgram = function(program) {
if (goog.isNull(program)) {
this.location_ = null;
} else {

View File

@@ -1,16 +1,16 @@
goog.provide('ol.webglrenderer.VertexAttrib');
goog.provide('ol.webgl.VertexAttrib');
goog.require('goog.asserts');
goog.require('ol.webglrenderer.GLObject');
goog.require('ol.webgl.GLObject');
/**
* @constructor
* @extends {ol.webglrenderer.GLObject}
* @extends {ol.webgl.GLObject}
* @param {string} name Name.
*/
ol.webglrenderer.VertexAttrib = function(name) {
ol.webgl.VertexAttrib = function(name) {
goog.base(this);
@@ -27,12 +27,12 @@ ol.webglrenderer.VertexAttrib = function(name) {
this.location_ = -1;
};
goog.inherits(ol.webglrenderer.VertexAttrib, ol.webglrenderer.GLObject);
goog.inherits(ol.webgl.VertexAttrib, ol.webgl.GLObject);
/**
*/
ol.webglrenderer.VertexAttrib.prototype.enableArray = function() {
ol.webgl.VertexAttrib.prototype.enableArray = function() {
var gl = this.getGL();
goog.asserts.assert(this.location_ != -1);
gl.enableVertexAttribArray(this.location_);
@@ -46,7 +46,7 @@ ol.webglrenderer.VertexAttrib.prototype.enableArray = function() {
* @param {number} stride Stride.
* @param {number} offset Offset.
*/
ol.webglrenderer.VertexAttrib.prototype.pointer =
ol.webgl.VertexAttrib.prototype.pointer =
function(size, type, normalize, stride, offset) {
var gl = this.getGL();
goog.asserts.assert(this.location_ != -1);
@@ -58,7 +58,7 @@ ol.webglrenderer.VertexAttrib.prototype.pointer =
/**
* @param {WebGLRenderingContext} gl GL.
*/
ol.webglrenderer.VertexAttrib.prototype.setGL = function(gl) {
ol.webgl.VertexAttrib.prototype.setGL = function(gl) {
this.location_ = -1;
goog.base(this, 'setGL', gl);
};
@@ -67,7 +67,7 @@ ol.webglrenderer.VertexAttrib.prototype.setGL = function(gl) {
/**
* @param {WebGLProgram} program Program.
*/
ol.webglrenderer.VertexAttrib.prototype.setProgram = function(program) {
ol.webgl.VertexAttrib.prototype.setProgram = function(program) {
if (goog.isNull(program)) {
this.location_ = -1;
} else {

9
src/ol/webgl/webgl.js Normal file
View File

@@ -0,0 +1,9 @@
goog.provide('ol.webgl');
/**
* @return {boolean} Is supported.
*/
ol.webgl.isSupported = function() {
return 'WebGLRenderingContext' in goog.global;
};

View File

@@ -1,20 +0,0 @@
goog.provide('ol.webglrenderer.IGLObject');
/**
* @interface
*/
ol.webglrenderer.IGLObject = function() {};
/**
* @return {WebGLRenderingContext} GL.
*/
ol.webglrenderer.IGLObject.prototype.getGL = function() {};
/**
* @param {WebGLRenderingContext} gl GL.
*/
ol.webglrenderer.IGLObject.prototype.setGL = function(gl) {};

View File

@@ -1,27 +0,0 @@
goog.provide('ol.webglrenderer.shader.Fragment');
goog.require('goog.asserts');
goog.require('ol.webglrenderer.Shader');
/**
* @constructor
* @extends {ol.webglrenderer.Shader}
* @param {string} source Source.
* @param {Array.<ol.webglrenderer.Uniform>=} opt_uniforms Uniforms.
*/
ol.webglrenderer.shader.Fragment = function(source, opt_uniforms) {
goog.base(this, source, opt_uniforms);
};
goog.inherits(ol.webglrenderer.shader.Fragment, ol.webglrenderer.Shader);
/**
* @protected
* @return {WebGLShader} Shader.
*/
ol.webglrenderer.shader.Fragment.prototype.create = function() {
var gl = this.getGL();
return gl.createShader(gl.FRAGMENT_SHADER);
};

View File

@@ -1,27 +0,0 @@
goog.provide('ol.webglrenderer.shader.Vertex');
goog.require('goog.asserts');
goog.require('ol.webglrenderer.Shader');
/**
* @constructor
* @extends {ol.webglrenderer.Shader}
* @param {string} source Source.
* @param {Array.<ol.webglrenderer.Uniform>=} opt_uniforms Uniforms.
*/
ol.webglrenderer.shader.Vertex = function(source, opt_uniforms) {
goog.base(this, source, opt_uniforms);
};
goog.inherits(ol.webglrenderer.shader.Vertex, ol.webglrenderer.Shader);
/**
* @protected
* @return {WebGLShader} Shader.
*/
ol.webglrenderer.shader.Vertex.prototype.create = function() {
var gl = this.getGL();
return gl.createShader(gl.VERTEX_SHADER);
};