Merge pull request #1463 from twpayne/vector-api-type-fixes

[vector-api] Type checking improvements
This commit is contained in:
Tom Payne
2014-01-06 02:09:04 -08:00
10 changed files with 74 additions and 81 deletions

View File

@@ -142,56 +142,60 @@ ol.color.equals = function(color1, color2) {
* @param {ol.Color=} opt_color Color.
* @return {ol.Color} Color.
*/
ol.color.fromString = (function() {
ol.color.fromString = (
/**
* @return {function(string, ol.Color=): ol.Color}
*/
function() {
// We maintain a small cache of parsed strings. To provide cheap LRU-like
// semantics, whenever the cache grows too large we simply delete an
// arbitrary 25% of the entries.
// We maintain a small cache of parsed strings. To provide cheap LRU-like
// semantics, whenever the cache grows too large we simply delete an
// arbitrary 25% of the entries.
/**
* @const
* @type {number}
*/
var MAX_CACHE_SIZE = 1024;
/**
* @type {Object.<string, ol.Color>}
*/
var cache = {};
/**
* @type {number}
*/
var cacheSize = 0;
return (
/**
* @param {string} s String.
* @param {ol.Color=} opt_color Color.
* @return {ol.Color} Color.
* @const
* @type {number}
*/
function(s, opt_color) {
var color;
if (cache.hasOwnProperty(s)) {
color = cache[s];
} else {
if (cacheSize >= MAX_CACHE_SIZE) {
var i = 0;
var key;
for (key in cache) {
if (i++ & 3 === 0) {
delete cache[key];
}
}
}
color = ol.color.fromStringInternal_(s);
cache[s] = color;
++cacheSize;
}
return ol.color.returnOrUpdate(color, opt_color);
});
var MAX_CACHE_SIZE = 1024;
})();
/**
* @type {Object.<string, ol.Color>}
*/
var cache = {};
/**
* @type {number}
*/
var cacheSize = 0;
return (
/**
* @param {string} s String.
* @param {ol.Color=} opt_color Color.
* @return {ol.Color} Color.
*/
function(s, opt_color) {
var color;
if (cache.hasOwnProperty(s)) {
color = cache[s];
} else {
if (cacheSize >= MAX_CACHE_SIZE) {
var i = 0;
var key;
for (key in cache) {
if (i++ & 3 === 0) {
delete cache[key];
}
}
}
color = ol.color.fromStringInternal_(s);
cache[s] = color;
++cacheSize;
}
return ol.color.returnOrUpdate(color, opt_color);
});
})();
/**
@@ -314,7 +318,7 @@ ol.color.toString = function(color) {
/**
* @param {ol.Color} color Color.
* @param {goog.vec.Mat4.AnyType} transform Transform.
* @param {goog.vec.Mat4.Number} transform Transform.
* @param {ol.Color=} opt_color Color.
* @return {ol.Color} Transformed color.
*/

View File

@@ -488,6 +488,7 @@ ol.geom.flat.linearRingsContainsXY =
ol.geom.flat.linearRingsGetInteriorPoint =
function(flatCoordinates, offset, ends, stride, y, opt_point) {
var i, ii, x, x1, x2, y1, y2;
/** @type {Array.<number>} */
var intersections = [];
// Calculate intersections with the horizontal line
var end = ends[0];
@@ -735,7 +736,7 @@ ol.geom.flat.squaredDistance = function(x1, y1, x2, y2) {
/**
* @param {Array.<number>} flatCoordinates Flat coordinates.
* @param {number} stride Stride.
* @param {goog.vec.Mat4.AnyType} transform Transform.
* @param {goog.vec.Mat4.Number} transform Transform.
* @param {Array.<number>=} opt_dest Destination.
* @return {Array.<number>} Transformed coordinates.
*/

View File

@@ -230,7 +230,7 @@ ol.geom.SimpleGeometry.prototype.transform = function(transformFn) {
/**
* @param {ol.geom.SimpleGeometry} simpleGeometry Simple geometry.
* @param {goog.vec.Mat4.AnyType} transform Transform.
* @param {goog.vec.Mat4.Number} transform Transform.
* @param {Array.<number>=} opt_dest Destination.
* @return {Array.<number>} Transformed flat coordinates.
*/

View File

@@ -86,6 +86,7 @@ ol.geom.simplify.douglasPeucker = function(flatCoordinates, offset, end,
var markers = new MarkerArray(n);
markers[0] = 1;
markers[n - 1] = 1;
/** @type {Array.<number>} */
var stack = [offset, end - stride];
var index = 0;
var i;

View File

@@ -2,7 +2,6 @@ goog.provide('ol.layer.Vector');
goog.require('ol.feature');
goog.require('ol.layer.Layer');
goog.require('ol.source.Vector');
/**
@@ -63,14 +62,6 @@ goog.exportProperty(
ol.layer.Vector.prototype.getStyleFunction);
/**
* @return {ol.source.Source} Vector source.
*/
ol.layer.Vector.prototype.getVectorSource = function() {
return /** @type {ol.source.Vector} */ (this.getSource());
};
/**
* @param {function(ol.geom.Geometry): boolean|undefined} renderGeometryFunction
* Render geometry function.

View File

@@ -21,7 +21,7 @@ goog.require('ol.vec.Mat4');
* @param {CanvasRenderingContext2D} context Context.
* @param {number} pixelRatio Pixel ratio.
* @param {ol.Extent} extent Extent.
* @param {goog.vec.Mat4.AnyType} transform Transform.
* @param {goog.vec.Mat4.Number} transform Transform.
* @struct
*/
ol.render.canvas.Immediate = function(context, pixelRatio, extent, transform) {
@@ -46,7 +46,7 @@ ol.render.canvas.Immediate = function(context, pixelRatio, extent, transform) {
/**
* @private
* @type {goog.vec.Mat4.AnyType}
* @type {goog.vec.Mat4.Number}
*/
this.transform_ = transform;

View File

@@ -160,7 +160,7 @@ ol.render.canvas.Replay.prototype.beginGeometry = function(geometry) {
/**
* @private
* @param {CanvasRenderingContext2D} context Context.
* @param {goog.vec.Mat4.AnyType} transform Transform.
* @param {goog.vec.Mat4.Number} transform Transform.
* @param {function(ol.geom.Geometry): boolean} renderGeometryFunction Render
* geometry function.
* @param {Array.<*>} instructions Instructions array.
@@ -305,7 +305,7 @@ ol.render.canvas.Replay.prototype.replay_ =
/**
* @param {CanvasRenderingContext2D} context Context.
* @param {goog.vec.Mat4.AnyType} transform Transform.
* @param {goog.vec.Mat4.Number} transform Transform.
* @param {function(ol.geom.Geometry): boolean} renderGeometryFunction Render
* geometry function.
* @return {T|undefined} Callback result.
@@ -321,7 +321,7 @@ ol.render.canvas.Replay.prototype.replay =
/**
* @param {CanvasRenderingContext2D} context Context.
* @param {goog.vec.Mat4.AnyType} transform Transform.
* @param {goog.vec.Mat4.Number} transform Transform.
* @param {function(ol.geom.Geometry): boolean} renderGeometryFunction Render
* geometry function.
* @param {function(ol.geom.Geometry, Object): T=} opt_geometryCallback
@@ -1231,7 +1231,7 @@ ol.render.canvas.ReplayGroup = function(pixelRatio, tolerance) {
/**
* @param {CanvasRenderingContext2D} context Context.
* @param {ol.Extent} extent Extent.
* @param {goog.vec.Mat4.AnyType} transform Transform.
* @param {goog.vec.Mat4.Number} transform Transform.
* @param {function(ol.geom.Geometry): boolean} renderGeometryFunction Render
* geometry function.
* @return {T|undefined} Callback result.
@@ -1252,7 +1252,7 @@ ol.render.canvas.ReplayGroup.prototype.replay = function(context, extent,
* @param {Array.<number>} zs Z-indices array.
* @param {CanvasRenderingContext2D} context Context.
* @param {ol.Extent} extent Extent.
* @param {goog.vec.Mat4.AnyType} transform Transform.
* @param {goog.vec.Mat4.Number} transform Transform.
* @param {function(ol.geom.Geometry): boolean} renderGeometryFunction Render
* geometry function.
* @param {function(ol.geom.Geometry, Object): T} geometryCallback Geometry
@@ -1286,7 +1286,7 @@ ol.render.canvas.ReplayGroup.prototype.replayHitDetection_ =
* @param {Array.<number>} zs Z-indices array.
* @param {CanvasRenderingContext2D} context Context.
* @param {ol.Extent} extent Extent.
* @param {goog.vec.Mat4.AnyType} transform Transform.
* @param {goog.vec.Mat4.Number} transform Transform.
* @param {function(ol.geom.Geometry): boolean} renderGeometryFunction Render
* geometry function.
* @return {T|undefined} Callback result.

View File

@@ -76,7 +76,7 @@ ol.renderer.canvas.Layer.prototype.composeFrame =
* @param {ol.render.EventType} type Event type.
* @param {CanvasRenderingContext2D} context Context.
* @param {ol.FrameState} frameState Frame state.
* @param {goog.vec.Mat4.AnyType=} opt_transform Transform.
* @param {goog.vec.Mat4.Number=} opt_transform Transform.
* @private
*/
ol.renderer.canvas.Layer.prototype.dispatchComposeEvent_ =
@@ -97,7 +97,7 @@ ol.renderer.canvas.Layer.prototype.dispatchComposeEvent_ =
/**
* @param {CanvasRenderingContext2D} context Context.
* @param {ol.FrameState} frameState Frame state.
* @param {goog.vec.Mat4.AnyType=} opt_transform Transform.
* @param {goog.vec.Mat4.Number=} opt_transform Transform.
* @protected
*/
ol.renderer.canvas.Layer.prototype.dispatchPostComposeEvent =
@@ -110,7 +110,7 @@ ol.renderer.canvas.Layer.prototype.dispatchPostComposeEvent =
/**
* @param {CanvasRenderingContext2D} context Context.
* @param {ol.FrameState} frameState Frame state.
* @param {goog.vec.Mat4.AnyType=} opt_transform Transform.
* @param {goog.vec.Mat4.Number=} opt_transform Transform.
* @protected
*/
ol.renderer.canvas.Layer.prototype.dispatchPreComposeEvent =

View File

@@ -11,6 +11,7 @@ goog.require('ol.layer.Vector');
goog.require('ol.render.canvas.ReplayGroup');
goog.require('ol.renderer.canvas.Layer');
goog.require('ol.renderer.vector');
goog.require('ol.source.Vector');
goog.require('ol.style.ImageState');
@@ -133,7 +134,8 @@ ol.renderer.canvas.VectorLayer.prototype.forEachFeatureAtPixel =
*/
ol.renderer.canvas.VectorLayer.prototype.getRenderGeometryFunction_ =
function() {
var vectorLayer = this.getVectorLayer();
var vectorLayer = this.getLayer();
goog.asserts.assertInstanceof(vectorLayer, ol.layer.Vector);
var renderGeometryFunction = vectorLayer.getRenderGeometryFunction();
if (!goog.isDef(renderGeometryFunction)) {
renderGeometryFunction = goog.functions.TRUE;
@@ -142,14 +144,6 @@ ol.renderer.canvas.VectorLayer.prototype.getRenderGeometryFunction_ =
};
/**
* @return {ol.layer.Vector} Vector layer.
*/
ol.renderer.canvas.VectorLayer.prototype.getVectorLayer = function() {
return /** @type {ol.layer.Vector} */ (this.getLayer());
};
/**
* Handle changes in image style state.
* @param {goog.events.Event} event Image style change event.
@@ -175,8 +169,10 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
return;
}
var vectorLayer = this.getVectorLayer();
var vectorSource = vectorLayer.getVectorSource();
var vectorLayer = this.getLayer();
goog.asserts.assertInstanceof(vectorLayer, ol.layer.Vector);
var vectorSource = vectorLayer.getSource();
goog.asserts.assertInstanceof(vectorSource, ol.source.Vector);
var frameStateExtent = frameState.extent;
var frameStateResolution = frameState.view2DState.resolution;
var pixelRatio = frameState.devicePixelRatio;

View File

@@ -35,8 +35,8 @@ ol.vec.Mat4.makeTransform2D = function(mat, translateX1, translateY1,
/**
* Returns true if mat1 and mat2 represent the same 2D transformation.
* @param {goog.vec.Mat4.AnyType} mat1 Matrix 1.
* @param {goog.vec.Mat4.AnyType} mat2 Matrix 2.
* @param {goog.vec.Mat4.Number} mat1 Matrix 1.
* @param {goog.vec.Mat4.Number} mat2 Matrix 2.
* @return {boolean} Equal 2D.
*/
ol.vec.Mat4.equals2D = function(mat1, mat2) {