From 546f1f4b9f9083cf376ec19dde1ebd82ee11cd2d Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Wed, 26 Sep 2012 18:22:40 +0200 Subject: [PATCH] Add initial exports and externs --- .gitignore | 1 + Makefile | 20 ++++-- build/ol-all.json | 11 +++ build/ol.json | 15 +++- exports/ol/layer/bingmaps.js | 3 + exports/ol/layer/mapquest.js | 5 ++ exports/ol/layer/openstreetmap.js | 3 + exports/ol/layer/stamen.js | 3 + exports/ol/layer/tilejson.js | 3 + exports/ol/map.js | 37 ++++++++++ externs/ol.js | 112 ++++++++++++++++++++++++++++++ 11 files changed, 205 insertions(+), 8 deletions(-) create mode 100644 build/ol-all.json create mode 100644 exports/ol/layer/bingmaps.js create mode 100644 exports/ol/layer/mapquest.js create mode 100644 exports/ol/layer/openstreetmap.js create mode 100644 exports/ol/layer/stamen.js create mode 100644 exports/ol/layer/tilejson.js create mode 100644 exports/ol/map.js create mode 100644 externs/ol.js diff --git a/.gitignore b/.gitignore index 5de532838f..9c2c25d714 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ /build/ol.js /build/ol-all.js /build/proj4js-combined.js +/build/require-all.js /build/apidoc /demos/*/advanced-optimizations.* /demos/*/build.html diff --git a/Makefile b/Makefile index 176ec02e13..c0f6d21972 100644 --- a/Makefile +++ b/Makefile @@ -8,21 +8,26 @@ empty := space := $(empty) $(empty) .PHONY: all -all: build demos +all: build-all build demos .PHONY: precommit -precommit: lint test build +precommit: lint build-all test build .PHONY: build build: build/ol.js -build/ol.js: $(PLOVR_JAR) $(SRC) base.json \ - build/ol.json build/ol-all.js +build/ol.js: $(PLOVR_JAR) $(SRC) base.json build/ol.json java -jar $(PLOVR_JAR) build build/ol.json >$@ @echo $@ "uncompressed:" $$(wc -c <$@) bytes @echo $@ " compressed:" $$(gzip -9 -c <$@ | wc -c) bytes -build/ol-all.js: $(SRC) +.PHONY: build-all +build-all: build/ol-all.js + +build/ol-all.js: $(PLOVR_JAR) $(SRC) base.json build/ol-all.json build/require-all.js + java -jar $(PLOVR_JAR) build build/ol-all.json >$@ || ( rm -f $@ ; false ) + +build/require-all.js: $(SRC) ( echo "goog.require('goog.dom');" ; find src/ol -name \*.js | xargs grep -rh ^goog.provide | sort | uniq | sed -e 's/provide/require/g' ) >$@ .PHONY: demos @@ -95,8 +100,8 @@ demos/two-layers/index.html: demos/two-layers/template.html.in sed -e 's|@SRC@|../loader.js?id=demo-two-layers|' $< >$@ .PHONY: serve -serve: $(PLOVR_JAR) build/ol-all.js - java -jar $(PLOVR_JAR) serve build/ol.json demos/*/*.json +serve: $(PLOVR_JAR) build/require-all.js + java -jar $(PLOVR_JAR) serve build/*.json demos/*/*.json .PHONY: lint lint: @@ -120,6 +125,7 @@ test: clean: rm -f build/ol.js rm -f build/ol-all.js + rm -f build/require-all.js rm -f demos/*/*.html rm -f demos/*/advanced-optimizations.* rm -rf build/apidoc diff --git a/build/ol-all.json b/build/ol-all.json new file mode 100644 index 0000000000..0a7bb8e5a5 --- /dev/null +++ b/build/ol-all.json @@ -0,0 +1,11 @@ +{ + + "id": "ol-all", + + "inherits": "../base.json", + + "inputs": [ + "build/require-all.js" + ] + +} diff --git a/build/ol.json b/build/ol.json index 2de7211b67..2e31ab730c 100644 --- a/build/ol.json +++ b/build/ol.json @@ -2,13 +2,26 @@ "id": "ol", + "externs": [ + "externs/bingmaps.js", + "externs/ol.js", + "externs/proj4js.js", + "externs/tilejson.js" + ], + "inherits": "../base.json", "inputs": [ - "build/ol-all.js", + "src/ol/mapoptions.js", "exports/ol/collection.js", "exports/ol/coordinate.js", "exports/ol/extent.js", + "exports/ol/layer/bingmaps.js", + "exports/ol/layer/mapquest.js", + "exports/ol/layer/openstreetmap.js", + "exports/ol/layer/tilejson.js", + "exports/ol/layer/stamen.js", + "exports/ol/map.js", "exports/ol/object.js", "exports/ol/projection.js" ], diff --git a/exports/ol/layer/bingmaps.js b/exports/ol/layer/bingmaps.js new file mode 100644 index 0000000000..c88492ea7a --- /dev/null +++ b/exports/ol/layer/bingmaps.js @@ -0,0 +1,3 @@ +goog.require('ol.layer.BingMaps'); + +goog.exportSymbol('ol.layer.BingMaps', ol.layer.BingMaps); diff --git a/exports/ol/layer/mapquest.js b/exports/ol/layer/mapquest.js new file mode 100644 index 0000000000..647e909861 --- /dev/null +++ b/exports/ol/layer/mapquest.js @@ -0,0 +1,5 @@ +goog.require('ol.layer.MapQuestOSM'); +goog.require('ol.layer.MapQuestOpenAerial'); + +goog.exportSymbol('ol.layer.MapQuestOSM', ol.layer.MapQuestOSM); +goog.exportSymbol('ol.layer.MapQuestOpenAerial', ol.layer.MapQuestOpenAerial); diff --git a/exports/ol/layer/openstreetmap.js b/exports/ol/layer/openstreetmap.js new file mode 100644 index 0000000000..876d559b89 --- /dev/null +++ b/exports/ol/layer/openstreetmap.js @@ -0,0 +1,3 @@ +goog.require('ol.layer.OpenStreetMap'); + +goog.exportSymbol('ol.layer.OpenStreetMap', ol.layer.OpenStreetMap); diff --git a/exports/ol/layer/stamen.js b/exports/ol/layer/stamen.js new file mode 100644 index 0000000000..618bee1b52 --- /dev/null +++ b/exports/ol/layer/stamen.js @@ -0,0 +1,3 @@ +goog.require('ol.layer.Stamen'); + +goog.exportSymbol('ol.layer.Stamen', ol.layer.Stamen); diff --git a/exports/ol/layer/tilejson.js b/exports/ol/layer/tilejson.js new file mode 100644 index 0000000000..4873692496 --- /dev/null +++ b/exports/ol/layer/tilejson.js @@ -0,0 +1,3 @@ +goog.require('ol.layer.TileJSON'); + +goog.exportSymbol('ol.layer.TileJSON', ol.layer.TileJSON); diff --git a/exports/ol/map.js b/exports/ol/map.js new file mode 100644 index 0000000000..0519af9113 --- /dev/null +++ b/exports/ol/map.js @@ -0,0 +1,37 @@ +goog.require('ol.Map'); + + + +/** + * @constructor + * @extends {ol.Map} + * @param {Element} container Container. + * @param {olx.MapOptionsExtern} mapOptionsExtern Map options literal. + * @param {goog.dom.ViewportSizeMonitor=} opt_viewportSizeMonitor + * Viewport size monitor. + */ +ol.MapExport = function(container, mapOptionsExtern, opt_viewportSizeMonitor) { + + goog.base(this, container, { + center: mapOptionsExtern.center, + doubleClickZoom: mapOptionsExtern.doubleClickZoom, + dragPan: mapOptionsExtern.dragPan, + interactions: mapOptionsExtern.interactions, + keyboard: mapOptionsExtern.keyboard, + keyboardPanOffset: mapOptionsExtern.keyboardPanOffset, + layers: mapOptionsExtern.layers, + mouseWheelZoom: mapOptionsExtern.mouseWheelZoom, + projection: mapOptionsExtern.projection, + renderer: mapOptionsExtern.renderer, + renderers: mapOptionsExtern.renderers, + resolution: mapOptionsExtern.resolution, + rotate: mapOptionsExtern.rotate, + shiftDragZoom: mapOptionsExtern.shiftDragZoom, + userProjection: mapOptionsExtern.userProjection, + zoom: mapOptionsExtern.zoom + }, opt_viewportSizeMonitor); + +}; +goog.inherits(ol.MapExport, ol.Map); + +goog.exportSymbol('ol.Map', ol.MapExport); diff --git a/externs/ol.js b/externs/ol.js new file mode 100644 index 0000000000..f1f2b5227d --- /dev/null +++ b/externs/ol.js @@ -0,0 +1,112 @@ +/** + * @externs + */ + + +/** + * @type {Object} + */ +var olx; + + + +/** + * @interface + */ +olx.MapOptionsExtern = function() {}; + + +/** + * @type {ol.Coordinate|undefined} + */ +olx.MapOptionsExtern.prototype.center; + + +/** + * @type {boolean|undefined} + */ +olx.MapOptionsExtern.prototype.doubleClickZoom; + + +/** + * @type {boolean|undefined} + */ +olx.MapOptionsExtern.prototype.dragPan; + + +/** + * @type {ol.Collection|undefined} + */ +olx.MapOptionsExtern.prototype.interactions; + + +/** + * @type {boolean|undefined} + */ +olx.MapOptionsExtern.prototype.keyboard; + + +/** + * @type {number|undefined} + */ +olx.MapOptionsExtern.prototype.keyboardPanOffset; + + +/** + * @type {ol.Collection|undefined} + */ +olx.MapOptionsExtern.prototype.layers; + + +/** + * @type {boolean|undefined} + */ +olx.MapOptionsExtern.prototype.mouseWheelZoom; + + +/** + * @type {ol.Projection|string|undefined} + */ +olx.MapOptionsExtern.prototype.projection; + + +/** + * @type {ol.RendererHint|undefined} + */ +olx.MapOptionsExtern.prototype.renderer; + + +/** + * @type {Array.|undefined} + */ +olx.MapOptionsExtern.prototype.renderers; + + +/** + * @type {number|undefined} + */ +olx.MapOptionsExtern.prototype.resolution; + + +/** + * @type {boolean|undefined} + */ +olx.MapOptionsExtern.prototype.rotate; + + +/** + * @type {boolean|undefined} + */ +olx.MapOptionsExtern.prototype.shiftDragZoom; + + +/** + * @type {ol.Projection|string|undefined} + */ +olx.MapOptionsExtern.prototype.userProjection; + + +/** + * @type {number|undefined} + */ +olx.MapOptionsExtern.prototype.zoom;