Refactor build system and layout

This commit is contained in:
Tom Payne
2012-07-18 02:26:41 +02:00
parent f166285fd2
commit e85ca98179
19 changed files with 365 additions and 101 deletions

40
src/ol/ol.js Normal file
View File

@@ -0,0 +1,40 @@
goog.provide('ol');
goog.require('ol.Array');
goog.require('ol.ArrayEvent');
goog.require('ol.ArrayEventType');
goog.require('ol.Extent');
goog.require('ol.Layer');
goog.require('ol.LayerProperty');
goog.require('ol.LayerRenderer');
goog.require('ol.Map');
goog.require('ol.MapProperty');
goog.require('ol.Object');
goog.require('ol.Projection');
goog.require('ol.Rectangle');
goog.require('ol.Store');
goog.require('ol.Tile');
goog.require('ol.TileBounds');
goog.require('ol.TileCoord');
goog.require('ol.TileGrid');
goog.require('ol.TileLayer');
goog.require('ol.TileStore');
goog.require('ol.TileUrlFunction');
goog.require('ol.TileUrlFunctionType');
goog.require('ol.TransformFunction');
goog.require('ol.createMap');
goog.require('ol.dom');
goog.require('ol.dom.LayerRenderer');
goog.require('ol.dom.Map');
goog.require('ol.dom.TileLayerRenderer');
goog.require('ol.tilegrid.createOpenStreetMap');
goog.require('ol.tilelayer.createOpenStreetMap');
goog.require('ol.tilestore.createOpenStreetMap');
goog.require('ol.webgl');
goog.require('ol.webgl.LayerRenderer');
goog.require('ol.webgl.Map');
goog.require('ol.webgl.TileLayerRenderer');
goog.require('ol.webgl.WebGLContextEventType');
goog.require('ol.webgl.map.shader');
goog.require('ol.webgl.shader.Fragment');
goog.require('ol.webgl.shader.Vertex');

View File

@@ -0,0 +1,28 @@
goog.provide('ol.tilegrid.createOpenStreetMap');
goog.require('goog.math.Coordinate');
goog.require('goog.math.Size');
goog.require('ol.Projection');
goog.require('ol.TileGrid');
/**
* @param {number} maxZoom Maximum zoom.
* @return {ol.TileGrid} Tile grid.
*/
ol.tilegrid.createOpenStreetMap = function(maxZoom) {
var resolutions = new Array(maxZoom + 1);
var z;
for (z = 0; z <= maxZoom; ++z) {
resolutions[z] = ol.Projection.EPSG_3857_HALF_SIZE / (128 << z);
}
var extent = ol.Projection.EPSG_3857_EXTENT;
var origin = new goog.math.Coordinate(
-ol.Projection.EPSG_3857_HALF_SIZE, ol.Projection.EPSG_3857_HALF_SIZE);
var tileSize = new goog.math.Size(256, 256);
return new ol.TileGrid(resolutions, extent, origin, tileSize);
};

View File

@@ -1,11 +1,10 @@
goog.provide('ol.TileGrid');
goog.provide('ol.TileGrid.createOpenStreetMap');
goog.require('goog.array');
goog.require('goog.asserts');
goog.require('goog.math.Coordinate');
goog.require('goog.math.Size');
goog.require('ol.Extent');
goog.require('ol.Projection');
goog.require('ol.TileBounds');
goog.require('ol.TileCoord');
@@ -72,28 +71,6 @@ ol.TileGrid = function(resolutions, extent, origin, opt_tileSize) {
};
/**
* @param {number} maxZoom Maximum zoom.
* @return {ol.TileGrid} Tile grid.
*/
ol.TileGrid.createOpenStreetMap = function(maxZoom) {
var resolutions = new Array(maxZoom + 1);
var z;
for (z = 0; z <= maxZoom; ++z) {
resolutions[z] = ol.Projection.EPSG_3857_HALF_SIZE / (128 << z);
}
var extent = ol.Projection.EPSG_3857_EXTENT;
var origin = new goog.math.Coordinate(
-ol.Projection.EPSG_3857_HALF_SIZE, ol.Projection.EPSG_3857_HALF_SIZE);
var tileSize = new goog.math.Size(256, 256);
return new ol.TileGrid(resolutions, extent, origin, tileSize);
};
/**
* @param {ol.TileCoord} tileCoord Tile coordinate.
* @param {function(number, ol.TileBounds): boolean} callback Callback.

View File

@@ -24,13 +24,3 @@ goog.inherits(ol.TileLayer, ol.Layer);
ol.TileLayer.prototype.getStore = function() {
return /** @type {ol.TileStore} */ goog.base(this, 'getStore');
};
/**
* @param {Object.<string, *>=} opt_values Values.
* @return {ol.Layer} Layer.
*/
ol.TileLayer.createOpenStreetMap = function(opt_values) {
var store = ol.TileStore.createOpenStreetMap();
return new ol.TileLayer(store, opt_values);
};

View File

@@ -0,0 +1,15 @@
goog.provide('ol.tilelayer.createOpenStreetMap');
goog.require('ol.Layer');
goog.require('ol.TileLayer');
goog.require('ol.tilestore.createOpenStreetMap');
/**
* @param {Object.<string, *>=} opt_values Values.
* @return {ol.Layer} Layer.
*/
ol.tilelayer.createOpenStreetMap = function(opt_values) {
var store = ol.tilestore.createOpenStreetMap();
return new ol.TileLayer(store, opt_values);
};

