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

2
.gitignore vendored
View File

@@ -8,5 +8,7 @@
/examples/example-list.xml
/bin/plovr*.jar
/jsdoc/
/ol.js
/ol-skeleton*.js
/plovr*.jar
/webgl-debug.js

View File

@@ -53,19 +53,58 @@ space := $(empty) $(empty)
all: build webgl-debug.js
.PHONY: build
build: $(PLOVR_JAR)
java -jar $(PLOVR_JAR) build main.json >api.js
build: ol.js ol-skeleton.js ol-skeleton-debug.js ol-skeleton-dom.js ol-skeleton-webgl.js
.PHONY: ol.js
ol.js: $(PLOVR_JAR)
java -jar $(PLOVR_JAR) build $(basename $@).json >$@
@echo $@ "uncompressed:" $(shell wc -c <$@) bytes
@echo $@ " compressed:" $(shell gzip -9 -c <$@ | wc -c) bytes
.PHONY: ol-skeleton.js
ol-skeleton.js: $(PLOVR_JAR)
java -jar $(PLOVR_JAR) build $(basename $@).json >$@
@echo $@ "uncompressed:" $(shell wc -c <$@) bytes
@echo $@ " compressed:" $(shell gzip -9 -c <$@ | wc -c) bytes
.PHONY: ol-skeleton-debug.js
ol-skeleton-debug.js: $(PLOVR_JAR)
java -jar $(PLOVR_JAR) build $(basename $@).json >$@
@echo $@ "uncompressed:" $(shell wc -c <$@) bytes
@echo $@ " compressed:" $(shell gzip -9 -c <$@ | wc -c) bytes
.PHONY: ol-skeleton-dom.js
ol-skeleton-dom.js: $(PLOVR_JAR)
java -jar $(PLOVR_JAR) build $(basename $@).json >$@
@echo $@ "uncompressed:" $(shell wc -c <$@) bytes
@echo $@ " compressed:" $(shell gzip -9 -c <$@ | wc -c) bytes
.PHONY: ol-skeleton-webgl.js
ol-skeleton-webgl.js: $(PLOVR_JAR)
java -jar $(PLOVR_JAR) build $(basename $@).json >$@
@echo $@ "uncompressed:" $(shell wc -c <$@) bytes
@echo $@ " compressed:" $(shell gzip -9 -c <$@ | wc -c) bytes
.PHONY: serve
serve: $(PLOVR_JAR)
java -jar $(PLOVR_JAR) serve main.json
java -jar $(PLOVR_JAR) serve *.json
.PHONY: lint
lint: $(CLOSURE_LINTER)
gjslint --strict --limited_doc_files=$(subst $(space),$(comma),$(shell find externs -name \*.js)) $(filter-out $(GSLINT_EXCLUDES),$(shell find externs src -name \*.js))
lint:
gjslint --strict --limited_doc_files=$(subst $(space),$(comma),$(shell find externs -name \*.js)) $(filter-out $(GSLINT_EXCLUDES),$(shell find externs src -name \*.js)) skeleton.js
webgl-debug.js:
curl https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/debug/webgl-debug.js > $@
$(PLOVR_JAR):
curl http://plovr.googlecode.com/files/$(PLOVR_JAR) > $@
clean:
rm -f ol-skeleton.js
rm -f ol-skeleton-debug.js
rm -f ol-skeleton-dom.js
rm -f ol-skeleton-webgl.js
reallyclean: clean
rm -f $(PLOVR_JAR)
rm -f webgl-debug.js

36
ol-skeleton-debug.json Normal file
View File

@@ -0,0 +1,36 @@
{
"id": "ol-skeleton-debug",
"inputs": "skeleton.js",
"paths": [
"src"
],
"define": {
"goog.dom.ASSUME_STANDARDS_MODE": true,
"goog.DEBUG": true
},
"externs": [
"externs/webgl-debug.js"
],
"mode": "ADVANCED",
"level": "VERBOSE",
"checks": {
"accessControls": "ERROR",
"visibility": "ERROR",
"checkTypes": "ERROR",
"checkRegExp": "ERROR",
"checkVars": "ERROR",
"deprecated": "ERROR",
"fileoverviewTags": "ERROR",
"invalidCasts": "ERROR",
"missingProperties": "ERROR",
"nonStandardJsDocs": "ERROR",
"undefinedVars": "ERROR"
}
}

38
ol-skeleton-dom.json Normal file
View File

