summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2017-05-29 14:43:35 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-06-05 19:38:08 -0700
commit32589c271c6f4885dadb6291c4bf637b72659a9f (patch)
tree52e71d7222aa96dc14d2774e6acd8676b10b1183
parent41d2496c07e54a8dad70aea4610c7200711983e5 (diff)
downloadqtlocation-mapboxgl-32589c271c6f4885dadb6291c4bf637b72659a9f.tar.gz
[core] Thread Style parameter through queryRenderedFeatures
-rw-r--r--src/mbgl/annotation/render_annotation_source.cpp7
-rw-r--r--src/mbgl/annotation/render_annotation_source.hpp1
-rw-r--r--src/mbgl/renderer/render_source.hpp5
-rw-r--r--src/mbgl/renderer/sources/render_geojson_source.cpp7
-rw-r--r--src/mbgl/renderer/sources/render_geojson_source.hpp1
-rw-r--r--src/mbgl/renderer/sources/render_image_source.cpp7
-rw-r--r--src/mbgl/renderer/sources/render_image_source.hpp1
-rw-r--r--src/mbgl/renderer/sources/render_raster_source.cpp1
-rw-r--r--src/mbgl/renderer/sources/render_raster_source.hpp1
-rw-r--r--src/mbgl/renderer/sources/render_vector_source.cpp3
-rw-r--r--src/mbgl/renderer/sources/render_vector_source.hpp1
-rw-r--r--src/mbgl/renderer/tile_pyramid.cpp2
-rw-r--r--src/mbgl/renderer/tile_pyramid.hpp5
-rw-r--r--src/mbgl/style/style.cpp4
-rw-r--r--src/mbgl/tile/geometry_tile.cpp3
-rw-r--r--src/mbgl/tile/geometry_tile.hpp3
-rw-r--r--src/mbgl/tile/tile.cpp1
-rw-r--r--src/mbgl/tile/tile.hpp5
-rw-r--r--test/tile/annotation_tile.test.cpp2
19 files changed, 47 insertions, 13 deletions
diff --git a/src/mbgl/annotation/render_annotation_source.cpp b/src/mbgl/annotation/render_annotation_source.cpp
index 718f7a16e6..dfb78fb8b1 100644
--- a/src/mbgl/annotation/render_annotation_source.cpp
+++ b/src/mbgl/annotation/render_annotation_source.cpp
@@ -59,9 +59,10 @@ void RenderAnnotationSource::reloadTiles() {
std::unordered_map<std::string, std::vector<Feature>>
RenderAnnotationSource::queryRenderedFeatures(const ScreenLineString& geometry,
- const TransformState& transformState,
- const RenderedQueryOptions& options) const {
- return tilePyramid.queryRenderedFeatures(geometry, transformState, options);
+ const TransformState& transformState,
+ const style::Style& style,
+ const RenderedQueryOptions& options) const {
+ return tilePyramid.queryRenderedFeatures(geometry, transformState, style, options);
}
std::vector<Feature> RenderAnnotationSource::querySourceFeatures(const SourceQueryOptions&) const {
diff --git a/src/mbgl/annotation/render_annotation_source.hpp b/src/mbgl/annotation/render_annotation_source.hpp
index 980d9d27e9..c93cfbd7d7 100644
--- a/src/mbgl/annotation/render_annotation_source.hpp
+++ b/src/mbgl/annotation/render_annotation_source.hpp
@@ -37,6 +37,7 @@ public:
std::unordered_map<std::string, std::vector<Feature>>
queryRenderedFeatures(const ScreenLineString& geometry,
const TransformState& transformState,
+ const style::Style& style,
const RenderedQueryOptions& options) const final;
std::vector<Feature>
diff --git a/src/mbgl/renderer/render_source.hpp b/src/mbgl/renderer/render_source.hpp
index dae0ea19b1..df44ea70fd 100644
--- a/src/mbgl/renderer/render_source.hpp
+++ b/src/mbgl/renderer/render_source.hpp
@@ -23,6 +23,10 @@ class Tile;
class RenderSourceObserver;
class TileParameters;
+namespace style {
+class Style;
+} // namespace style
+
namespace algorithm {
class ClipIDGenerator;
} // namespace algorithm
@@ -75,6 +79,7 @@ public:
virtual std::unordered_map<std::string, std::vector<Feature>>
queryRenderedFeatures(const ScreenLineString& geometry,
const TransformState& transformState,
+ const style::Style& style,
const RenderedQueryOptions& options) const = 0;
virtual std::vector<Feature>
diff --git a/src/mbgl/renderer/sources/render_geojson_source.cpp b/src/mbgl/renderer/sources/render_geojson_source.cpp
index 893f6a2ac6..ca0c6c5244 100644
--- a/src/mbgl/renderer/sources/render_geojson_source.cpp
+++ b/src/mbgl/renderer/sources/render_geojson_source.cpp
@@ -74,9 +74,10 @@ void RenderGeoJSONSource::reloadTiles() {
std::unordered_map<std::string, std::vector<Feature>>
RenderGeoJSONSource::queryRenderedFeatures(const ScreenLineString& geometry,
- const TransformState& transformState,
- const RenderedQueryOptions& options) const {
- return tilePyramid.queryRenderedFeatures(geometry, transformState, options);
+ const TransformState& transformState,
+ const style::Style& style,
+ const RenderedQueryOptions& options) const {
+ return tilePyramid.queryRenderedFeatures(geometry, transformState, style, options);
}
std::vector<Feature> RenderGeoJSONSource::querySourceFeatures(const SourceQueryOptions& options) const {
diff --git a/src/mbgl/renderer/sources/render_geojson_source.hpp b/src/mbgl/renderer/sources/render_geojson_source.hpp
index 51caf43714..6571750347 100644
--- a/src/mbgl/renderer/sources/render_geojson_source.hpp
+++ b/src/mbgl/renderer/sources/render_geojson_source.hpp
@@ -41,6 +41,7 @@ public:
std::unordered_map<std::string, std::vector<Feature>>
queryRenderedFeatures(const ScreenLineString& geometry,
const TransformState& transformState,
+ const style::Style& style,
const RenderedQueryOptions& options) const final;
std::vector<Feature>
diff --git a/src/mbgl/renderer/sources/render_image_source.cpp b/src/mbgl/renderer/sources/render_image_source.cpp
index e5a7b1a6ed..a55e97fd9c 100644
--- a/src/mbgl/renderer/sources/render_image_source.cpp
+++ b/src/mbgl/renderer/sources/render_image_source.cpp
@@ -54,8 +54,11 @@ void RenderImageSource::finishRender(Painter& painter) {
}
}
-std::unordered_map<std::string, std::vector<Feature>> RenderImageSource::queryRenderedFeatures(
- const ScreenLineString&, const TransformState&, const RenderedQueryOptions&) const {
+std::unordered_map<std::string, std::vector<Feature>>
+RenderImageSource::queryRenderedFeatures(const ScreenLineString&,
+ const TransformState&,
+ const style::Style&,
+ const RenderedQueryOptions&) const {
return {};
}
diff --git a/src/mbgl/renderer/sources/render_image_source.hpp b/src/mbgl/renderer/sources/render_image_source.hpp
index 54afca4bee..f8581f079a 100644
--- a/src/mbgl/renderer/sources/render_image_source.hpp
+++ b/src/mbgl/renderer/sources/render_image_source.hpp
@@ -45,6 +45,7 @@ public:
std::unordered_map<std::string, std::vector<Feature>>
queryRenderedFeatures(const ScreenLineString& geometry,
const TransformState& transformState,
+ const style::Style& style,
const RenderedQueryOptions& options) const final;
std::vector<Feature> querySourceFeatures(const SourceQueryOptions&) const final;
diff --git a/src/mbgl/renderer/sources/render_raster_source.cpp b/src/mbgl/renderer/sources/render_raster_source.cpp
index e2d641c4e4..182fe47549 100644
--- a/src/mbgl/renderer/sources/render_raster_source.cpp
+++ b/src/mbgl/renderer/sources/render_raster_source.cpp
@@ -67,6 +67,7 @@ void RenderRasterSource::reloadTiles() {
std::unordered_map<std::string, std::vector<Feature>>
RenderRasterSource::queryRenderedFeatures(const ScreenLineString&,
const TransformState&,
+ const style::Style&,
const RenderedQueryOptions&) const {
return {};
}
diff --git a/src/mbgl/renderer/sources/render_raster_source.hpp b/src/mbgl/renderer/sources/render_raster_source.hpp
index d0714aee06..d68c6d5dd3 100644
--- a/src/mbgl/renderer/sources/render_raster_source.hpp
+++ b/src/mbgl/renderer/sources/render_raster_source.hpp
@@ -37,6 +37,7 @@ public:
std::unordered_map<std::string, std::vector<Feature>>
queryRenderedFeatures(const ScreenLineString& geometry,
const TransformState& transformState,
+ const style::Style& style,
const RenderedQueryOptions& options) const final;
std::vector<Feature>
diff --git a/src/mbgl/renderer/sources/render_vector_source.cpp b/src/mbgl/renderer/sources/render_vector_source.cpp
index f88ca2beea..732969db64 100644
--- a/src/mbgl/renderer/sources/render_vector_source.cpp
+++ b/src/mbgl/renderer/sources/render_vector_source.cpp
@@ -71,8 +71,9 @@ void RenderVectorSource::reloadTiles() {
std::unordered_map<std::string, std::vector<Feature>>
RenderVectorSource::queryRenderedFeatures(const ScreenLineString& geometry,
const TransformState& transformState,
+ const style::Style& style,
const RenderedQueryOptions& options) const {
- return tilePyramid.queryRenderedFeatures(geometry, transformState, options);
+ return tilePyramid.queryRenderedFeatures(geometry, transformState, style, options);
}
std::vector<Feature> RenderVectorSource::querySourceFeatures(const SourceQueryOptions& options) const {
diff --git a/src/mbgl/renderer/sources/render_vector_source.hpp b/src/mbgl/renderer/sources/render_vector_source.hpp
index f3de27d78a..d67df4ca2c 100644
--- a/src/mbgl/renderer/sources/render_vector_source.hpp
+++ b/src/mbgl/renderer/sources/render_vector_source.hpp
@@ -37,6 +37,7 @@ public:
std::unordered_map<std::string, std::vector<Feature>>
queryRenderedFeatures(const ScreenLineString& geometry,
const TransformState& transformState,
+ const style::Style& style,
const RenderedQueryOptions& options) const final;
std::vector<Feature>
diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp
index 144afcb4f6..d55f7938dd 100644
--- a/src/mbgl/renderer/tile_pyramid.cpp
+++ b/src/mbgl/renderer/tile_pyramid.cpp
@@ -180,6 +180,7 @@ void TilePyramid::reloadTiles() {
std::unordered_map<std::string, std::vector<Feature>> TilePyramid::queryRenderedFeatures(const ScreenLineString& geometry,
const TransformState& transformState,
+ const style::Style& style,
const RenderedQueryOptions& options) const {
std::unordered_map<std::string, std::vector<Feature>> result;
if (renderTiles.empty() || geometry.empty()) {
@@ -226,6 +227,7 @@ std::unordered_map<std::string, std::vector<Feature>> TilePyramid::queryRendered
renderTile.tile.queryRenderedFeatures(result,
tileSpaceQueryGeometry,
transformState,
+ style,
options);
}
diff --git a/src/mbgl/renderer/tile_pyramid.hpp b/src/mbgl/renderer/tile_pyramid.hpp
index b51c5342de..a2657c92f2 100644
--- a/src/mbgl/renderer/tile_pyramid.hpp
+++ b/src/mbgl/renderer/tile_pyramid.hpp
@@ -24,6 +24,10 @@ class RenderedQueryOptions;
class SourceQueryOptions;
class TileParameters;
+namespace style {
+class Style;
+} // namespace style
+
class TilePyramid {
public:
TilePyramid();
@@ -59,6 +63,7 @@ public:
std::unordered_map<std::string, std::vector<Feature>>
queryRenderedFeatures(const ScreenLineString& geometry,
const TransformState& transformState,
+ const style::Style& style,
const RenderedQueryOptions& options) const;
std::vector<Feature> querySourceFeatures(const SourceQueryOptions&) const;
diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp
index bc5d77b4bd..74ce401292 100644
--- a/src/mbgl/style/style.cpp
+++ b/src/mbgl/style/style.cpp
@@ -697,13 +697,13 @@ std::vector<Feature> Style::queryRenderedFeatures(const ScreenLineString& geomet
}
for (const auto& sourceID : sourceIDs) {
if (RenderSource* renderSource = getRenderSource(sourceID)) {
- auto sourceResults = renderSource->queryRenderedFeatures(geometry, transformState, options);
+ auto sourceResults = renderSource->queryRenderedFeatures(geometry, transformState, *this, options);
std::move(sourceResults.begin(), sourceResults.end(), std::inserter(resultsByLayer, resultsByLayer.begin()));
}
}
} else {
for (const auto& entry : renderSources) {
- auto sourceResults = entry.second->queryRenderedFeatures(geometry, transformState, options);
+ auto sourceResults = entry.second->queryRenderedFeatures(geometry, transformState, *this, options);
std::move(sourceResults.begin(), sourceResults.end(), std::inserter(resultsByLayer, resultsByLayer.begin()));
}
}
diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp
index d25d93d6b8..df58294e90 100644
--- a/src/mbgl/tile/geometry_tile.cpp
+++ b/src/mbgl/tile/geometry_tile.cpp
@@ -181,6 +181,7 @@ void GeometryTile::queryRenderedFeatures(
std::unordered_map<std::string, std::vector<Feature>>& result,
const GeometryCoordinates& queryGeometry,
const TransformState& transformState,
+ const style::Style& style_,
const RenderedQueryOptions& options) {
if (!featureIndex || !data) return;
@@ -193,7 +194,7 @@ void GeometryTile::queryRenderedFeatures(
options,
*data,
id.canonical,
- style,
+ style_,
collisionTile.get(),
*this);
}
diff --git a/src/mbgl/tile/geometry_tile.hpp b/src/mbgl/tile/geometry_tile.hpp
index 6e4c29d723..807c8474de 100644
--- a/src/mbgl/tile/geometry_tile.hpp
+++ b/src/mbgl/tile/geometry_tile.hpp
@@ -55,6 +55,7 @@ public:
std::unordered_map<std::string, std::vector<Feature>>& result,
const GeometryCoordinates& queryGeometry,
const TransformState&,
+ const style::Style&,
const RenderedQueryOptions& options) override;
void querySourceFeatures(
@@ -92,6 +93,8 @@ private:
void invokePlacement();
const std::string sourceID;
+
+ // TODO: remove
style::Style& style;
// Used to signal the worker that it should abandon parsing this tile as soon as possible.
diff --git a/src/mbgl/tile/tile.cpp b/src/mbgl/tile/tile.cpp
index d731b8d111..ec8fe66eec 100644
--- a/src/mbgl/tile/tile.cpp
+++ b/src/mbgl/tile/tile.cpp
@@ -33,6 +33,7 @@ void Tile::queryRenderedFeatures(
std::unordered_map<std::string, std::vector<Feature>>&,
const GeometryCoordinates&,
const TransformState&,
+ const style::Style&,
const RenderedQueryOptions&) {}
void Tile::querySourceFeatures(
diff --git a/src/mbgl/tile/tile.hpp b/src/mbgl/tile/tile.hpp
index 544717e2b8..dfd35cde9a 100644
--- a/src/mbgl/tile/tile.hpp
+++ b/src/mbgl/tile/tile.hpp
@@ -25,6 +25,10 @@ class PlacementConfig;
class RenderedQueryOptions;
class SourceQueryOptions;
+namespace style {
+class Style;
+} // namespace style
+
class Tile : private util::noncopyable {
public:
Tile(OverscaledTileID);
@@ -53,6 +57,7 @@ public:
std::unordered_map<std::string, std::vector<Feature>>& result,
const GeometryCoordinates& queryGeometry,
const TransformState&,
+ const style::Style&,
const RenderedQueryOptions& options);
virtual void querySourceFeatures(
diff --git a/test/tile/annotation_tile.test.cpp b/test/tile/annotation_tile.test.cpp
index 05ce109766..205a315db7 100644
--- a/test/tile/annotation_tile.test.cpp
+++ b/test/tile/annotation_tile.test.cpp
@@ -81,7 +81,7 @@ TEST(AnnotationTile, Issue8289) {
TransformState transformState;
RenderedQueryOptions options;
- tile.queryRenderedFeatures(result, queryGeometry, transformState, options);
+ tile.queryRenderedFeatures(result, queryGeometry, transformState, test.style, options);
EXPECT_TRUE(result.empty());
}