From 32589c271c6f4885dadb6291c4bf637b72659a9f Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 29 May 2017 14:43:35 -0700 Subject: [core] Thread Style parameter through queryRenderedFeatures --- src/mbgl/annotation/render_annotation_source.cpp | 7 ++++--- src/mbgl/annotation/render_annotation_source.hpp | 1 + src/mbgl/renderer/render_source.hpp | 5 +++++ src/mbgl/renderer/sources/render_geojson_source.cpp | 7 ++++--- src/mbgl/renderer/sources/render_geojson_source.hpp | 1 + src/mbgl/renderer/sources/render_image_source.cpp | 7 +++++-- src/mbgl/renderer/sources/render_image_source.hpp | 1 + src/mbgl/renderer/sources/render_raster_source.cpp | 1 + src/mbgl/renderer/sources/render_raster_source.hpp | 1 + src/mbgl/renderer/sources/render_vector_source.cpp | 3 ++- src/mbgl/renderer/sources/render_vector_source.hpp | 1 + src/mbgl/renderer/tile_pyramid.cpp | 2 ++ src/mbgl/renderer/tile_pyramid.hpp | 5 +++++ src/mbgl/style/style.cpp | 4 ++-- src/mbgl/tile/geometry_tile.cpp | 3 ++- src/mbgl/tile/geometry_tile.hpp | 3 +++ src/mbgl/tile/tile.cpp | 1 + src/mbgl/tile/tile.hpp | 5 +++++ 18 files changed, 46 insertions(+), 12 deletions(-) (limited to 'src') 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> 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 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> queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, + const style::Style& style, const RenderedQueryOptions& options) const final; std::vector 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> queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, + const style::Style& style, const RenderedQueryOptions& options) const = 0; virtual std::vector 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> 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 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> queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, + const style::Style& style, const RenderedQueryOptions& options) const final; std::vector 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> RenderImageSource::queryRenderedFeatures( - const ScreenLineString&, const TransformState&, const RenderedQueryOptions&) const { +std::unordered_map> +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> queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, + const style::Style& style, const RenderedQueryOptions& options) const final; std::vector 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> 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> queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, + const style::Style& style, const RenderedQueryOptions& options) const final; std::vector 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> 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 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> queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, + const style::Style& style, const RenderedQueryOptions& options) const final; std::vector 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> TilePyramid::queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, + const style::Style& style, const RenderedQueryOptions& options) const { std::unordered_map> result; if (renderTiles.empty() || geometry.empty()) { @@ -226,6 +227,7 @@ std::unordered_map> 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> queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, + const style::Style& style, const RenderedQueryOptions& options) const; std::vector 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 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>& 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>& 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>&, 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>& result, const GeometryCoordinates& queryGeometry, const TransformState&, + const style::Style&, const RenderedQueryOptions& options); virtual void querySourceFeatures( -- cgit v1.2.1