diff options
Diffstat (limited to 'src/mbgl/geometry/feature_index.cpp')
-rw-r--r-- | src/mbgl/geometry/feature_index.cpp | 63 |
1 files changed, 27 insertions, 36 deletions
diff --git a/src/mbgl/geometry/feature_index.cpp b/src/mbgl/geometry/feature_index.cpp index 571ff172f8..20026dd117 100644 --- a/src/mbgl/geometry/feature_index.cpp +++ b/src/mbgl/geometry/feature_index.cpp @@ -1,14 +1,14 @@ #include <mbgl/geometry/feature_index.hpp> -#include <mbgl/renderer/render_layer.hpp> -#include <mbgl/renderer/query.hpp> +#include <mbgl/math/minmax.hpp> #include <mbgl/renderer/layers/render_symbol_layer.hpp> +#include <mbgl/renderer/query.hpp> +#include <mbgl/renderer/render_layer.hpp> +#include <mbgl/renderer/source_state.hpp> +#include <mbgl/style/filter.hpp> #include <mbgl/text/collision_index.hpp> +#include <mbgl/tile/tile_id.hpp> #include <mbgl/util/constants.hpp> #include <mbgl/util/math.hpp> -#include <mbgl/math/minmax.hpp> -#include <mbgl/style/filter.hpp> -#include <mbgl/tile/tile_id.hpp> -#include <mbgl/renderer/source_state.hpp> #include <mapbox/geometry/envelope.hpp> @@ -39,19 +39,12 @@ void FeatureIndex::insert(const GeometryCollection& geometries, } } -void FeatureIndex::query( - std::unordered_map<std::string, std::vector<Feature>>& result, - const GeometryCoordinates& queryGeometry, - const TransformState& transformState, - const mat4& posMatrix, - const double tileSize, - const double scale, - const RenderedQueryOptions& queryOptions, - const UnwrappedTileID& tileID, - const std::unordered_map<std::string, const RenderLayer*>& layers, - const float additionalQueryPadding, - const SourceFeatureState& sourceFeatureState) const { - +void FeatureIndex::query(std::unordered_map<std::string, std::vector<Feature>>& result, + const GeometryCoordinates& queryGeometry, const TransformState& transformState, + const mat4& posMatrix, const double tileSize, const double scale, + const RenderedQueryOptions& queryOptions, const UnwrappedTileID& tileID, + const std::unordered_map<std::string, const RenderLayer*>& layers, + const float additionalQueryPadding, const SourceFeatureState& sourceFeatureState) const { if (!tileData) { return; } @@ -76,10 +69,11 @@ void FeatureIndex::query( if (indexedFeature.sortIndex == previousSortIndex) continue; previousSortIndex = indexedFeature.sortIndex; - addFeature(result, indexedFeature, queryOptions, tileID.canonical, layers, queryGeometry, transformState, pixelsToTileUnits, posMatrix, &sourceFeatureState); + addFeature(result, indexedFeature, queryOptions, tileID.canonical, layers, queryGeometry, transformState, + pixelsToTileUnits, posMatrix, &sourceFeatureState); } } - + std::unordered_map<std::string, std::vector<Feature>> FeatureIndex::lookupSymbolFeatures(const std::vector<IndexedSubfeature>& symbolFeatures, const RenderedQueryOptions& queryOptions, @@ -115,23 +109,19 @@ FeatureIndex::lookupSymbolFeatures(const std::vector<IndexedSubfeature>& symbolF for (const auto& symbolFeature : sortedFeatures) { mat4 unusedMatrix; - addFeature(result, symbolFeature, queryOptions, tileID.canonical, layers, GeometryCoordinates(), {}, 0, unusedMatrix, nullptr); + addFeature(result, symbolFeature, queryOptions, tileID.canonical, layers, GeometryCoordinates(), {}, 0, + unusedMatrix, nullptr); } return result; } -void FeatureIndex::addFeature( - std::unordered_map<std::string, std::vector<Feature>>& result, - const IndexedSubfeature& indexedFeature, - const RenderedQueryOptions& options, - const CanonicalTileID& tileID, - const std::unordered_map<std::string, const RenderLayer*>& layers, - const GeometryCoordinates& queryGeometry, - const TransformState& transformState, - const float pixelsToTileUnits, - const mat4& posMatrix, - const SourceFeatureState* sourceFeatureState) const { - +void FeatureIndex::addFeature(std::unordered_map<std::string, std::vector<Feature>>& result, + const IndexedSubfeature& indexedFeature, const RenderedQueryOptions& options, + const CanonicalTileID& tileID, + const std::unordered_map<std::string, const RenderLayer*>& layers, + const GeometryCoordinates& queryGeometry, const TransformState& transformState, + const float pixelsToTileUnits, const mat4& posMatrix, + const SourceFeatureState* sourceFeatureState) const { // Lazily calculated. std::unique_ptr<GeometryTileLayer> sourceLayer; std::unique_ptr<GeometryTileFeature> geometryTileFeature; @@ -152,7 +142,7 @@ void FeatureIndex::addFeature( assert(geometryTileFeature); } FeatureState state; - if (sourceFeatureState) { + if (sourceFeatureState != nullptr) { optional<std::string> idStr = featureIDtoString(geometryTileFeature->getID()); if (idStr) { sourceFeatureState->getState(state, sourceLayer->getName(), *idStr); @@ -161,7 +151,8 @@ void FeatureIndex::addFeature( bool needsCrossTileIndex = renderLayer->baseImpl->getTypeInfo()->crossTileIndex == style::LayerTypeInfo::CrossTileIndex::Required; if (!needsCrossTileIndex && - !renderLayer->queryIntersectsFeature(queryGeometry, *geometryTileFeature, tileID.z, transformState, pixelsToTileUnits, posMatrix, state)) { + !renderLayer->queryIntersectsFeature(queryGeometry, *geometryTileFeature, tileID.z, transformState, + pixelsToTileUnits, posMatrix, state)) { continue; } |