@@ -0,0 +1,38 @@
{
"id": "ol-skeleton-dom",
"inputs": "skeleton.js",
"paths": [
"src"
],
"define": {
"goog.dom.ASSUME_STANDARDS_MODE": true,
"ol.ENABLE_DOM": true,
"ol.ENABLE_WEBGL": false,
"goog.DEBUG": false
},
"externs": [
"externs/webgl-debug.js"
],
"mode": "ADVANCED",
"level": "VERBOSE",
"checks": {
"accessControls": "ERROR",
"visibility": "ERROR",
"checkTypes": "ERROR",
"checkRegExp": "ERROR",
"checkVars": "ERROR",
"deprecated": "ERROR",
"fileoverviewTags": "ERROR",
"invalidCasts": "ERROR",
"missingProperties": "ERROR",
"nonStandardJsDocs": "ERROR",
"undefinedVars": "ERROR"
}
}

38
ol-skeleton-webgl.json Normal file
View File

@@ -0,0 +1,38 @@
{
"id": "ol-skeleton-webgl",
"inputs": "skeleton.js",
"paths": [
"src"
],
"define": {
"goog.dom.ASSUME_STANDARDS_MODE": true,
"ol.ENABLE_DOM": false,
"ol.ENABLE_WEBGL": true,
"goog.DEBUG": false
},
"externs": [
"externs/webgl-debug.js"
],
"mode": "ADVANCED",
"level": "VERBOSE",
"checks": {
"accessControls": "ERROR",
"visibility": "ERROR",
"checkTypes": "ERROR",
"checkRegExp": "ERROR",
"checkVars": "ERROR",
"deprecated": "ERROR",
"fileoverviewTags": "ERROR",
"invalidCasts": "ERROR",
"missingProperties": "ERROR",
"nonStandardJsDocs": "ERROR",
"undefinedVars": "ERROR"
}
}

36
ol-skeleton.json Normal file
View File

@@ -0,0 +1,36 @@
{
"id": "ol-skeleton",
"inputs": "skeleton.js",
"paths": [
"src"
],
"define": {
"goog.dom.ASSUME_STANDARDS_MODE": true,
"goog.DEBUG": false
},
"externs": [
"externs/webgl-debug.js"
],
"mode": "ADVANCED",
"level": "VERBOSE",
"checks": {
"accessControls": "ERROR",
"visibility": "ERROR",
"checkTypes": "ERROR",
"checkRegExp": "ERROR",
"checkVars": "ERROR",
"deprecated": "ERROR",
"fileoverviewTags": "ERROR",
"invalidCasts": "ERROR",
"missingProperties": "ERROR",
"nonStandardJsDocs": "ERROR",
"undefinedVars": "ERROR"
}
}

36
ol.json Normal file
View File

@@ -0,0 +1,36 @@
{
"id": "ol",
"inputs": "src/ol/ol.js",
"paths": [
"src"
],
"define": {
"goog.dom.ASSUME_STANDARDS_MODE": true,
"goog.DEBUG": false
},
"externs": [
"externs/webgl-debug.js"
],
"mode": "ADVANCED",
"level": "VERBOSE",
"checks": {
"accessControls": "ERROR",
"visibility": "ERROR",
"checkTypes": "ERROR",
"checkRegExp": "ERROR",
"checkVars": "ERROR",
"deprecated": "ERROR",
"fileoverviewTags": "ERROR",
"invalidCasts": "ERROR",
"missingProperties": "ERROR",
"nonStandardJsDocs": "ERROR",
"undefinedVars": "ERROR"
}
}

View File

@@ -12,23 +12,6 @@
</head>
<body>
<div id="map"></div>
<script src="http://localhost:9810/compile?id=ol&mode=RAW" type="text/javascript"></script>
<script>
var target = document.getElementById('map');
var map = ol.createMap(target);
var layer = ol.TileLayer.createOpenStreetMap({
'opacity': 0.5,
'visible': true
});
map.getLayers().push(layer);
var maxResolution = layer.getStore().getResolutions()[0];
map.setCenter(new goog.math.Coordinate(0, 0));
map.setResolution(maxResolution);
</script>
<script src="http://localhost:9810/compile?id=ol-skeleton" type="text/javascript"></script>
</body>
</html>

20
skeleton.js Normal file
View File

@@ -0,0 +1,20 @@
goog.require('goog.math.Coordinate');
goog.require('goog.object');
goog.require('ol.createMap');
goog.require('ol.tilelayer.createOpenStreetMap');
var target = /** @type {!HTMLDivElement} */ document.getElementById('map');
var map = ol.createMap(target);
var layer = ol.tilelayer.createOpenStreetMap({
'opacity': 0.5
});
map.getLayers().push(layer);
var resolutions = layer.getStore().getResolutions();
map.setCenter(new goog.math.Coordinate(0, 0));
map.setResolution(resolutions[0]);
goog.exportSymbol('layer', layer);
goog.exportSymbol('map', map);

View File

@@ -1,12 +1,17 @@
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');
@@ -19,6 +24,17 @@ 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');