From 9d1f737bcedd02608d439b7b85c68d33d047555f Mon Sep 17 00:00:00 2001 From: ahocevar Date: Sun, 3 Mar 2013 14:25:11 +0100 Subject: [PATCH] ol.Filter is now a (base) class, not an interface any more ol.Filter can now also be used to provide a simple filter that just evaluates a user provided filter function against a feature. --- src/ol/filter/extentfilter.js | 4 +++- src/ol/filter/filter.js | 15 +++++++++++---- src/ol/filter/geometryfilter.js | 4 +++- src/ol/filter/logicalfilter.js | 4 +++- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/ol/filter/extentfilter.js b/src/ol/filter/extentfilter.js index d919b03954..b8738bfa73 100644 --- a/src/ol/filter/extentfilter.js +++ b/src/ol/filter/extentfilter.js @@ -7,10 +7,11 @@ goog.require('ol.filter.Filter'); /** * @constructor - * @implements {ol.filter.Filter} + * @extends {ol.filter.Filter} * @param {ol.Extent} extent The extent. */ ol.filter.Extent = function(extent) { + goog.base(this); /** * @type {ol.Extent} @@ -19,6 +20,7 @@ ol.filter.Extent = function(extent) { this.extent_ = extent; }; +goog.inherits(ol.filter.Extent, ol.filter.Filter); /** diff --git a/src/ol/filter/filter.js b/src/ol/filter/filter.js index d41a6bed23..701a942ae7 100644 --- a/src/ol/filter/filter.js +++ b/src/ol/filter/filter.js @@ -5,13 +5,20 @@ goog.require('ol.Feature'); /** - * @interface + * @constructor + * @param {function(this:ol.filter.Filter, ol.Feature)=} opt_filterFunction + * Filter function. Should return true if the passed feature passes the + * filter, false otherwise. */ -ol.filter.Filter = function() {}; +ol.filter.Filter = function(opt_filterFunction) { + if (goog.isDef(opt_filterFunction)) { + this.applies = opt_filterFunction; + } +}; /** - * @param {ol.Feature} feature Feature to evaluate. + * @param {ol.Feature} feature Feature to evaluate the filter against. * @return {boolean} The provided feature passes this filter. */ -ol.filter.Filter.prototype.applies = function(feature) {}; +ol.filter.Filter.prototype.applies = goog.abstractMethod; diff --git a/src/ol/filter/geometryfilter.js b/src/ol/filter/geometryfilter.js index 11deacedd6..f48a67b14b 100644 --- a/src/ol/filter/geometryfilter.js +++ b/src/ol/filter/geometryfilter.js @@ -8,10 +8,11 @@ goog.require('ol.geom.GeometryType'); /** * @constructor - * @implements {ol.filter.Filter} + * @extends {ol.filter.Filter} * @param {ol.geom.GeometryType} type The geometry type. */ ol.filter.Geometry = function(type) { + goog.base(this); /** * @type {ol.geom.GeometryType} @@ -20,6 +21,7 @@ ol.filter.Geometry = function(type) { this.type_ = type; }; +goog.inherits(ol.filter.Geometry, ol.filter.Filter); /** diff --git a/src/ol/filter/logicalfilter.js b/src/ol/filter/logicalfilter.js index ccc8a1bda7..89f438fc33 100644 --- a/src/ol/filter/logicalfilter.js +++ b/src/ol/filter/logicalfilter.js @@ -7,11 +7,12 @@ goog.require('ol.filter.Filter'); /** * @constructor - * @implements {ol.filter.Filter} + * @extends {ol.filter.Filter} * @param {Array.} filters Filters to and-combine. * @param {!ol.filter.LogicalOperator} operator Operator. */ ol.filter.Logical = function(filters, operator) { + goog.base(this); /** * @type {Array.} @@ -25,6 +26,7 @@ ol.filter.Logical = function(filters, operator) { this.operator = operator; }; +goog.inherits(ol.filter.Logical, ol.filter.Filter); /**