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
View File
@@ -8,5 +8,7 @@
/examples/example-list.xml /examples/example-list.xml
/bin/plovr*.jar /bin/plovr*.jar
/jsdoc/ /jsdoc/
/ol.js
/ol-skeleton*.js
/plovr*.jar /plovr*.jar
/webgl-debug.js /webgl-debug.js
+44 -5
View File
@@ -53,19 +53,58 @@ space := $(empty) $(empty)
all: build webgl-debug.js all: build webgl-debug.js
.PHONY: build .PHONY: build
build: $(PLOVR_JAR) build: ol.js ol-skeleton.js ol-skeleton-debug.js ol-skeleton-dom.js ol-skeleton-webgl.js
java -jar $(PLOVR_JAR) build main.json >api.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 .PHONY: serve
serve: $(PLOVR_JAR) serve: $(PLOVR_JAR)
java -jar $(PLOVR_JAR) serve main.json java -jar $(PLOVR_JAR) serve *.json
.PHONY: lint .PHONY: lint
lint: $(CLOSURE_LINTER) lint:
gjslint --strict --limited_doc_files=$(subst $(space),$(comma),$(shell find externs -name \*.js)) $(filter-out $(GSLINT_EXCLUDES),$(shell find externs src -name \*.js)) 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: webgl-debug.js:
curl https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/debug/webgl-debug.js > $@ curl https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/debug/webgl-debug.js > $@
$(PLOVR_JAR): $(PLOVR_JAR):
curl http://plovr.googlecode.com/files/$(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
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
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
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
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
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"
}
}
+1 -18
View File
@@ -12,23 +12,6 @@
</head> </head>
<body> <body>
<div id="map"></div> <div id="map"></div>
<script src="http://localhost:9810/compile?id=ol&mode=RAW" type="text/javascript"></script> <script src="http://localhost:9810/compile?id=ol-skeleton" 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>
</body> </body>
</html> </html>
+20
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);
+16
View File
@@ -1,12 +1,17 @@
goog.provide('ol'); goog.provide('ol');
goog.require('ol.Array'); goog.require('ol.Array');
goog.require('ol.ArrayEvent');
goog.require('ol.ArrayEventType');
goog.require('ol.Extent'); goog.require('ol.Extent');
goog.require('ol.Layer'); goog.require('ol.Layer');
goog.require('ol.LayerProperty');
goog.require('ol.LayerRenderer'); goog.require('ol.LayerRenderer');
goog.require('ol.Map'); goog.require('ol.Map');
goog.require('ol.MapProperty');
goog.require('ol.Object'); goog.require('ol.Object');
goog.require('ol.Projection'); goog.require('ol.Projection');
goog.require('ol.Rectangle');
goog.require('ol.Store'); goog.require('ol.Store');
goog.require('ol.Tile'); goog.require('ol.Tile');
goog.require('ol.TileBounds'); goog.require('ol.TileBounds');
@@ -19,6 +24,17 @@ goog.require('ol.TileUrlFunctionType');
goog.require('ol.TransformFunction'); goog.require('ol.TransformFunction');
goog.require('ol.createMap'); goog.require('ol.createMap');
goog.require('ol.dom'); goog.require('ol.dom');
goog.require('ol.dom.LayerRenderer');
goog.require('ol.dom.Map'); 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');
goog.require('ol.webgl.LayerRenderer');
goog.require('ol.webgl.Map'); 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');
+28
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);
};
@@ -1,11 +1,10 @@
goog.provide('ol.TileGrid'); goog.provide('ol.TileGrid');
goog.provide('ol.TileGrid.createOpenStreetMap');
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.math.Coordinate');
goog.require('goog.math.Size'); goog.require('goog.math.Size');
goog.require('ol.Extent'); goog.require('ol.Extent');
goog.require('ol.Projection');
goog.require('ol.TileBounds'); goog.require('ol.TileBounds');
goog.require('ol.TileCoord'); 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 {ol.TileCoord} tileCoord Tile coordinate.
* @param {function(number, ol.TileBounds): boolean} callback Callback. * @param {function(number, ol.TileBounds): boolean} callback Callback.
-10
View File
@@ -24,13 +24,3 @@ goog.inherits(ol.TileLayer, ol.Layer);
ol.TileLayer.prototype.getStore = function() { ol.TileLayer.prototype.getStore = function() {
return /** @type {ol.TileStore} */ goog.base(this, 'getStore'); 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);
};
+15
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);
};
+48
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);
};
@@ -1,7 +1,5 @@
goog.provide('ol.TileStore'); goog.provide('ol.TileStore');
goog.provide('ol.TileStore.createOpenStreetMap');
goog.require('goog.math');
goog.require('ol.Store'); goog.require('ol.Store');
goog.require('ol.Tile'); goog.require('ol.Tile');
goog.require('ol.TileCoord'); goog.require('ol.TileCoord');
@@ -55,43 +53,6 @@ ol.TileStore = function(projection, tileGrid, tileUrlFunction, opt_extent,
goog.inherits(ol.TileStore, ol.Store); 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 * @inheritDoc
*/ */
@@ -1,6 +1,6 @@
goog.require('goog.testing.jsunit'); goog.require('goog.testing.jsunit');
goog.require('ol.TileCoord'); goog.require('ol.TileCoord');
goog.require('ol.TileStore.createOpenStreetMap'); goog.require('ol.tilestore.createOpenStreetMap');
function getTileCoordPart(tileUrl) { function getTileCoordPart(tileUrl) {
@@ -10,7 +10,7 @@ function getTileCoordPart(tileUrl) {
function testOpenStreetMap() { function testOpenStreetMap() {
var tileStore = ol.TileStore.createOpenStreetMap(8); var tileStore = ol.tilestore.createOpenStreetMap(8);
var tileGrid = tileStore.getTileGrid(); var tileGrid = tileStore.getTileGrid();
var coordinate = var coordinate =
@@ -43,7 +43,7 @@ function testOpenStreetMap() {
function testOpenStreetMapWrapX() { function testOpenStreetMapWrapX() {
var tileStore = ol.TileStore.createOpenStreetMap(8); var tileStore = ol.tilestore.createOpenStreetMap(8);
tileUrl = tileStore.getTileCoordUrl(new ol.TileCoord(6, -31, -23)); tileUrl = tileStore.getTileCoordUrl(new ol.TileCoord(6, -31, -23));
assertEquals('6/33/22', getTileCoordPart(tileUrl)); assertEquals('6/33/22', getTileCoordPart(tileUrl));
@@ -59,7 +59,7 @@ function testOpenStreetMapWrapX() {
function testOpenStreetMapCropY() { function testOpenStreetMapCropY() {
var tileStore = ol.TileStore.createOpenStreetMap(8); var tileStore = ol.tilestore.createOpenStreetMap(8);
tileUrl = tileStore.getTileCoordUrl(new ol.TileCoord(6, 33, -87)); tileUrl = tileStore.getTileCoordUrl(new ol.TileCoord(6, 33, -87));
assertUndefined(tileUrl); assertUndefined(tileUrl);
+2 -1
View File
@@ -1,7 +1,8 @@
// FIXME animated shaders! check in redraw // FIXME animated shaders! check in redraw
goog.provide('ol.webgl.TileLayerRenderer'); 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.asserts');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');