diff --git a/config/example.json b/config/example.json index dff7c67e16..ee41151bf4 100644 --- a/config/example.json +++ b/config/example.json @@ -28,12 +28,14 @@ ], "jscomp_off": [ "lintChecks", + "analyzerChecks", "missingProvide", "unknownDefines" ], "extra_annotation_name": [ "api", "observable" ], + "rewrite_polyfills": "false", "compilation_level": "ADVANCED", "warning_level": "VERBOSE", "output_wrapper": "(function(){%output%})();", diff --git a/config/examples-all.json b/config/examples-all.json index 3c66049069..253554441b 100644 --- a/config/examples-all.json +++ b/config/examples-all.json @@ -27,11 +27,14 @@ "*" ], "jscomp_off": [ - "lintChecks" + "lintChecks", + "analyzerChecks", + "unusedLocalVariables" ], "extra_annotation_name": [ "api", "observable" ], + "rewrite_polyfills": "false", "compilation_level": "ADVANCED", "warning_level": "VERBOSE", "output_wrapper": "(function(){%output%})();", diff --git a/config/ol.json b/config/ol.json index 044957ae2c..d0479e5b70 100644 --- a/config/ol.json +++ b/config/ol.json @@ -21,11 +21,13 @@ "*" ], "jscomp_off": [ - "lintChecks" + "lintChecks", + "analyzerChecks" ], "extra_annotation_name": [ "api", "observable" ], + "rewrite_polyfills": "false", "compilation_level": "ADVANCED", "warning_level": "VERBOSE", "use_types_for_optimization": true, diff --git a/doc/tutorials/closure.md b/doc/tutorials/closure.md index 723b915003..6e3f26cafd 100644 --- a/doc/tutorials/closure.md +++ b/doc/tutorials/closure.md @@ -178,6 +178,7 @@ The minimum config file looks like this: "extra_annotation_name": [ "api", "observable" ], + "rewrite_polyfills": "false", "compilation_level": "ADVANCED", "warning_level": "VERBOSE", "output_wrapper": "(function(){%output%})();", @@ -230,7 +231,8 @@ Here is a version of `config.json` with more compilation checks enabled: ], "jscomp_off": [ "unknownDefines", - "lintChecks" + "lintChecks", + "analyzerChecks" ], "extra_annotation_name": [ "api", "observable" diff --git a/externs/closure-compiler.js b/externs/closure-compiler.js index 973d47cf54..763c409f16 100644 --- a/externs/closure-compiler.js +++ b/externs/closure-compiler.js @@ -7,23 +7,3 @@ * * @externs */ - - -// see https://github.com/google/closure-compiler/pull/1991 - -/** - * @param {*} arg - * @return {boolean} - * @nosideeffects - * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView - */ -ArrayBuffer.isView = function(arg) {}; - - -// see https://github.com/google/closure-compiler/pull/1206 - -/** - * @type {string} - * @see http://www.w3.org/TR/pointerevents/#the-touch-action-css-property - */ -CSSProperties.prototype.touchAction; diff --git a/package.json b/package.json index 8da150a2a4..78b9d813e8 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "dependencies": { "async": "2.1.4", "browserify": "13.1.1", - "closure-util": "1.15.1", + "closure-util": "1.17.0", "derequire": "2.0.6", "fs-extra": "1.0.0", "glob": "7.1.1", diff --git a/src/ol/control/control.js b/src/ol/control/control.js index eaaefbfc7f..8f7ffb176b 100644 --- a/src/ol/control/control.js +++ b/src/ol/control/control.js @@ -101,6 +101,7 @@ ol.control.Control.prototype.getMap = function() { * Subclasses may set up event handlers to get notified about changes to * the map here. * @param {ol.Map} map Map. + * @override * @api stable */ ol.control.Control.prototype.setMap = function(map) { diff --git a/src/ol/events/event.js b/src/ol/events/event.js index 90301d236b..6b571364f9 100644 --- a/src/ol/events/event.js +++ b/src/ol/events/event.js @@ -42,6 +42,7 @@ ol.events.Event = function(type) { /** * Stop event propagation. * @function + * @override * @api stable */ ol.events.Event.prototype.preventDefault = @@ -49,6 +50,7 @@ ol.events.Event.prototype.preventDefault = /** * Stop event propagation. * @function + * @override * @api stable */ ol.events.Event.prototype.stopPropagation = function() { diff --git a/src/ol/format/esrijson.js b/src/ol/format/esrijson.js index a304cacec9..ce0e5e6d1a 100644 --- a/src/ol/format/esrijson.js +++ b/src/ol/format/esrijson.js @@ -582,6 +582,7 @@ ol.format.EsriJSON.prototype.writeGeometry; * @param {ol.geom.Geometry} geometry Geometry. * @param {olx.format.WriteOptions=} opt_options Write options. * @return {EsriJSONGeometry} Object. + * @override * @api */ ol.format.EsriJSON.prototype.writeGeometryObject = function(geometry, @@ -609,6 +610,7 @@ ol.format.EsriJSON.prototype.writeFeature; * @param {ol.Feature} feature Feature. * @param {olx.format.WriteOptions=} opt_options Write options. * @return {Object} Object. + * @override * @api */ ol.format.EsriJSON.prototype.writeFeatureObject = function( @@ -655,6 +657,7 @@ ol.format.EsriJSON.prototype.writeFeatures; * @param {Array.} features Features. * @param {olx.format.WriteOptions=} opt_options Write options. * @return {Object} EsriJSON Object. + * @override * @api */ ol.format.EsriJSON.prototype.writeFeaturesObject = function(features, opt_options) { diff --git a/src/ol/format/feature.js b/src/ol/format/feature.js index 6a4f30b2c9..770da1dcc3 100644 --- a/src/ol/format/feature.js +++ b/src/ol/format/feature.js @@ -15,6 +15,7 @@ goog.require('ol.proj'); * file formats. See the documentation for each format for more details. * * @constructor + * @abstract * @api stable */ ol.format.Feature = function() { diff --git a/src/ol/format/filter/logicalnary.js b/src/ol/format/filter/logicalnary.js index fd19fe8909..530c5e4d4f 100644 --- a/src/ol/format/filter/logicalnary.js +++ b/src/ol/format/filter/logicalnary.js @@ -1,6 +1,7 @@ goog.provide('ol.format.filter.LogicalNary'); goog.require('ol'); +goog.require('ol.asserts'); goog.require('ol.format.filter.Filter'); diff --git a/src/ol/format/geojson.js b/src/ol/format/geojson.js index f93175eb6d..172814154b 100644 --- a/src/ol/format/geojson.js +++ b/src/ol/format/geojson.js @@ -479,6 +479,7 @@ ol.format.GeoJSON.prototype.readProjectionFromObject = function(object) { * @param {ol.Feature} feature Feature. * @param {olx.format.WriteOptions=} opt_options Write options. * @return {string} GeoJSON. + * @override * @api stable */ ol.format.GeoJSON.prototype.writeFeature; @@ -490,6 +491,7 @@ ol.format.GeoJSON.prototype.writeFeature; * @param {ol.Feature} feature Feature. * @param {olx.format.WriteOptions=} opt_options Write options. * @return {GeoJSONFeature} Object. + * @override * @api stable */ ol.format.GeoJSON.prototype.writeFeatureObject = function(feature, opt_options) { @@ -538,6 +540,7 @@ ol.format.GeoJSON.prototype.writeFeatures; * @param {Array.} features Features. * @param {olx.format.WriteOptions=} opt_options Write options. * @return {GeoJSONFeatureCollection} GeoJSON Object. + * @override * @api stable */ ol.format.GeoJSON.prototype.writeFeaturesObject = function(features, opt_options) { @@ -572,6 +575,7 @@ ol.format.GeoJSON.prototype.writeGeometry; * @param {ol.geom.Geometry} geometry Geometry. * @param {olx.format.WriteOptions=} opt_options Write options. * @return {GeoJSONGeometry|GeoJSONGeometryCollection} Object. + * @override * @api stable */ ol.format.GeoJSON.prototype.writeGeometryObject = function(geometry, diff --git a/src/ol/format/gml3.js b/src/ol/format/gml3.js index 01e745d6c8..531ef3fccf 100644 --- a/src/ol/format/gml3.js +++ b/src/ol/format/gml3.js @@ -1162,6 +1162,7 @@ ol.format.GML3.prototype.GEOMETRY_NODE_FACTORY_ = function(value, objectStack, o * @param {ol.geom.Geometry} geometry Geometry. * @param {olx.format.WriteOptions=} opt_options Options. * @return {Node} Node. + * @override * @api */ ol.format.GML3.prototype.writeGeometryNode = function(geometry, opt_options) { @@ -1196,6 +1197,7 @@ ol.format.GML3.prototype.writeFeatures; * @param {Array.} features Features. * @param {olx.format.WriteOptions=} opt_options Options. * @return {Node} Node. + * @override * @api */ ol.format.GML3.prototype.writeFeaturesNode = function(features, opt_options) { diff --git a/src/ol/format/gmlbase.js b/src/ol/format/gmlbase.js index ef90cc412e..257122155c 100644 --- a/src/ol/format/gmlbase.js +++ b/src/ol/format/gmlbase.js @@ -31,6 +31,7 @@ goog.require('ol.xml'); * ol.format.GML3. * * @constructor + * @abstract * @param {olx.format.GMLOptions=} opt_options * Optional configuration object. * @extends {ol.format.XMLFeature} diff --git a/src/ol/format/gpx.js b/src/ol/format/gpx.js index b7b1340607..cbca26a1b4 100644 --- a/src/ol/format/gpx.js +++ b/src/ol/format/gpx.js @@ -926,6 +926,7 @@ ol.format.GPX.prototype.writeFeatures; * @param {Array.} features Features. * @param {olx.format.WriteOptions=} opt_options Options. * @return {Node} Node. + * @override * @api */ ol.format.GPX.prototype.writeFeaturesNode = function(features, opt_options) { diff --git a/src/ol/format/igc.js b/src/ol/format/igc.js index 34af4fcf71..19db22cf4d 100644 --- a/src/ol/format/igc.js +++ b/src/ol/format/igc.js @@ -202,3 +202,31 @@ ol.format.IGC.prototype.readFeaturesFromText = function(text, opt_options) { * @api */ ol.format.IGC.prototype.readProjection; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.IGC.prototype.writeFeatureText = function(feature, opt_options) {}; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.IGC.prototype.writeFeaturesText = function(features, opt_options) {}; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.IGC.prototype.writeGeometryText = function(geometry, opt_options) {}; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.IGC.prototype.readGeometryFromText = function(text, opt_options) {}; diff --git a/src/ol/format/jsonfeature.js b/src/ol/format/jsonfeature.js index 7439c08e6b..95ec963001 100644 --- a/src/ol/format/jsonfeature.js +++ b/src/ol/format/jsonfeature.js @@ -12,6 +12,7 @@ goog.require('ol.format.FormatType'); * Base class for JSON feature formats. * * @constructor + * @abstract * @extends {ol.format.Feature} */ ol.format.JSONFeature = function() { diff --git a/src/ol/format/kml.js b/src/ol/format/kml.js index 49583d6075..3107de95e8 100644 --- a/src/ol/format/kml.js +++ b/src/ol/format/kml.js @@ -3018,6 +3018,7 @@ ol.format.KML.prototype.writeFeatures; * @param {Array.} features Features. * @param {olx.format.WriteOptions=} opt_options Options. * @return {Node} Node. + * @override * @api */ ol.format.KML.prototype.writeFeaturesNode = function(features, opt_options) { diff --git a/src/ol/format/mvt.js b/src/ol/format/mvt.js index c3217627fb..5b83304ab8 100644 --- a/src/ol/format/mvt.js +++ b/src/ol/format/mvt.js @@ -253,3 +253,38 @@ ol.format.MVT.readGeometry_ = function(rawFeature) { return geom; }; + + +/** + * Not implemented. + * @override + */ +ol.format.MVT.prototype.readFeature = function() {}; + + +/** + * Not implemented. + * @override + */ +ol.format.MVT.prototype.readGeometry = function() {}; + + +/** + * Not implemented. + * @override + */ +ol.format.MVT.prototype.writeFeature = function() {}; + + +/** + * Not implemented. + * @override + */ +ol.format.MVT.prototype.writeGeometry = function() {}; + + +/** + * Not implemented. + * @override + */ +ol.format.MVT.prototype.writeFeatures = function() {}; diff --git a/src/ol/format/osmxml.js b/src/ol/format/osmxml.js index 4ccc4ddf72..ef3eb13b12 100644 --- a/src/ol/format/osmxml.js +++ b/src/ol/format/osmxml.js @@ -208,3 +208,24 @@ ol.format.OSMXML.prototype.readFeaturesFromNode = function(node, opt_options) { * @api stable */ ol.format.OSMXML.prototype.readProjection; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.OSMXML.prototype.writeFeatureNode = function(feature, opt_options) {}; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.OSMXML.prototype.writeFeaturesNode = function(features, opt_options) {}; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.OSMXML.prototype.writeGeometryNode = function(geometry, opt_options) {}; diff --git a/src/ol/format/ows.js b/src/ol/format/ows.js index 3f9b079df3..3ed2be4e83 100644 --- a/src/ol/format/ows.js +++ b/src/ol/format/ows.js @@ -18,8 +18,7 @@ ol.inherits(ol.format.OWS, ol.format.XML); /** - * @param {Document} doc Document. - * @return {Object} OWS object. + * @inheritDoc */ ol.format.OWS.prototype.readFromDocument = function(doc) { for (var n = doc.firstChild; n; n = n.nextSibling) { @@ -32,8 +31,7 @@ ol.format.OWS.prototype.readFromDocument = function(doc) { /** - * @param {Node} node Node. - * @return {Object} OWS object. + * @inheritDoc */ ol.format.OWS.prototype.readFromNode = function(node) { var owsObject = ol.xml.pushParseAndPop({}, diff --git a/src/ol/format/textfeature.js b/src/ol/format/textfeature.js index 1bfb0f3676..3651d25b26 100644 --- a/src/ol/format/textfeature.js +++ b/src/ol/format/textfeature.js @@ -12,6 +12,7 @@ goog.require('ol.format.FormatType'); * Base class for text feature formats. * * @constructor + * @abstract * @extends {ol.format.Feature} */ ol.format.TextFeature = function() { diff --git a/src/ol/format/topojson.js b/src/ol/format/topojson.js index c0c4a5b263..34ea6874cc 100644 --- a/src/ol/format/topojson.js +++ b/src/ol/format/topojson.js @@ -366,12 +366,18 @@ ol.format.TopoJSON.transformVertex_ = function(vertex, scale, translate) { /** * Read the projection from a TopoJSON source. * - * @function * @param {Document|Node|Object|string} object Source. * @return {ol.proj.Projection} Projection. + * @override * @api stable */ -ol.format.TopoJSON.prototype.readProjection = function(object) { +ol.format.TopoJSON.prototype.readProjection; + + +/** + * @inheritDoc + */ +ol.format.TopoJSON.prototype.readProjectionFromObject = function(object) { return this.defaultDataProjection; }; @@ -389,3 +395,38 @@ ol.format.TopoJSON.GEOMETRY_READERS_ = { 'MultiLineString': ol.format.TopoJSON.readMultiLineStringGeometry_, 'MultiPolygon': ol.format.TopoJSON.readMultiPolygonGeometry_ }; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.TopoJSON.prototype.writeFeatureObject = function(feature, opt_options) {}; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.TopoJSON.prototype.writeFeaturesObject = function(features, opt_options) {}; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.TopoJSON.prototype.writeGeometryObject = function(geometry, opt_options) {}; + + +/** + * Not implemented. + * @override + */ +ol.format.TopoJSON.prototype.readGeometryFromObject = function() {}; + + +/** + * Not implemented. + * @override + */ +ol.format.TopoJSON.prototype.readFeatureFromObject = function() {}; diff --git a/src/ol/format/wmscapabilities.js b/src/ol/format/wmscapabilities.js index 5f39a3861b..e7607ee62f 100644 --- a/src/ol/format/wmscapabilities.js +++ b/src/ol/format/wmscapabilities.js @@ -39,8 +39,7 @@ ol.format.WMSCapabilities.prototype.read; /** - * @param {Document} doc Document. - * @return {Object} WMS Capability object. + * @inheritDoc */ ol.format.WMSCapabilities.prototype.readFromDocument = function(doc) { for (var n = doc.firstChild; n; n = n.nextSibling) { @@ -53,8 +52,7 @@ ol.format.WMSCapabilities.prototype.readFromDocument = function(doc) { /** - * @param {Node} node Node. - * @return {Object} WMS Capability object. + * @inheritDoc */ ol.format.WMSCapabilities.prototype.readFromNode = function(node) { this.version = node.getAttribute('version').trim(); diff --git a/src/ol/format/wmsgetfeatureinfo.js b/src/ol/format/wmsgetfeatureinfo.js index 6f731d8d90..2fcb6fd62b 100644 --- a/src/ol/format/wmsgetfeatureinfo.js +++ b/src/ol/format/wmsgetfeatureinfo.js @@ -145,3 +145,24 @@ ol.format.WMSGetFeatureInfo.prototype.readFeaturesFromNode = function(node, opt_ } return this.readFeatures_(node, [options]); }; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.WMSGetFeatureInfo.prototype.writeFeatureNode = function(feature, opt_options) {}; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.WMSGetFeatureInfo.prototype.writeFeaturesNode = function(features, opt_options) {}; + + +/** + * Not implemented. + * @inheritDoc + */ +ol.format.WMSGetFeatureInfo.prototype.writeGeometryNode = function(geometry, opt_options) {}; diff --git a/src/ol/format/wmtscapabilities.js b/src/ol/format/wmtscapabilities.js index 12fb18f611..02d2c32fda 100644 --- a/src/ol/format/wmtscapabilities.js +++ b/src/ol/format/wmtscapabilities.js @@ -41,8 +41,7 @@ ol.format.WMTSCapabilities.prototype.read; /** - * @param {Document} doc Document. - * @return {Object} WMTS Capability object. + * @inheritDoc */ ol.format.WMTSCapabilities.prototype.readFromDocument = function(doc) { for (var n = doc.firstChild; n; n = n.nextSibling) { @@ -55,8 +54,7 @@ ol.format.WMTSCapabilities.prototype.readFromDocument = function(doc) { /** - * @param {Node} node Node. - * @return {Object} WMTS Capability object. + * @inheritDoc */ ol.format.WMTSCapabilities.prototype.readFromNode = function(node) { var version = node.getAttribute('version').trim(); diff --git a/src/ol/format/xml.js b/src/ol/format/xml.js index dd814078c2..9fa5eef5e8 100644 --- a/src/ol/format/xml.js +++ b/src/ol/format/xml.js @@ -8,6 +8,7 @@ goog.require('ol.xml'); * Generic format for reading non-feature XML data * * @constructor + * @abstract * @struct */ ol.format.XML = function() { diff --git a/src/ol/format/xmlfeature.js b/src/ol/format/xmlfeature.js index ce4c7a3f62..5a67c551bc 100644 --- a/src/ol/format/xmlfeature.js +++ b/src/ol/format/xmlfeature.js @@ -14,6 +14,7 @@ goog.require('ol.xml'); * Base class for XML feature formats. * * @constructor + * @abstract * @extends {ol.format.Feature} */ ol.format.XMLFeature = function() { @@ -72,12 +73,13 @@ ol.format.XMLFeature.prototype.readFeatureFromDocument = function( /** - * @abstract * @param {Node} node Node. * @param {olx.format.ReadOptions=} opt_options Options. * @return {ol.Feature} Feature. */ -ol.format.XMLFeature.prototype.readFeatureFromNode = function(node, opt_options) {}; +ol.format.XMLFeature.prototype.readFeatureFromNode = function(node, opt_options) { + return null; // not implemented +}; /** @@ -147,23 +149,25 @@ ol.format.XMLFeature.prototype.readGeometry = function(source, opt_options) { /** - * @abstract * @param {Document} doc Document. * @param {olx.format.ReadOptions=} opt_options Options. * @protected * @return {ol.geom.Geometry} Geometry. */ -ol.format.XMLFeature.prototype.readGeometryFromDocument = function(doc, opt_options) {}; +ol.format.XMLFeature.prototype.readGeometryFromDocument = function(doc, opt_options) { + return null; // not implemented +}; /** - * @abstract * @param {Node} node Node. * @param {olx.format.ReadOptions=} opt_options Options. * @protected * @return {ol.geom.Geometry} Geometry. */ -ol.format.XMLFeature.prototype.readGeometryFromNode = function(node, opt_options) {}; +ol.format.XMLFeature.prototype.readGeometryFromNode = function(node, opt_options) { + return null; // not implemented +}; /** @@ -213,13 +217,14 @@ ol.format.XMLFeature.prototype.writeFeature = function(feature, opt_options) { /** - * @abstract * @param {ol.Feature} feature Feature. * @param {olx.format.WriteOptions=} opt_options Options. * @protected * @return {Node} Node. */ -ol.format.XMLFeature.prototype.writeFeatureNode = function(feature, opt_options) {}; +ol.format.XMLFeature.prototype.writeFeatureNode = function(feature, opt_options) { + return null; // not implemented +}; /** @@ -232,12 +237,13 @@ ol.format.XMLFeature.prototype.writeFeatures = function(features, opt_options) { /** - * @abstract * @param {Array.} features Features. * @param {olx.format.WriteOptions=} opt_options Options. * @return {Node} Node. */ -ol.format.XMLFeature.prototype.writeFeaturesNode = function(features, opt_options) {}; +ol.format.XMLFeature.prototype.writeFeaturesNode = function(features, opt_options) { + return null; // not implemented +}; /** @@ -250,9 +256,10 @@ ol.format.XMLFeature.prototype.writeGeometry = function(geometry, opt_options) { /** - * @abstract * @param {ol.geom.Geometry} geometry Geometry. * @param {olx.format.WriteOptions=} opt_options Options. * @return {Node} Node. */ -ol.format.XMLFeature.prototype.writeGeometryNode = function(geometry, opt_options) {}; +ol.format.XMLFeature.prototype.writeGeometryNode = function(geometry, opt_options) { + return null; // not implemented +}; diff --git a/src/ol/geom/circle.js b/src/ol/geom/circle.js index f199cc9018..2b6e694db4 100644 --- a/src/ol/geom/circle.js +++ b/src/ol/geom/circle.js @@ -30,6 +30,7 @@ ol.inherits(ol.geom.Circle, ol.geom.SimpleGeometry); /** * Make a complete copy of the geometry. * @return {!ol.geom.Circle} Clone. + * @override * @api */ ol.geom.Circle.prototype.clone = function() { @@ -205,6 +206,18 @@ ol.geom.Circle.prototype.setCenterAndRadius = function(center, radius, opt_layou }; +/** + * @inheritDoc + */ +ol.geom.Circle.prototype.getCoordinates = function() {}; + + +/** + * @inheritDoc + */ +ol.geom.Circle.prototype.setCoordinates = function(coordinates, opt_layout) {}; + + /** * @param {ol.geom.GeometryLayout} layout Layout. * @param {Array.} flatCoordinates Flat coordinates. diff --git a/src/ol/geom/geometry.js b/src/ol/geom/geometry.js index 86fedac283..47715d79fd 100644 --- a/src/ol/geom/geometry.js +++ b/src/ol/geom/geometry.js @@ -17,6 +17,7 @@ goog.require('ol.proj'); * generic `change` event on your geometry instance. * * @constructor + * @abstract * @extends {ol.Object} * @api stable */ diff --git a/src/ol/geom/geometrycollection.js b/src/ol/geom/geometrycollection.js index c43a40d08d..23f960ab54 100644 --- a/src/ol/geom/geometrycollection.js +++ b/src/ol/geom/geometrycollection.js @@ -83,6 +83,7 @@ ol.geom.GeometryCollection.prototype.listenGeometriesChange_ = function() { /** * Make a complete copy of the geometry. * @return {!ol.geom.GeometryCollection} Clone. + * @override * @api stable */ ol.geom.GeometryCollection.prototype.clone = function() { @@ -302,6 +303,7 @@ ol.geom.GeometryCollection.prototype.applyTransform = function(transformFn) { * Translate the geometry. * @param {number} deltaX Delta X. * @param {number} deltaY Delta Y. + * @override * @api */ ol.geom.GeometryCollection.prototype.translate = function(deltaX, deltaY) { diff --git a/src/ol/geom/linearring.js b/src/ol/geom/linearring.js index a4ebdf1559..3cc8bfcbcb 100644 --- a/src/ol/geom/linearring.js +++ b/src/ol/geom/linearring.js @@ -48,6 +48,7 @@ ol.inherits(ol.geom.LinearRing, ol.geom.SimpleGeometry); /** * Make a complete copy of the geometry. * @return {!ol.geom.LinearRing} Clone. + * @override * @api stable */ ol.geom.LinearRing.prototype.clone = function() { @@ -90,6 +91,7 @@ ol.geom.LinearRing.prototype.getArea = function() { /** * Return the coordinates of the linear ring. * @return {Array.} Coordinates. + * @override * @api stable */ ol.geom.LinearRing.prototype.getCoordinates = function() { @@ -122,10 +124,17 @@ ol.geom.LinearRing.prototype.getType = function() { }; +/** + * @inheritDoc + */ +ol.geom.LinearRing.prototype.intersectsExtent = function(extent) {}; + + /** * Set the coordinates of the linear ring. * @param {Array.} coordinates Coordinates. * @param {ol.geom.GeometryLayout=} opt_layout Layout. + * @override * @api stable */ ol.geom.LinearRing.prototype.setCoordinates = function(coordinates, opt_layout) { diff --git a/src/ol/geom/linestring.js b/src/ol/geom/linestring.js index dff2d47d6d..dd13803d5d 100644 --- a/src/ol/geom/linestring.js +++ b/src/ol/geom/linestring.js @@ -78,6 +78,7 @@ ol.geom.LineString.prototype.appendCoordinate = function(coordinate) { /** * Make a complete copy of the geometry. * @return {!ol.geom.LineString} Clone. + * @override * @api stable */ ol.geom.LineString.prototype.clone = function() { @@ -153,6 +154,7 @@ ol.geom.LineString.prototype.getCoordinateAtM = function(m, opt_extrapolate) { /** * Return the coordinates of the linestring. * @return {Array.} Coordinates. + * @override * @api stable */ ol.geom.LineString.prototype.getCoordinates = function() { @@ -240,6 +242,7 @@ ol.geom.LineString.prototype.intersectsExtent = function(extent) { * Set the coordinates of the linestring. * @param {Array.} coordinates Coordinates. * @param {ol.geom.GeometryLayout=} opt_layout Layout. + * @override * @api stable */ ol.geom.LineString.prototype.setCoordinates = function(coordinates, opt_layout) { diff --git a/src/ol/geom/multilinestring.js b/src/ol/geom/multilinestring.js index 14377c9255..c5d15bb9f1 100644 --- a/src/ol/geom/multilinestring.js +++ b/src/ol/geom/multilinestring.js @@ -73,6 +73,7 @@ ol.geom.MultiLineString.prototype.appendLineString = function(lineString) { /** * Make a complete copy of the geometry. * @return {!ol.geom.MultiLineString} Clone. + * @override * @api stable */ ol.geom.MultiLineString.prototype.clone = function() { @@ -140,6 +141,7 @@ ol.geom.MultiLineString.prototype.getCoordinateAtM = function(m, opt_extrapolate /** * Return the coordinates of the multilinestring. * @return {Array.>} Coordinates. + * @override * @api stable */ ol.geom.MultiLineString.prototype.getCoordinates = function() { @@ -257,6 +259,7 @@ ol.geom.MultiLineString.prototype.intersectsExtent = function(extent) { * Set the coordinates of the multilinestring. * @param {Array.>} coordinates Coordinates. * @param {ol.geom.GeometryLayout=} opt_layout Layout. + * @override * @api stable */ ol.geom.MultiLineString.prototype.setCoordinates = function(coordinates, opt_layout) { diff --git a/src/ol/geom/multipoint.js b/src/ol/geom/multipoint.js index 35f67bf8bb..8a8c3d3c80 100644 --- a/src/ol/geom/multipoint.js +++ b/src/ol/geom/multipoint.js @@ -47,6 +47,7 @@ ol.geom.MultiPoint.prototype.appendPoint = function(point) { /** * Make a complete copy of the geometry. * @return {!ol.geom.MultiPoint} Clone. + * @override * @api stable */ ol.geom.MultiPoint.prototype.clone = function() { @@ -85,6 +86,7 @@ ol.geom.MultiPoint.prototype.closestPointXY = function(x, y, closestPoint, minSq /** * Return the coordinates of the multipoint. * @return {Array.} Coordinates. + * @override * @api stable */ ol.geom.MultiPoint.prototype.getCoordinates = function() { @@ -165,6 +167,7 @@ ol.geom.MultiPoint.prototype.intersectsExtent = function(extent) { * Set the coordinates of the multipoint. * @param {Array.} coordinates Coordinates. * @param {ol.geom.GeometryLayout=} opt_layout Layout. + * @override * @api stable */ ol.geom.MultiPoint.prototype.setCoordinates = function(coordinates, opt_layout) { diff --git a/src/ol/geom/multipolygon.js b/src/ol/geom/multipolygon.js index e7b2b5cf44..2f1a0fc4e7 100644 --- a/src/ol/geom/multipolygon.js +++ b/src/ol/geom/multipolygon.js @@ -111,6 +111,7 @@ ol.geom.MultiPolygon.prototype.appendPolygon = function(polygon) { /** * Make a complete copy of the geometry. * @return {!ol.geom.MultiPolygon} Clone. + * @override * @api stable */ ol.geom.MultiPolygon.prototype.clone = function() { @@ -178,6 +179,7 @@ ol.geom.MultiPolygon.prototype.getArea = function() { * By default, coordinate orientation will depend on how the geometry was * constructed. * @return {Array.>>} Coordinates. + * @override * @api stable */ ol.geom.MultiPolygon.prototype.getCoordinates = function(opt_right) { @@ -355,6 +357,7 @@ ol.geom.MultiPolygon.prototype.intersectsExtent = function(extent) { * Set the coordinates of the multipolygon. * @param {Array.>>} coordinates Coordinates. * @param {ol.geom.GeometryLayout=} opt_layout Layout. + * @override * @api stable */ ol.geom.MultiPolygon.prototype.setCoordinates = function(coordinates, opt_layout) { diff --git a/src/ol/geom/point.js b/src/ol/geom/point.js index 785f053e9f..21f5de6bc6 100644 --- a/src/ol/geom/point.js +++ b/src/ol/geom/point.js @@ -29,6 +29,7 @@ ol.inherits(ol.geom.Point, ol.geom.SimpleGeometry); /** * Make a complete copy of the geometry. * @return {!ol.geom.Point} Clone. + * @override * @api stable */ ol.geom.Point.prototype.clone = function() { @@ -62,6 +63,7 @@ ol.geom.Point.prototype.closestPointXY = function(x, y, closestPoint, minSquared /** * Return the coordinate of the point. * @return {ol.Coordinate} Coordinates. + * @override * @api stable */ ol.geom.Point.prototype.getCoordinates = function() { @@ -97,9 +99,7 @@ ol.geom.Point.prototype.intersectsExtent = function(extent) { /** - * Set the coordinate of the point. - * @param {ol.Coordinate} coordinates Coordinates. - * @param {ol.geom.GeometryLayout=} opt_layout Layout. + * @inheritDoc * @api stable */ ol.geom.Point.prototype.setCoordinates = function(coordinates, opt_layout) { diff --git a/src/ol/geom/polygon.js b/src/ol/geom/polygon.js index a698534473..54816501cb 100644 --- a/src/ol/geom/polygon.js +++ b/src/ol/geom/polygon.js @@ -106,6 +106,7 @@ ol.geom.Polygon.prototype.appendLinearRing = function(linearRing) { /** * Make a complete copy of the geometry. * @return {!ol.geom.Polygon} Clone. + * @override * @api stable */ ol.geom.Polygon.prototype.clone = function() { @@ -166,6 +167,7 @@ ol.geom.Polygon.prototype.getArea = function() { * By default, coordinate orientation will depend on how the geometry was * constructed. * @return {Array.>} Coordinates. + * @override * @api stable */ ol.geom.Polygon.prototype.getCoordinates = function(opt_right) { @@ -333,6 +335,7 @@ ol.geom.Polygon.prototype.intersectsExtent = function(extent) { * Set the coordinates of the polygon. * @param {Array.>} coordinates Coordinates. * @param {ol.geom.GeometryLayout=} opt_layout Layout. + * @override * @api stable */ ol.geom.Polygon.prototype.setCoordinates = function(coordinates, opt_layout) { diff --git a/src/ol/geom/simplegeometry.js b/src/ol/geom/simplegeometry.js index 478cd23432..87bb61fcca 100644 --- a/src/ol/geom/simplegeometry.js +++ b/src/ol/geom/simplegeometry.js @@ -15,6 +15,7 @@ goog.require('ol.obj'); * in apps, as cannot be rendered. * * @constructor + * @abstract * @extends {ol.geom.Geometry} * @api stable */ diff --git a/src/ol/image.js b/src/ol/image.js index c4128103a3..e9eb53f848 100644 --- a/src/ol/image.js +++ b/src/ol/image.js @@ -70,9 +70,7 @@ ol.inherits(ol.Image, ol.ImageBase); /** - * Get the HTML image element (may be a Canvas, Image, or Video). - * @param {Object=} opt_context Object. - * @return {HTMLCanvasElement|Image|HTMLVideoElement} Image. + * @inheritDoc * @api */ ol.Image.prototype.getImage = function(opt_context) { @@ -125,6 +123,7 @@ ol.Image.prototype.handleImageLoad_ = function() { * Load the image or retry if loading previously failed. * Loading is taken care of by the tile queue, and calling this method is * only needed for preloading or for reloading in case of an error. + * @override * @api */ ol.Image.prototype.load = function() { diff --git a/src/ol/imagebase.js b/src/ol/imagebase.js index 9351ab7274..f69507467b 100644 --- a/src/ol/imagebase.js +++ b/src/ol/imagebase.js @@ -7,6 +7,7 @@ goog.require('ol.events.EventType'); /** * @constructor + * @abstract * @extends {ol.events.EventTarget} * @param {ol.Extent} extent Extent. * @param {number|undefined} resolution Resolution. diff --git a/src/ol/imagecanvas.js b/src/ol/imagecanvas.js index 13b9e5e017..6d5d25985c 100644 --- a/src/ol/imagecanvas.js +++ b/src/ol/imagecanvas.js @@ -73,7 +73,7 @@ ol.ImageCanvas.prototype.handleLoad_ = function(err) { /** - * Trigger drawing on canvas. + * @inheritDoc */ ol.ImageCanvas.prototype.load = function() { if (this.state == ol.ImageState.IDLE) { diff --git a/src/ol/imagetile.js b/src/ol/imagetile.js index a32e29a5db..c10af92364 100644 --- a/src/ol/imagetile.js +++ b/src/ol/imagetile.js @@ -116,9 +116,7 @@ ol.ImageTile.prototype.handleImageLoad_ = function() { /** - * Load the image or retry if loading previously failed. - * Loading is taken care of by the tile queue, and calling this method is - * only needed for preloading or for reloading in case of an error. + * @inheritDoc * @api */ ol.ImageTile.prototype.load = function() { diff --git a/src/ol/interaction/draganddrop.js b/src/ol/interaction/draganddrop.js index f2973371b0..25dbcf771b 100644 --- a/src/ol/interaction/draganddrop.js +++ b/src/ol/interaction/draganddrop.js @@ -101,11 +101,19 @@ ol.interaction.DragAndDrop.prototype.handleResult_ = function(file, event) { var view = map.getView(); projection = view.getProjection(); } + var formatConstructors = this.formatConstructors_; var features = []; var i, ii; for (i = 0, ii = formatConstructors.length; i < ii; ++i) { + /** + * Avoid "cannot instantiate abstract class" error. + * @type {Function} + */ var formatConstructor = formatConstructors[i]; + /** + * @type {ol.format.Feature} + */ var format = new formatConstructor(); features = this.tryReadFeatures_(format, result, { featureProjection: projection diff --git a/src/ol/interaction/select.js b/src/ol/interaction/select.js index 0be3c9361a..6f37891de3 100644 --- a/src/ol/interaction/select.js +++ b/src/ol/interaction/select.js @@ -303,6 +303,7 @@ ol.interaction.Select.prototype.setHitTolerance = function(hitTolerance) { * Remove the interaction from its current map, if any, and attach it to a new * map, if any. Pass `null` to just remove the interaction from the current map. * @param {ol.Map} map Map. + * @override * @api stable */ ol.interaction.Select.prototype.setMap = function(map) { diff --git a/src/ol/layer/base.js b/src/ol/layer/base.js index b16210563c..a5c5dc9fd7 100644 --- a/src/ol/layer/base.js +++ b/src/ol/layer/base.js @@ -16,6 +16,7 @@ goog.require('ol.obj'); * is observable, and has get/set accessors. * * @constructor + * @abstract * @extends {ol.Object} * @param {olx.layer.BaseOptions} options Layer options. * @api stable diff --git a/src/ol/layer/group.js b/src/ol/layer/group.js index 43a51c93f7..4a77de05ad 100644 --- a/src/ol/layer/group.js +++ b/src/ol/layer/group.js @@ -70,6 +70,12 @@ ol.layer.Group = function(opt_options) { ol.inherits(ol.layer.Group, ol.layer.Base); +/** + * @inheritDoc + */ +ol.layer.Group.prototype.createRenderer = function(mapRenderer) {}; + + /** * @private */ diff --git a/src/ol/layer/layer.js b/src/ol/layer/layer.js index 05cb5cdb8a..09886207bb 100644 --- a/src/ol/layer/layer.js +++ b/src/ol/layer/layer.js @@ -27,6 +27,7 @@ goog.require('ol.source.State'); * A generic `change` event is fired when the state of the source changes. * * @constructor + * @abstract * @extends {ol.layer.Base} * @fires ol.render.Event * @param {olx.layer.LayerOptions} options Layer options. diff --git a/src/ol/map.js b/src/ol/map.js index 88e2265bf4..3c235faa03 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -331,7 +331,7 @@ ol.Map = function(options) { * @type {ol.renderer.Map} * @private */ - this.renderer_ = new optionsInternal.rendererConstructor(this.viewport_, this); + this.renderer_ = new /** @type {Function} */ (optionsInternal.rendererConstructor)(this.viewport_, this); /** * @type {function(Event)|undefined} diff --git a/src/ol/render/canvas/immediate.js b/src/ol/render/canvas/immediate.js index 757b24bce5..29abefcbfa 100644 --- a/src/ol/render/canvas/immediate.js +++ b/src/ol/render/canvas/immediate.js @@ -397,6 +397,7 @@ ol.render.canvas.Immediate.prototype.drawRings_ = function(flatCoordinates, offs * the current fill and stroke styles. * * @param {ol.geom.Circle} geometry Circle geometry. + * @override * @api */ ol.render.canvas.Immediate.prototype.drawCircle = function(geometry) { @@ -437,6 +438,7 @@ ol.render.canvas.Immediate.prototype.drawCircle = function(geometry) { * any `zIndex` on the provided style will be ignored. * * @param {ol.style.Style} style The rendering style. + * @override * @api */ ol.render.canvas.Immediate.prototype.setStyle = function(style) { @@ -451,6 +453,7 @@ ol.render.canvas.Immediate.prototype.setStyle = function(style) { * {@link ol.render.canvas.Immediate#setStyle} first to set the rendering style. * * @param {ol.geom.Geometry|ol.render.Feature} geometry The geometry to render. + * @override * @api */ ol.render.canvas.Immediate.prototype.drawGeometry = function(geometry) { @@ -493,6 +496,7 @@ ol.render.canvas.Immediate.prototype.drawGeometry = function(geometry) { * * @param {ol.Feature} feature Feature. * @param {ol.style.Style} style Style. + * @override * @api */ ol.render.canvas.Immediate.prototype.drawFeature = function(feature, style) { @@ -511,6 +515,7 @@ ol.render.canvas.Immediate.prototype.drawFeature = function(feature, style) { * uses the current styles appropriate for each geometry in the collection. * * @param {ol.geom.GeometryCollection} geometry Geometry collection. + * @override */ ol.render.canvas.Immediate.prototype.drawGeometryCollection = function(geometry) { var geometries = geometry.getGeometriesArray(); @@ -526,6 +531,7 @@ ol.render.canvas.Immediate.prototype.drawGeometryCollection = function(geometry) * the current style. * * @param {ol.geom.Point|ol.render.Feature} geometry Point geometry. + * @override */ ol.render.canvas.Immediate.prototype.drawPoint = function(geometry) { var flatCoordinates = geometry.getFlatCoordinates(); @@ -544,6 +550,7 @@ ol.render.canvas.Immediate.prototype.drawPoint = function(geometry) { * uses the current style. * * @param {ol.geom.MultiPoint|ol.render.Feature} geometry MultiPoint geometry. + * @override */ ol.render.canvas.Immediate.prototype.drawMultiPoint = function(geometry) { var flatCoordinates = geometry.getFlatCoordinates(); @@ -562,6 +569,7 @@ ol.render.canvas.Immediate.prototype.drawMultiPoint = function(geometry) { * the current style. * * @param {ol.geom.LineString|ol.render.Feature} geometry LineString geometry. + * @override */ ol.render.canvas.Immediate.prototype.drawLineString = function(geometry) { if (!ol.extent.intersects(this.extent_, geometry.getExtent())) { @@ -589,6 +597,7 @@ ol.render.canvas.Immediate.prototype.drawLineString = function(geometry) { * * @param {ol.geom.MultiLineString|ol.render.Feature} geometry MultiLineString * geometry. + * @override */ ol.render.canvas.Immediate.prototype.drawMultiLineString = function(geometry) { var geometryExtent = geometry.getExtent(); @@ -622,6 +631,7 @@ ol.render.canvas.Immediate.prototype.drawMultiLineString = function(geometry) { * the current style. * * @param {ol.geom.Polygon|ol.render.Feature} geometry Polygon geometry. + * @override */ ol.render.canvas.Immediate.prototype.drawPolygon = function(geometry) { if (!ol.extent.intersects(this.extent_, geometry.getExtent())) { @@ -656,6 +666,7 @@ ol.render.canvas.Immediate.prototype.drawPolygon = function(geometry) { * Render MultiPolygon geometry into the canvas. Rendering is immediate and * uses the current style. * @param {ol.geom.MultiPolygon} geometry MultiPolygon geometry. + * @override */ ol.render.canvas.Immediate.prototype.drawMultiPolygon = function(geometry) { if (!ol.extent.intersects(this.extent_, geometry.getExtent())) { @@ -802,6 +813,7 @@ ol.render.canvas.Immediate.prototype.setContextTextState_ = function(textState) * * @param {ol.style.Fill} fillStyle Fill style. * @param {ol.style.Stroke} strokeStyle Stroke style. + * @override */ ol.render.canvas.Immediate.prototype.setFillStrokeStyle = function(fillStyle, strokeStyle) { if (!fillStyle) { @@ -848,6 +860,7 @@ ol.render.canvas.Immediate.prototype.setFillStrokeStyle = function(fillStyle, st * the image style. * * @param {ol.style.Image} imageStyle Image style. + * @override */ ol.render.canvas.Immediate.prototype.setImageStyle = function(imageStyle) { if (!imageStyle) { @@ -879,6 +892,7 @@ ol.render.canvas.Immediate.prototype.setImageStyle = function(imageStyle) { * remove the text style. * * @param {ol.style.Text} textStyle Text style. + * @override */ ol.render.canvas.Immediate.prototype.setTextStyle = function(textStyle) { if (!textStyle) { diff --git a/src/ol/render/replaygroup.js b/src/ol/render/replaygroup.js index 6f7b286021..46a6a9b9a6 100644 --- a/src/ol/render/replaygroup.js +++ b/src/ol/render/replaygroup.js @@ -4,6 +4,7 @@ goog.provide('ol.render.ReplayGroup'); /** * Base class for replay groups. * @constructor + * @abstract */ ol.render.ReplayGroup = function() {}; diff --git a/src/ol/render/vectorcontext.js b/src/ol/render/vectorcontext.js index 26b8fad6ce..a8974f1cc7 100644 --- a/src/ol/render/vectorcontext.js +++ b/src/ol/render/vectorcontext.js @@ -5,6 +5,7 @@ goog.provide('ol.render.VectorContext'); * Context for drawing geometries. A vector context is available on render * events and does not need to be constructed directly. * @constructor + * @abstract * @struct * @api */ @@ -15,7 +16,6 @@ ol.render.VectorContext = function() { /** * Render a geometry. * - * @abstract * @param {ol.geom.Geometry} geometry The geometry to render. */ ol.render.VectorContext.prototype.drawGeometry = function(geometry) {}; @@ -24,22 +24,19 @@ ol.render.VectorContext.prototype.drawGeometry = function(geometry) {}; /** * Set the rendering style. * - * @abstract * @param {ol.style.Style} style The rendering style. */ ol.render.VectorContext.prototype.setStyle = function(style) {}; /** - * @abstract * @param {ol.geom.Circle} circleGeometry Circle geometry. - * @param {ol.Feature} feature Feature, + * @param {ol.Feature} feature Feature. */ ol.render.VectorContext.prototype.drawCircle = function(circleGeometry, feature) {}; /** - * @abstract * @param {ol.Feature} feature Feature. * @param {ol.style.Style} style Style. */ @@ -47,7 +44,6 @@ ol.render.VectorContext.prototype.drawFeature = function(feature, style) {}; /** - * @abstract * @param {ol.geom.GeometryCollection} geometryCollectionGeometry Geometry * collection. * @param {ol.Feature} feature Feature. @@ -56,7 +52,6 @@ ol.render.VectorContext.prototype.drawGeometryCollection = function(geometryColl /** - * @abstract * @param {ol.geom.LineString|ol.render.Feature} lineStringGeometry Line * string geometry. * @param {ol.Feature|ol.render.Feature} feature Feature. @@ -65,7 +60,6 @@ ol.render.VectorContext.prototype.drawLineString = function(lineStringGeometry, /** - * @abstract * @param {ol.geom.MultiLineString|ol.render.Feature} multiLineStringGeometry * MultiLineString geometry. * @param {ol.Feature|ol.render.Feature} feature Feature. @@ -74,7 +68,6 @@ ol.render.VectorContext.prototype.drawMultiLineString = function(multiLineString /** - * @abstract * @param {ol.geom.MultiPoint|ol.render.Feature} multiPointGeometry MultiPoint * geometry. * @param {ol.Feature|ol.render.Feature} feature Feature. @@ -83,7 +76,6 @@ ol.render.VectorContext.prototype.drawMultiPoint = function(multiPointGeometry, /** - * @abstract * @param {ol.geom.MultiPolygon} multiPolygonGeometry MultiPolygon geometry. * @param {ol.Feature|ol.render.Feature} feature Feature. */ @@ -91,7 +83,6 @@ ol.render.VectorContext.prototype.drawMultiPolygon = function(multiPolygonGeomet /** - * @abstract * @param {ol.geom.Point|ol.render.Feature} pointGeometry Point geometry. * @param {ol.Feature|ol.render.Feature} feature Feature. */ @@ -99,7 +90,6 @@ ol.render.VectorContext.prototype.drawPoint = function(pointGeometry, feature) { /** - * @abstract * @param {ol.geom.Polygon|ol.render.Feature} polygonGeometry Polygon * geometry. * @param {ol.Feature|ol.render.Feature} feature Feature. @@ -108,7 +98,6 @@ ol.render.VectorContext.prototype.drawPolygon = function(polygonGeometry, featur /** - * @abstract * @param {Array.} flatCoordinates Flat coordinates. * @param {number} offset Offset. * @param {number} end End. @@ -120,7 +109,6 @@ ol.render.VectorContext.prototype.drawText = function(flatCoordinates, offset, e /** - * @abstract * @param {ol.style.Fill} fillStyle Fill style. * @param {ol.style.Stroke} strokeStyle Stroke style. */ @@ -128,14 +116,12 @@ ol.render.VectorContext.prototype.setFillStrokeStyle = function(fillStyle, strok /** - * @abstract * @param {ol.style.Image} imageStyle Image style. */ ol.render.VectorContext.prototype.setImageStyle = function(imageStyle) {}; /** - * @abstract * @param {ol.style.Text} textStyle Text style. */ ol.render.VectorContext.prototype.setTextStyle = function(textStyle) {}; diff --git a/src/ol/render/webgl/immediate.js b/src/ol/render/webgl/immediate.js index 74f4420b18..750cb966c6 100644 --- a/src/ol/render/webgl/immediate.js +++ b/src/ol/render/webgl/immediate.js @@ -88,6 +88,7 @@ if (ol.ENABLE_WEBGL) { * any `zIndex` on the provided style will be ignored. * * @param {ol.style.Style} style The rendering style. + * @override * @api */ ol.render.webgl.Immediate.prototype.setStyle = function(style) { @@ -101,6 +102,7 @@ if (ol.ENABLE_WEBGL) { * {@link ol.render.webgl.Immediate#setStyle} first to set the rendering style. * * @param {ol.geom.Geometry|ol.render.Feature} geometry The geometry to render. + * @override * @api */ ol.render.webgl.Immediate.prototype.drawGeometry = function(geometry) { diff --git a/src/ol/render/webgl/replay.js b/src/ol/render/webgl/replay.js index 5de048d50e..9e36d9a87b 100644 --- a/src/ol/render/webgl/replay.js +++ b/src/ol/render/webgl/replay.js @@ -12,6 +12,7 @@ if (ol.ENABLE_WEBGL) { /** * @constructor + * @abstract * @extends {ol.render.VectorContext} * @param {number} tolerance Tolerance. * @param {ol.Extent} maxExtent Max extent. diff --git a/src/ol/render/webgl/replaygroup.js b/src/ol/render/webgl/replaygroup.js index ad5e2db400..8312118ee8 100644 --- a/src/ol/render/webgl/replaygroup.js +++ b/src/ol/render/webgl/replaygroup.js @@ -109,6 +109,9 @@ if (ol.ENABLE_WEBGL) { } var replay = replays[replayType]; if (replay === undefined) { + /** + * @type {Function} + */ var Constructor = ol.render.webgl.ReplayGroup.BATCH_CONSTRUCTORS_[replayType]; replay = new Constructor(this.tolerance_, this.maxExtent_); replays[replayType] = replay; diff --git a/src/ol/render/webgl/textreplay.js b/src/ol/render/webgl/textreplay.js index 733e620567..429b03a923 100644 --- a/src/ol/render/webgl/textreplay.js +++ b/src/ol/render/webgl/textreplay.js @@ -7,6 +7,7 @@ if (ol.ENABLE_WEBGL) { /** * @constructor + * @abstract * @param {number} tolerance Tolerance. * @param {ol.Extent} maxExtent Max extent. * @struct diff --git a/src/ol/renderer/canvas/intermediatecanvas.js b/src/ol/renderer/canvas/intermediatecanvas.js index fe915771ab..534af2d453 100644 --- a/src/ol/renderer/canvas/intermediatecanvas.js +++ b/src/ol/renderer/canvas/intermediatecanvas.js @@ -9,6 +9,7 @@ goog.require('ol.transform'); /** * @constructor + * @abstract * @extends {ol.renderer.canvas.Layer} * @param {ol.layer.Layer} layer Layer. */ diff --git a/src/ol/renderer/canvas/layer.js b/src/ol/renderer/canvas/layer.js index fecbb784f1..7ff2f07e65 100644 --- a/src/ol/renderer/canvas/layer.js +++ b/src/ol/renderer/canvas/layer.js @@ -13,6 +13,7 @@ goog.require('ol.transform'); /** * @constructor + * @abstract * @extends {ol.renderer.Layer} * @param {ol.layer.Layer} layer Layer. */ diff --git a/src/ol/renderer/map.js b/src/ol/renderer/map.js index a136ab52af..6a3373334e 100644 --- a/src/ol/renderer/map.js +++ b/src/ol/renderer/map.js @@ -13,6 +13,7 @@ goog.require('ol.transform'); /** * @constructor + * @abstract * @extends {ol.Disposable} * @param {Element} container Container. * @param {ol.Map} map Map. diff --git a/src/ol/renderer/webgl/layer.js b/src/ol/renderer/webgl/layer.js index 40bf6fd2a6..80bd79d7e7 100644 --- a/src/ol/renderer/webgl/layer.js +++ b/src/ol/renderer/webgl/layer.js @@ -17,6 +17,7 @@ if (ol.ENABLE_WEBGL) { /** * @constructor + * @abstract * @extends {ol.renderer.Layer} * @param {ol.renderer.webgl.Map} mapRenderer Map renderer. * @param {ol.layer.Layer} layer Layer. diff --git a/src/ol/renderer/webgl/tilelayer.js b/src/ol/renderer/webgl/tilelayer.js index 45667be6c5..ef575668c9 100644 --- a/src/ol/renderer/webgl/tilelayer.js +++ b/src/ol/renderer/webgl/tilelayer.js @@ -97,15 +97,7 @@ if (ol.ENABLE_WEBGL) { /** - * Create a function that adds loaded tiles to the tile lookup. - * @param {ol.source.Tile} source Tile source. - * @param {ol.proj.Projection} projection Projection of the tiles. - * @param {Object.>} tiles Lookup of loaded - * tiles by zoom level. - * @return {function(number, ol.TileRange):boolean} A function that can be - * called with a zoom level and a tile range to add loaded tiles to the - * lookup. - * @protected + * @inheritDoc */ ol.renderer.webgl.TileLayer.prototype.createLoadedTileFinder = function(source, projection, tiles) { var mapRenderer = this.mapRenderer; diff --git a/src/ol/source/image.js b/src/ol/source/image.js index e9e2383844..9e07a935ce 100644 --- a/src/ol/source/image.js +++ b/src/ol/source/image.js @@ -17,6 +17,7 @@ goog.require('ol.source.Source'); * Base class for sources providing a single image. * * @constructor + * @abstract * @extends {ol.source.Source} * @param {ol.SourceImageOptions} options Single image source options. * @api @@ -56,6 +57,7 @@ ol.inherits(ol.source.Image, ol.source.Source); /** * @return {Array.} Resolutions. + * @override */ ol.source.Image.prototype.getResolutions = function() { return this.resolutions_; diff --git a/src/ol/source/raster.js b/src/ol/source/raster.js index 0ef86ebe39..2ebcc06937 100644 --- a/src/ol/source/raster.js +++ b/src/ol/source/raster.js @@ -485,6 +485,14 @@ ol.source.Raster.Event = function(type, frameState, data) { ol.inherits(ol.source.Raster.Event, ol.events.Event); +/** + * @override + */ +ol.source.Raster.prototype.getImageInternal = function() { + return null; // not implemented +}; + + /** * @enum {string} * @private diff --git a/src/ol/source/source.js b/src/ol/source/source.js index 596794566c..b5f355d687 100644 --- a/src/ol/source/source.js +++ b/src/ol/source/source.js @@ -16,6 +16,7 @@ goog.require('ol.source.State'); * A generic `change` event is triggered when the state of the source changes. * * @constructor + * @abstract * @extends {ol.Object} * @param {ol.SourceSourceOptions} options Source options. * @api stable diff --git a/src/ol/source/tile.js b/src/ol/source/tile.js index 3873841270..32f9e6c8bb 100644 --- a/src/ol/source/tile.js +++ b/src/ol/source/tile.js @@ -18,6 +18,7 @@ goog.require('ol.tilegrid'); * Base class for sources providing images divided into a tile grid. * * @constructor + * @abstract * @extends {ol.source.Source} * @param {ol.SourceTileOptions} options Tile source options. * @api diff --git a/src/ol/source/tiledebug.js b/src/ol/source/tiledebug.js index a62d962da0..3e301386cc 100644 --- a/src/ol/source/tiledebug.js +++ b/src/ol/source/tiledebug.js @@ -91,6 +91,7 @@ ol.inherits(ol.source.TileDebug.Tile_, ol.Tile); /** * Get the image element for this tile. * @return {HTMLCanvasElement} Image. + * @override */ ol.source.TileDebug.Tile_.prototype.getImage = function() { if (this.canvas_) { @@ -112,3 +113,9 @@ ol.source.TileDebug.Tile_.prototype.getImage = function() { return context.canvas; } }; + + +/** + * @override + */ +ol.source.TileDebug.Tile_.prototype.load = function() {}; diff --git a/src/ol/source/tileutfgrid.js b/src/ol/source/tileutfgrid.js index f79f3e5978..0166caace1 100644 --- a/src/ol/source/tileutfgrid.js +++ b/src/ol/source/tileutfgrid.js @@ -320,6 +320,7 @@ ol.inherits(ol.source.TileUTFGrid.Tile_, ol.Tile); /** * Get the image element for this tile. * @return {Image} Image. + * @override */ ol.source.TileUTFGrid.Tile_.prototype.getImage = function() { return null; @@ -479,7 +480,7 @@ ol.source.TileUTFGrid.Tile_.prototype.onXHRError_ = function(event) { /** - * Load not yet loaded URI. + * @override */ ol.source.TileUTFGrid.Tile_.prototype.load = function() { if (this.preemptive_) { diff --git a/src/ol/source/urltile.js b/src/ol/source/urltile.js index 56768d6868..4cd74e521f 100644 --- a/src/ol/source/urltile.js +++ b/src/ol/source/urltile.js @@ -12,6 +12,7 @@ goog.require('ol.source.TileEventType'); * Base class for sources providing tiles divided into a tile grid over http. * * @constructor + * @abstract * @fires ol.source.Tile.Event * @extends {ol.source.Tile} * @param {ol.SourceUrlTileOptions} options Image tile options. diff --git a/src/ol/source/vector.js b/src/ol/source/vector.js index 8c6315d79f..09c8704036 100644 --- a/src/ol/source/vector.js +++ b/src/ol/source/vector.js @@ -652,6 +652,12 @@ ol.source.Vector.prototype.getOverlaps = function() { }; +/** + * @override + */ +ol.source.Vector.prototype.getResolutions = function() {}; + + /** * Get the url associated with this source. * diff --git a/src/ol/style/circle.js b/src/ol/style/circle.js index 6b67d83920..acf8512ce5 100644 --- a/src/ol/style/circle.js +++ b/src/ol/style/circle.js @@ -33,6 +33,7 @@ ol.inherits(ol.style.Circle, ol.style.RegularShape); /** * Clones the style. If an atlasmanager was provided to the original style it will be used in the cloned style, too. * @return {ol.style.Circle} The cloned style. + * @override * @api */ ol.style.Circle.prototype.clone = function() { diff --git a/src/ol/style/icon.js b/src/ol/style/icon.js index 1628fec65c..8a6a823940 100644 --- a/src/ol/style/icon.js +++ b/src/ol/style/icon.js @@ -275,6 +275,7 @@ ol.style.Icon.prototype.getColor = function() { * Get the image icon. * @param {number} pixelRatio Pixel ratio. * @return {Image|HTMLCanvasElement} Image or Canvas element. + * @override * @api */ ol.style.Icon.prototype.getImage = function(pixelRatio) { @@ -283,8 +284,7 @@ ol.style.Icon.prototype.getImage = function(pixelRatio) { /** - * Real Image size used. - * @return {ol.Size} Size. + * @override */ ol.style.Icon.prototype.getImageSize = function() { return this.iconImage_.getSize(); @@ -292,7 +292,7 @@ ol.style.Icon.prototype.getImageSize = function() { /** - * @inheritDoc + * @override */ ol.style.Icon.prototype.getHitDetectionImageSize = function() { return this.getImageSize(); @@ -300,7 +300,7 @@ ol.style.Icon.prototype.getHitDetectionImageSize = function() { /** - * @inheritDoc + * @override */ ol.style.Icon.prototype.getImageState = function() { return this.iconImage_.getImageState(); @@ -308,7 +308,7 @@ ol.style.Icon.prototype.getImageState = function() { /** - * @inheritDoc + * @override */ ol.style.Icon.prototype.getHitDetectionImage = function(pixelRatio) { return this.iconImage_.getHitDetectionImage(pixelRatio); @@ -366,7 +366,7 @@ ol.style.Icon.prototype.getSize = function() { /** - * @inheritDoc + * @override */ ol.style.Icon.prototype.listenImageChange = function(listener, thisArg) { return ol.events.listen(this.iconImage_, ol.events.EventType.CHANGE, @@ -379,6 +379,7 @@ ol.style.Icon.prototype.listenImageChange = function(listener, thisArg) { * When rendering a feature with an icon style, the vector renderer will * automatically call this method. However, you might want to call this * method yourself for preloading or other purposes. + * @override * @api */ ol.style.Icon.prototype.load = function() { @@ -387,7 +388,7 @@ ol.style.Icon.prototype.load = function() { /** - * @inheritDoc + * @override */ ol.style.Icon.prototype.unlistenImageChange = function(listener, thisArg) { ol.events.unlisten(this.iconImage_, ol.events.EventType.CHANGE, diff --git a/src/ol/style/image.js b/src/ol/style/image.js index 894a88f960..9ba000d07e 100644 --- a/src/ol/style/image.js +++ b/src/ol/style/image.js @@ -8,6 +8,7 @@ goog.provide('ol.style.Image'); * {@link ol.style.RegularShape}. * * @constructor + * @abstract * @param {ol.StyleImageOptions} options Options. * @api */ diff --git a/src/ol/style/regularshape.js b/src/ol/style/regularshape.js index e84815c68e..0303dc86a4 100644 --- a/src/ol/style/regularshape.js +++ b/src/ol/style/regularshape.js @@ -293,19 +293,19 @@ ol.style.RegularShape.prototype.getStroke = function() { /** * @inheritDoc */ -ol.style.RegularShape.prototype.listenImageChange = ol.nullFunction; +ol.style.RegularShape.prototype.listenImageChange = function(listener, thisArg) {}; /** * @inheritDoc */ -ol.style.RegularShape.prototype.load = ol.nullFunction; +ol.style.RegularShape.prototype.load = function() {}; /** * @inheritDoc */ -ol.style.RegularShape.prototype.unlistenImageChange = ol.nullFunction; +ol.style.RegularShape.prototype.unlistenImageChange = function(listener, thisArg) {}; /** diff --git a/src/ol/tile.js b/src/ol/tile.js index 33960638fd..c329c33017 100644 --- a/src/ol/tile.js +++ b/src/ol/tile.js @@ -11,6 +11,7 @@ goog.require('ol.events.EventType'); * Base class for tiles. * * @constructor + * @abstract * @extends {ol.events.EventTarget} * @param {ol.TileCoord} tileCoord Tile coordinate. * @param {ol.TileState} state State. diff --git a/src/ol/vectortile.js b/src/ol/vectortile.js index b32e339af6..78598ff023 100644 --- a/src/ol/vectortile.js +++ b/src/ol/vectortile.js @@ -88,7 +88,7 @@ ol.VectorTile.prototype.getContext = function() { /** - * @inheritDoc + * @override */ ol.VectorTile.prototype.getImage = function() { return this.replayState_.renderedTileRevision == -1 ? @@ -139,7 +139,7 @@ ol.VectorTile.prototype.getProjection = function() { /** - * Load the tile. + * @inheritDoc */ ol.VectorTile.prototype.load = function() { if (this.state == ol.TileState.IDLE) { diff --git a/src/ol/webgl/shader.js b/src/ol/webgl/shader.js index da3ebcdc8a..7daf7ae4f8 100644 --- a/src/ol/webgl/shader.js +++ b/src/ol/webgl/shader.js @@ -8,6 +8,7 @@ if (ol.ENABLE_WEBGL) { /** * @constructor + * @abstract * @param {string} source Source. * @struct */ diff --git a/tasks/build-ext.js b/tasks/build-ext.js index 62b9ead8c7..72b58ea039 100644 --- a/tasks/build-ext.js +++ b/tasks/build-ext.js @@ -58,7 +58,7 @@ function wrapModule(mod, callback) { 'constantProperty, deprecated, duplicate, es5Strict, ' + 'fileoverviewTags, missingProperties, nonStandardJsDocs, ' + 'strictModuleDepCheck, suspiciousCode, undefinedNames, ' + - 'undefinedVars, unknownDefines, uselessCode, visibility}\n' + + 'undefinedVars, unknownDefines, unusedLocalVariables, uselessCode, visibility}\n' + ' */\n' + code + '\n' + 'ol.ext.' + mod.name + ' = module.exports;\n' + '})();\n';