summaryrefslogtreecommitdiff
path: root/src/mbgl/style/bucket_parameters.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/style/bucket_parameters.cpp')
-rw-r--r--src/mbgl/style/bucket_parameters.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/mbgl/style/bucket_parameters.cpp b/src/mbgl/style/bucket_parameters.cpp
new file mode 100644
index 0000000000..f3367d57e1
--- /dev/null
+++ b/src/mbgl/style/bucket_parameters.cpp
@@ -0,0 +1,23 @@
+#include <mbgl/style/bucket_parameters.hpp>
+#include <mbgl/style/filter_evaluator.hpp>
+#include <mbgl/tile/geometry_tile.hpp>
+
+namespace mbgl {
+namespace style {
+
+void BucketParameters::eachFilteredFeature(const Filter& filter,
+ std::function<void (const GeometryTileFeature&, std::size_t index, const std::string& layerName)> function) {
+ auto name = layer.getName();
+ for (std::size_t i = 0; !cancelled() && i < layer.featureCount(); i++) {
+ auto feature = layer.getFeature(i);
+
+ FilterEvaluator evaluator(*feature);
+ if (!Filter::visit(filter, evaluator))
+ continue;
+
+ function(*feature, i, name);
+ }
+}
+
+} // namespace style
+} // namespace mbgl