View File

@@ -0,0 +1,48 @@
goog.provide('ol.tilestore.createOpenStreetMap');
goog.require('goog.math');
goog.require('ol.Projection');
goog.require('ol.TileCoord');
goog.require('ol.TileGrid');
goog.require('ol.TileStore');
goog.require('ol.TileUrlFunction');
goog.require('ol.tilegrid.createOpenStreetMap');
/**
* @return {ol.TileStore} Tile store.
*/
ol.tilestore.createOpenStreetMap = function() {
var projection = ol.Projection.createFromCode('EPSG:3857');
var tileGrid = ol.tilegrid.createOpenStreetMap(18);
var tileUrlFunction = ol.TileUrlFunction.withTileCoordTransform(
function(tileCoord) {
var n = 1 << tileCoord.z;
var y = -tileCoord.y - 1;
if (y < 0 || n <= y) {
return null;
} else {
var x = goog.math.modulo(tileCoord.x, n);
return new ol.TileCoord(tileCoord.z, x, y);
}
},
ol.TileUrlFunction.createFromTemplates([
'http://a.tile.openstreetmap.org/{z}/{x}/{y}.png',
'http://b.tile.openstreetmap.org/{z}/{x}/{y}.png',
'http://c.tile.openstreetmap.org/{z}/{x}/{y}.png'
]));
var extent = projection.getExtent();
var attribution =
'&copy; ' +
'<a href="http://www.openstreetmap.org">OpenStreetMap</a> ' +
'contributors, ' +
'<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC BY-SA</a>';
var crossOrigin = '';
return new ol.TileStore(
projection, tileGrid, tileUrlFunction, extent, attribution, crossOrigin);
};

View File

@@ -1,7 +1,5 @@
goog.provide('ol.TileStore');
goog.provide('ol.TileStore.createOpenStreetMap');
goog.require('goog.math');
goog.require('ol.Store');
goog.require('ol.Tile');
goog.require('ol.TileCoord');
@@ -55,43 +53,6 @@ ol.TileStore = function(projection, tileGrid, tileUrlFunction, opt_extent,
goog.inherits(ol.TileStore, ol.Store);
/**
* @return {ol.TileStore} Tile store.
*/
ol.TileStore.createOpenStreetMap = function() {
var projection = ol.Projection.createFromCode('EPSG:3857');
var tileGrid = ol.TileGrid.createOpenStreetMap(18);
var tileUrlFunction = ol.TileUrlFunction.withTileCoordTransform(
function(tileCoord) {
var n = 1 << tileCoord.z;
var y = -tileCoord.y - 1;
if (y < 0 || n <= y) {
return null;
} else {
var x = goog.math.modulo(tileCoord.x, n);
return new ol.TileCoord(tileCoord.z, x, y);
}
},
ol.TileUrlFunction.createFromTemplates([
'http://a.tile.openstreetmap.org/{z}/{x}/{y}.png',
'http://b.tile.openstreetmap.org/{z}/{x}/{y}.png',
'http://c.tile.openstreetmap.org/{z}/{x}/{y}.png'
]));
var extent = projection.getExtent();
var attribution =
'&copy; ' +
'<a href="http://www.openstreetmap.org">OpenStreetMap</a> ' +
'contributors, ' +
'<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC BY-SA</a>';
var crossOrigin = '';
return new ol.TileStore(
projection, tileGrid, tileUrlFunction, extent, attribution, crossOrigin);
};
/**
* @inheritDoc
*/

View File

@@ -1,6 +1,6 @@
goog.require('goog.testing.jsunit');
goog.require('ol.TileCoord');
goog.require('ol.TileStore.createOpenStreetMap');
goog.require('ol.tilestore.createOpenStreetMap');
function getTileCoordPart(tileUrl) {
@@ -10,7 +10,7 @@ function getTileCoordPart(tileUrl) {
function testOpenStreetMap() {
var tileStore = ol.TileStore.createOpenStreetMap(8);
var tileStore = ol.tilestore.createOpenStreetMap(8);
var tileGrid = tileStore.getTileGrid();
var coordinate =
@@ -43,7 +43,7 @@ function testOpenStreetMap() {
function testOpenStreetMapWrapX() {
var tileStore = ol.TileStore.createOpenStreetMap(8);
var tileStore = ol.tilestore.createOpenStreetMap(8);
tileUrl = tileStore.getTileCoordUrl(new ol.TileCoord(6, -31, -23));
assertEquals('6/33/22', getTileCoordPart(tileUrl));
@@ -59,7 +59,7 @@ function testOpenStreetMapWrapX() {
function testOpenStreetMapCropY() {
var tileStore = ol.TileStore.createOpenStreetMap(8);
var tileStore = ol.tilestore.createOpenStreetMap(8);
tileUrl = tileStore.getTileCoordUrl(new ol.TileCoord(6, 33, -87));
assertUndefined(tileUrl);

View File

@@ -1,7 +1,8 @@
// FIXME animated shaders! check in redraw
goog.provide('ol.webgl.TileLayerRenderer');
goog.provide('ol.webgl.tilelayerrenderer.shader');
goog.provide('ol.webgl.tilelayerrenderer.shader.Fragment');
goog.provide('ol.webgl.tilelayerrenderer.shader.Vertex');
goog.require('goog.asserts');
goog.require('goog.events.EventType');